text:
Hacking report says Russia isn't done interfering in U.S. politics
By Deb Riechmann Eileen SullivanEileen Sullivan and Julie Pace The Associated Press
Julie PaceThe Associated Press
Sat., Jan. 7, 2017timer4 min. read
WASHINGTON—The new, declassified report on Russian efforts to influence the presidential election has a troublesome prediction: Russia isn't done intruding in U.S. politics and policy-making.
Immediately after Election Day, Russia began a "spear-phishing" campaign to try to trick people into revealing their email passwords, targeting U.S. government employees and think tanks that specialize in national security, defence and foreign policy, the report released on Friday said.
"This campaign could provide material for future influence efforts as well as foreign intelligence collection on the incoming administration's goals and plans," the report said.
That could prove awkward for president-elect Donald Trump. He wants to warm relations with Russia and has repeatedly denounced the intelligence community's assessment that the Kremlin interfered in the election. The new report goes even further by explicitly tying Russian President Vladimir Putin to the meddling and saying Russia had a "clear preference" for Trump in his race against Hillary Clinton.
The report, which called Russia's meddling the "boldest effort yet" to influence a U.S. election, was the most detailed public account to date of Russian efforts to hack the email accounts of the Democratic National Committee and individual Democrats, among them Clinton's campaign chairman, John Podesta.
It said that Russian government provided emails to WikiLeaks even though the website's founder, Julian Assange, has repeatedly denied that it got the emails it released from the Russian government. The report noted that the emails could have been passed through middlemen.
"We assess with high confidence that the GRU (a top Russian intelligence agency) relayed material it acquired from the DNC and senior Democratic officials to WikiLeaks," the report said.
Russia also used state-funded propaganda and paid "trolls" to make nasty comments on social media services, the report said. Moreover, intelligence officials believe that Moscow will apply lessons learned from its activities in the election to put its thumbprint on future elections in the United States and allied nations.
The public report was minus classified details that intelligence officials shared with President Barack Obama on Thursday.
At 8 a.m. Friday, Director of National Intelligence James Clapper, CIA Director John Brennan, National Security Agency director Adm. Mike Rogers and FBI Director Jim Comey trekked to Capitol Hill to share the classified version with eight top congressional leaders. Soon after, some of those same intelligence officials travelled to New York to brief the president-elect at Trump Tower.
In a brief interview with The Associated Press, Trump said he "learned a lot" from his discussions with intelligence officials, but he declined to say whether he accepted their assertion that Russia had intruded in the election on his behalf.
"It was a really great meeting, I really like those people a lot," said Trump, who has been in a standoff with U.S. intelligence agencies since winning the election. "I learned a lot and I think they did also."
Just hours before he was briefed, Trump dismissed the assessment and told The New York Times the focus on Russia's involvement is a "political witch hunt" by his adversaries. "They got beaten very badly in the election," he said. "They are very embarrassed about it. To some extent, it's a witch hunt. They just focus on this."
After finally seeing the intelligence behind the claims of the outgoing Obama administration, Trump released a one-page statement that did not address whether Russia sought to meddle. Instead, he said, "there was absolutely no effect on the outcome of the election" and that there "was no tampering whatsoever with voting machines."
Intelligence officials have never made that claim. And the report stated that the Department of Homeland Security did not think that the systems that were targeted or compromised by Russian actors were "involved in vote tallying."
The report lacked details about how the U.S. learned what it said it knows, such as any intercepted conversations or electronic messages among Russian leaders, including Putin, or about specific hacker techniques or digital tools the U.S. may have traced back to Russia in its investigations. Exactly how the U.S. monitors its adversaries in cyberspace is a closely guarded secret, since revealing such details could help foreign governments further obscure their activities.
The unclassified version included footnotes acknowledging that it "does not include the full supporting information on key elements of the influence campaign." It said its conclusions were identical to the classified version, which was more detailed.
The unclassified report said the Russian effort was both political and personal.
"Russia's goals were to undermine public faith in the U.S. democratic process, denigrate Secretary Clinton and harm her electability and potential presidency," it said. "We further assess Putin and the Russian government developed a clear preference for President-elect Trump."
Putin most likely wanted to discredit Clinton because he blames her for inciting mass protests against his regime in late 2011 and early 2012, and because he resents her for disparaging comments she has made about him, the report said.
Before the intelligence agencies completed their assessment, Obama announced sanctions against Russia. Trump has not said whether he will undo them once he takes office, but lawmakers are calling for more punitive measures against Russia and have little to no appetite to roll back any current sanctions.
Trump said he would appoint a team within three months of taking office to develop a plan to "aggressively combat and stop cyberattacks." Also Friday, many lawmakers renewed their demand for the creation of a special bipartisan panel to investigate.
Hillary Clinton, Russia, Donald Trump


text:
New joint tribal-state court established
Anne Hillman, Alaska Public Media
A disproportionately high number of Alaska Natives are incarcerated in the state of Alaska. In 2014, nearly 32 percent of the prosecuted criminal offenders in Alaska were Alaska Natives; they only constitute less than 20 percent of the population. Recidivism rates are higher for that group as well. Now, the state is working on new ways to partner with tribes to help solve both problems.
For the first time in Alaska, there will be a joint tribal-state court. A Kenaitze tribal judge will sit side-by-side with a state judge and have equal say in decisions. It will be a wellness court that hears criminal cases involving substance abuse, and will start taking up to 20 participants in March. Currently, tribal courts only have jurisdiction over civil matters, like adoptions, divorces, domestic violence petitions, and child protection cases.
Kenaitze Chief Judge Kimberly Sweet, who will be one of the two judges who preside over the court, says it will be run like most tribal courts. Everyone will sit together around a large conference table to talk about the problems.
"Parties are allowed to seek legal counsel," she explains. "They can bring their legal counsel to court with them. Legal counsel are allowed to advise them, but we don't speak to their legal counsel, we hear directly from the parties themselves."
Sweet says the process helps get to and treat the root of the problem. Program developers are currently working on a handbook of procedures so the model can be repeated throughout the state.
"It's not just based on personalities of people who have big hearts that are driving this," she says. "(We're writing the manual) so that it actually becomes institutionalized, so it can be picked up and taken by anybody."
Sweet says having the tribes involved in substance-related criminal charges will also help them when working on child protection cases. The majority of those involve substance abuse and sometimes criminal charges which aren't known to the tribal courts. The joint court can help solve some of those disconnects.
"So being able to collaborate and cooperate and work in the best interest of these families will do nothing but create a healthier community."
Similar joint courts already exist in Minnesota and California.
A 2014 change in court rules also allows the state's court system to use collaborative methods for sentencing adults, like circle sentencing. The Kenaitze tribe and others are already using the method with juvenile offenders. Sweet explains that circle sentencing brings the offender, community members, family members, and sometimes the victim into the same room to discuss the issue and the solution.
"Nobody is an authority in the circle. The circle collaborates and works together as a little mini-community to come up with a plan to put that youth or the adult on the right path with as much input from the youth and the adult as possible."
For adult cases, the state judge would make the final sentencing decision.
The state is also working on a plan to improve the outcomes for Alaska Natives who end up incarcerated. The Department of Corrections is convening an Alaska Native Focus Group for reducing recidivism.
Alaska's recidivism rate is 63 percent for everyone leaving the prison system. For Alaska Natives, it's 74 percent. DOC Commissioner Ron Taylor discussed the formation of the group during AFN.
"We're concerned about the higher rates of recidivism among that group and looking for ways to improve those outcomes. How do we do a better job of providing programming and resources? Of linking them to services once they get released? And how do we do a better job of ensuring they go back to their communities if they chose to do so."
The group will be chaired by Lt. Gov. Bryon Mallott and meet for the first time next week in Anchorage. It's unclear why recidivism rates are higher for Alaska Natives, Taylor said. It could be linked to cultural and language barriers with the department's reentry and treatment programming.
After being told innumerable times that maybe she asked too many questions, Anne Hillman decided to pursue a career in journalism. She's reported from around Alaska since 2007 and briefly worked as a community radio journalism trainer in rural South Sudan.
ahillman (at) alaskapublic (dot) org | 907.550.8447 | About Anne
Previous articlePease testifies, says confession was coerced
Next articleAt AFN, protesters slam Murkowski's support for Arctic drilling

redpajama_set_name: RedPajamaCommonCrawl


Life has just been crazy busy!
I didn't have time . . . .
Hurry up! We've got to grab a burger for supper so we can get to your sister's cheerleading practice and then take you to your soccer game and get home in time for youto get your homework finished.
If I just had more hours in the day!
Your Dad won't be home until Friday. He's got a busy week out on the west coast.
Having just completed a 31-day sabbatical, the term crazy busy, when heard, shouts out to me like a frustrated football coach on the sidelines! Hence, I have a few observations.
We all have the same amount of time every day. So that does away with, "I wish I had more time." If we were given more time, we would still need more time.
What we do with our time, which is a gift from the Lord, is a personal, daily, throughout the day, decision.
God designed our bodies to have a sabbath, a time of rest (Genesis 1-2).
We are commanded to redeem the time (Ephesians 5:16), and this is every day of our existence.
The Lord invites the weary and worn-out to come to Him for rest (Matthew 11:28-30).
So, where do we begin in dealing with this critical issue of life? How do we move away from being crazy busy! At the start of everything, we need to take Genesis 1:1 to heart, In the beginning, God . . . . At every beginning, all day long, we must begin with God. Therefore, I would suggest that you understand that each day must begin with God, the Giver of life, breath, mental capabilities, time, strength . . . everything! You must begin your day sitting at the feet of Jesus, Who is life (John 14:6). And then, though out your day, as Brother Andrew said, "Practice the presence of God" by consciously thinking on Him and praying for wisdom at the many "beginnings" of your day. Listen closely. The Holy Spirit will bring Scripture to mind and speak in the still small voice. Sometimes, He doesn't need to say anything because you already know the answer. Just obey and rest in Him.
Now in the morning, having risen a long while before daylight, He went out and departed to a solitary place; and there He prayed (Mark 1:35).
That doesn't sound like crazy busy, does it?
Well, summer is over. What did you do for your vacation with family or just your spouse or with some friends? Disney? The beach? The mountains? Did you take any day trips? How about a recreational excursion? What planning went into your time away? What was the result of your vacation? Any take-aways?
Vacations can be a huge refreshment that can leave many wonderful memories, provide a break from your daily routine, and give some much needed rest. Interesting enough, sometimes when you return home, you need another week to just recoup from your vacation (Lol).
Question: When was the last time you took a spiritual vacation? No, I do not mean running away or taking a vacation from the Lord, but a planned set of days and location where you and/or family go to grow your relationship with Jesus Christ? Have you ever taken such a trip?
This sabbatical was so extremely helpful spiritually. My wife and I spent most of our mornings at home, on the front or back porch, reading, praying, studying, journaling, and listening. Some days I would travel to the lake, or a secluded mountain top, or a quiet stream and spend my time letting God teach me and whittle away at my heart.
Perhaps you could spend one day a quarter at a place like Fairhaven Ministries, Roan Mountain, TN, and give that whole day to just meeting with the Lord. Pack your lunch, take your books, and go hide away with the Lord. You, too, could find that lake, stream, mountain top or other secluded area.
So, when you plan for your vacations and get-aways for the months ahead, how about planning some time to get alone with the Lord? You will never regret it.
Luke 6:12 – In these days he went out to the mountain to pray, and all night he continued in prayer to God.


Despite Dem Leftists, There Still Is A BILL of RIGHTS in Our America!
Bill of Rights Day was December 15, the anniversary of that addition to our Constitution in 1791. Those ten amendments set forth our civil liberties. That is to say, it protects us from our own government, setting forth in the supreme law of the land what our government may not do to us.
‒ Congress can't pass any law about your religion; or keep you from practicing that religion. Congress can't restrict what you say or publish. If you want the government to change something, citizens can gather peacefully and express their thoughts as a group.
‒ You can own and carry weapons.
‒ Soldiers can't live in your house, unless Congress approves it during wartime.
‒ You, your house or your possessions can't be searched unless a judge cites a specific probable cause.
‒ You can't go on trial for a serious crime unless a jury says there's enough evidence. If you're found innocent, the government can't retry you. You don't have to say anything during your trial. You can't be punished unless a jury convicts you. Unless the government compensates you fairly, it can't take your possessions.
‒ If you're arrested, either you get a quick public trial or they can't unfairly detain you. A jury of your peers can help try you, and you get a careful explanation of what you're accused of [and] who's accusing you. And the government provides you a lawyer a lawyer.
‒ You have the right to a jury in a civil case, too.
‒ Excessive bail or fines, and cruel and unusual punishment, are prohibited.
‒ You have other rights, even if they're not spelled out in the Constitution.
‒ Any power not specifically given to Congress rests with the states or the people.
How do you think we're doing with these?
"You can't be punished unless a jury convicts you." No "excessive fines." What about the fines and other punishments exacted not by a jury but by a federal agency for violating a federal regulation? "You don't have to say anything during your trial." But don't prosecutors get around that by manipulative plea bargaining? Did General Flynn enjoy this protection? "Unless the government compensates you fairly, it can't take your possessions." How about the practice, which has become commonplace here in Oklahoma, of police confiscating vehicles and other property of people suspected (not convicted) of breaking drug laws?
Note that the second amendment–"You can own and carry weapons"–refers specifically to the right to "keep" arms (that is, to possess them) and to "bear" arms (that is, to carry them). Note that the full amendment, below, refers not to hunting but to a "militia," the citizen's military organizations that were alternatives in the early days of the republic to a standing army. But the weapons referred to are not being stored in an armory. Rather, citizens have the right to "keep" and "bear" them. And wouldn't the militia context specifically allow for military weapons, at least the portable ones that a citizen could "keep" and "bear"?
Devious Fascist, Communist Trillionaire Dem America Hater George Soros, Finally Makes the Headlines…..about a bomb!!!!
Communist fascist Hungarian George Soros, age 85 plus, has bought and built the communist fascist wing of our once Democratic, Democrat Party over the past two decades. Money was his bag….Communism was his fascist religion. America was to be his victim.
He owns today's Charles Schumer's and Nancy Pelosi's heartless and soulless hate Americana core of the once honorable Democratic Party with the Richard Blumenthal, Adam Schiff, Al Sharpton, Dianne Feinstein, the New York Times, Washington Post core, America's television news core, its educational empire from Kindergarten to the Fascist Arts Departments and universities from coast to coast.
Trillionaire George had a "bomb" piece found NEAR his trillion dollar estate in New York the other day…..My, how convenient! Trillionaire George wasn't doing so well with his Dem hate-Trump world he had bought to defeat this coming November national election. His crooked Hillary, Charlie Schumer, MoveOn.Org and billions couldn't buy the 2016 Presidential election he and other fascists had anticipated.
More recently his Dems rallied their feminist-feminazi crowd with Dem Senator Dianne Feinstein's last minute presentation of a mentally troubled female doctor to disrupt the President's choice of an honorable, distinguished, conservative American JudeoChristian judge selected for the Supreme Court .
Trouble, trouble, trouble for George's future fascist communist America!!
So, what could be next on the trillionaire George world's slate to destroy our American republic?……the nation's sympathy?!?!
What about a bomb thing delivered not far from crooked Hillary and Obama-lover Obama a week or two before national elections? With Dems owning Congress, that'll help get rid of that Donald, for sure!!
How could George's world fail to operate such a juicy, brilliant coup regaining its fascist control of Congress and the removal of its enemy number one, Our Donald Trump from the White House and kill democratic Uncle Sam once and for all!
The George Soros fascist New York Times, Washington Post, CNN, PBS, CBS, NBC, MSNBC, ABC, and their ilk, will finally have their "American day in their fascist court". They still have more than ten days to play bomb games at the New York Times, Los Angeles Times, and Washington Post for more voter sympathy!


text:
Kindle Price: $14.99
Sold by: Penguin Group (USA) LLC
Price set by seller.
Promotions apply when you purchase
These promotions will be applied to this item:
Some promotions may be combined; others are not eligible to be combined with other offers. For details, please see the Terms & Conditions associated with these promotions.
Add Audible narration to your purchase for just $7.49
By purchasing this title, you agree to Audible's Conditions Of Use.
Deliver to your Kindle or other device
You've subscribed to ! We will preorder your items within 24 hours of when they become available. When new books are released, we'll charge your default payment method for the lowest price available during the pre-order period.
Update your device or payment method, cancel individual pre-orders or your subscription at
Your Memberships & Subscriptions
There was an error. We were unable to process your subscription due to an error. Please refresh and try again.
Give as a gift or purchase for a team or group.
Buying and sending eBooks to others
Buy and send eBooks
Recipients can read on any device
Additional gift options are available when buying one eBook at a time. Learn more
These ebooks can only be redeemed by recipients in the US. Redemption links and eBooks cannot be resold.
This item has a maximum order quantity limit.
Send a free sample
Enter a promotion code or Gift Card
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required. Learn more
Using your mobile phone camera - scan the code below and download the Kindle app.
By pressing "Send link," you agree to Amazon's Conditions of Use.
You consent to receive an automated text message from or on behalf of Amazon about the Kindle App at your mobile number above. Consent is not a condition of any purchase. Message & data rates may apply.
Crypto: How the Code Rebels Beat the Government--Saving Privacy in the Digital Age Kindle Edition
Steven Levy (Author)
› Visit Amazon's Steven Levy Page
Find all the books, read about the author, and more.
See search results for this author
Steven Levy (Author) Format: Kindle Edition
Audio CD, MP3 Audio, Unabridged
45 Used from $1.99 5 New from $22.74
If you've ever made a secure purchase with your credit card over the Internet, then you have seen cryptography, or "crypto", in action. From Stephen Levy—the author who made "hackers" a household word—comes this account of a revolution that is already affecting every citizen in the twenty-first century. Crypto tells the inside story of how a group of "crypto rebels"—nerds and visionaries turned freedom fighters—teamed up with corporate interests to beat Big Brother and ensure our privacy on the Internet. Levy's history of one of the most controversial and important topics of the digital age reads like the best futuristic fiction.
Page Flip
Word Wise
Not Enabled
Enhanced typesetting
Hackers: Heroes of the Computer Revolution - 25th Anniversary Edition
In the Plex: How Google Thinks, Works, and Shapes Our Lives
Facebook: The Inside Story
1 offer from $2.99
The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography
Cryptography: The Key to Digital Security, How It Works, and Why It Matters
Keith Martin
Kings of Crypto: One Startup's Quest to Take Cryptocurrency Out of Silicon Valley and Onto Wall Street
Jeff John Roberts
Amazon.com Review
If the National Security Agency (NSA) had wanted to make sure that strong encryption would reach the masses, it couldn't have done much better than to tell the cranky geniuses of the world not to do it. Author Steven Levy, deservedly famous for his enlightening Hackers, tells the story of the cypherpunks, their foes, and their allies in Crypto: How the Code Rebels Beat the Government. From the determined research of Whitfield Diffie and Marty Hellman, in the face of the NSA's decades-old security lock, to the commercial world's turn-of-the-century embrace of encrypted e-commerce, Levy finds drama and intellectual challenge everywhere he looks. Although he writes, "Behind every great cryptographer, it seems, there is a driving pathology," his respect for the mathematicians and programmers who spearheaded public key encryption as the solution to Information Age privacy invasion shines throughout. Even the governmental bad guys are presented more as hapless control fetishists who lack the prescience to see the inevitability of strong encryption as more than a conspiracy of evil.
Each cryptological advance that was made outside the confines of the NSA's Fort Meade complex was met with increasing legislative and judicial resistance. Levy's storytelling acumen tugs the reader along through mathematical and legal hassles that would stop most narratives in their tracks--his words make even the depressingly silly Clipper chip fiasco vibrant. Hardcore privacy nerds will value Crypto as a review of 30 years of wrangling; those readers with less familiarity with the subject will find it a terrific and well-documented launching pad for further research. From notables like Phil Zimmerman to obscure but important figures like James Ellis, Crypto dishes the dirt on folks who know how to keep a secret. --Rob Lightner --This text refers to an alternate kindle_edition edition.
Steven Levy is the author of Hackers, which has been in print for more than fifteen years, as well as Insanely Great: The Life & Times of Macintosh, the Computer That Changed Everything. He is also Newsweek's chief technology writer and has been a contributing writer to Wired since its inception. He lives in New York City with his wife and son. --This text refers to an alternate kindle_edition edition.
From The Washington Post
Crypto is a detailed and disturbing report. --This text refers to an alternate kindle_edition edition.
The author of the 1994 sleeper Hackers reveals how a group of men developed methods for encrypting digital transmissions for use in the private sector. As the digital age was dawning in the late 1970s, a major stumbling block to delivering information and conducting transactions via high-speed networks was the lack of security from outside parties who might wish to intercept the data (even though the National Security Agency had acres of computers dedicated to protecting government secrets and even more designed to decode other countries' messages). Widely available systems only began to emerge after a range of free thinkers, including such crypto legends as Whit Diffie and Marty Hellman, began to devote their considerable mind power to the issue. After a slow start, Levy's story steadily builds momentum as the crypto pioneers do battle with the NSA, look for ways to commercialize their discoveries and fight for the federal government's approval of the strongest encryption methods. The chief technology writer for Newsweek, Levy locates the heart of the matter in the struggle to balance the need for the most effective encryption possible with the government's need to decode messages that might endanger national securityAa struggle in which privacy, so far, has prevailed. Agent, Dominick Abel . (Jan. 8) Forecast: Levy's reputation grows with each book, and publicity that links this title to his bestselling Hackers will ensure strong sales. The title is backed by a six-city author tour and national radio satellite tour. The major promo campaign online, where Levy is minor royalty, may be most effective, but the book's biggest boost will come from the planned excerpt in Newsweek.
Copyright 2000 Reed Business Information, Inc. --This text refers to an alternate kindle_edition edition.
From Library Journal
What happens to privacy when computer geeks and big business battle the government for free access to information? From the author of Hackers.
From Scientific American
The government's argument, doggedly pressed mainly by such security-obsessed arms as the Department of Defense, the Justice Department and the National Security Agency: cryptography should be under firm government control, with strong codes to protect national security and weak ones for the public so that the government can break them to catch criminals and terrorists. The counterargument, pressed with equal determination by a mixed group that Levy rather unflatteringly calls the Cypherpunks: secure codes are vital to business transactions in the digital age and to people wanting privacy in electronic communications. Levy, chief technology writer for Newsweek, goes deeply into the 30-year battle over which side would prevail. He tours the landmarks of the battlefield, among them the government's Data Encryption Standard, public-key cryptography, the key escrow plan and the Clipper Chip. And he vividly portrays the leading actors on both sides. In the end, it was the burgeoning of the Internet and the necessities of e-commerce that won the day for the Cypherpunks. As Judge Betty B. Fletcher of the U.S. Court of Appeals for the Ninth Circuit put it in a decision handed down last year: "Government attempts to control encryption ... may well implicate not only First Amendment rights of cryptographers but also the constitutional rights of each of us as potential recipients of encryption's bounty."
EDITORS OF SCIENTIFIC AMERICAN --This text refers to an alternate kindle_edition edition.
From Booklist
The government monopoly of sophisticated codes is no more, dissolved by the invention of "public key" cryptography, and Levy here recounts how a handful of mathematicians and computer scientists did it. Simon Singh succinctly described public key's principal creators and operating principles in The Code Book (1999). Levy emphasizes the story's business aspects and patent disputes among the inventors. In addition, he folds in incidents involving emissaries from the secret world of the National Security Agency, who subsequently helped to break the agency's lock on high-level codes. Profiling names now legendary in cryptography--such as Whit Diffie, Phil Zimmerman, or a trio whose acronymic RSA algorithm makes secure e-commerce possible--Levy lucidly limns their counterintuitive thinking about codes (especially the idea that keys, based on gigantic prime numbers, be exchanged in the open for all to see). Culminating with reportage on their efforts to commercialize and export public-key crypto, which the NSA successfully lobbied the Clinton administration to limit, Levy's history is a fascinating intersection of people, privacy, and power. Gilbert Taylor
Copyright © American Library Association. All rights reserved --This text refers to an alternate kindle_edition edition.
"Gripping and illuminating." —The Wall Street Journal
"A great David-and-Goliath story—humble hackers hoodwink sinister spooks." —Time
--This text refers to an alternate kindle_edition edition.
ASIN  :  B004IATDCO
Publisher  :  Penguin Books (January 8, 2001)
Publication date  :  January 8, 2001
File size  :  1138 KB
Text-to-Speech  :  Enabled
Screen Reader  :  Supported
Enhanced typesetting  :  Enabled
X-Ray  :  Not Enabled
Word Wise  :  Not Enabled
Print length  :  370 pages
Lending  :  Not Enabled
Best Sellers Rank: #381,891 in Kindle Store (See Top 100 in Kindle Store)
#52 in Business & Management Technology History
#100 in Encryption
#104 in Online Safety & Piracy
Follow authors to get new release updates, plus improved recommendations.
Levy is editor at large at Wired. Previous positions include editor in chief at Backchannel; and chief technology writer and a senior editor for Newsweek. In early 2020, his book "Facebook: The Inside Story" will appear, the product of over three years studying the company, which granted unprecedented access to its employees and executives. Levy has written previous seven books and has had articles published in Harper's, Macworld, The New York Times Magazine, The New Yorker, Premiere, and Rolling Stone. Steven has won several awards during his 30+ years of writing about technology, including Hackers, which PC Magazine named the best Sci-Tech book written in the last twenty years and, Crypto, which won the grand eBook prize at the 2001 Frankfurt Book festival. "In the Plex," the definitive book on Google, was named the Best Business Book of 2011 on both Amazon and Audible.
SLD12DAY
5.0 out of 5 stars An engaging and important read, even after nearly 20 years
I bought this book based on the recommendation of the professor who teaches my cyber security class, and since it is out of print, I took a chance and got a used one. The condition of the book is far better than I anticipated and the seller shipped it super fast.
As for the content, it is interesting and engaging and Mr. Levy has done a great job at conveying the history and importance of cryptography and how it relates to cyber security on a level that is neither overly technical nor dumbed down. While the book was originally published nearly two decades ago, the information is still relevant today. He has written several other books including The Unicorn's Secret: Murder in the Age of Aquarius, another I very much enjoyed.
Whether or not you are working in the cyber security field, I feel like this is an important book for everyone to read, especially with all the rumblings of Russian hackers, data breeches on credit cards and social media accounts and all the other hacking and phreaking that's going on right under our noses. Knowledge is power, and it is our best defense against those who seek to hurt us. This book will help you find your ammunition.
Donald A. Tevault
5.0 out of 5 stars Important history
This story about the development of computer cryptography is both fascinating and important. The book is very well-written, and very easy to read. Its importance lies in the fact that it explains the machinations of government agencies to prevent the masses from using strong cryptography, and how the good guys in the software industry were able to overcome the obstacles. So, if you need a good read, go ahead and grab a copy.
Marcelo P. Lima
5.0 out of 5 stars Excellent short history on the human side of pub. key crypto
This easy-to-ready short history by writer Steven Levy, who has written numerous articles for Wired, is a very well-researched volume on the human side of public-key cryptography.
Levy has interviewed all of the major players: Diffie, Adleman, Chaum, Zimmerman, and others; he's done nearly a decade of research on the subject, and monitored the sci.crypt.* newsgroups. Clearly, this is an authoritative account of the short 30-year history of public key.
The main theme of the book is how the NSA tried to stifle new developments by the researchers, placing secrecy orders and classifying their patents and papers. Throughout the book, as Levy draws out the characters, it's the crypto community vs. the government, until ultimately the cypherpunks win out.
This book doesn't contain a single diagram; no photos, and no equations at all. So if you're looking for a technical introduction to crypto, look elsewhere; this is purely an informally-written account on the people behind the scenes.
Five stars, for what it is; sure, Levy writes with magazine-style prose, but this fits the high-level view he takes on the subject. Most importantly, this volume was exhaustively researched and has the collaboration of all of the key players, which lends Levy's account great credibility.
S. Mujumdar
excellent book about the history of modern crypto
J Larsen
I'll save the complete review for goodreads, but as someone who is semi-interested in cryptography this is a fun read. The lengths that the NSA went to in order to quash attempts at building solid encryption are astounding. This book reads like a spy novel... albeit one with rather pasty and doughy spies.
The book was in perfect condition and arrived quickly.
Neil Bacon
4.0 out of 5 stars Interesting Book on One of the Most Important Discoveries of Our Time
Fascinating book. Recommended for anyone who is interested in how great ideas get to market and how they can be smothered in their crib by government and, frankly, just bad management decisions. Some of the descriptions of encryption techniques get a bit heavy, but a) I was interested in that part too and b) if that is not your thing, jump ahead.
4.0 out of 5 stars Pretty Good Presentation :-)
I enjoyed reading this book; Mr. Levy has an engaging and readable style. One can always wish for more, but in my case, I would have liked a chapter about crypto activities in other countries besides the U.S. and Great Britain. For example, what do we know, if anything about what the Soviet Union or, say, Israel was doing in this field over the years. As example, do we have evidence that U.S. developments were actually put to use by other countries. Otherwise, for me, now on to read "Hackers"!
Walter Anderson
5.0 out of 5 stars Great read
Very well conveyed story of how the last best hope for liberty was given to mankind.
Also serves as a testimony of how little trust we should have in government and it's beauracratic functionaries.
Jeremy Walton
4.0 out of 5 stars Tales from the crypt
I've enjoyed Levy's other books on technology (beginning, a long time ago, with his classic Hackers) so was looking forward to reading his account of the development of modern cryptography. More specifically, the period he covers is from the mid-70s - when Diffie and Hellman solved the problem of distributing cryptographic keys, which immediately led to the development of public key cryptography - to the end of the 20th century, when the Internet was exploding in popularity and usage.
He stops there because this book was written in 2000, but it's still an important read because of the way it describes the technical developments in cryptography and - more compellingly - the tension between researchers in this field, government agencies and commercial companies. Each of these communities had a specific and - usually - contentious view of the priorities associated with cryptography and privacy. The battle between them came to the fore in the debate over the clipper chip: an encryption device developed by the National Security Agency for voice and data messages which included a back-door to allow law enforcement to decode transmissions. Clipper was defunct less than three years after its introduction, partly because the government lost the debate over privacy, but mostly because of the widespread use of independently-developed public key cryptography.
The issues discussed in this book have only become more important with the further extension of the Internet and our reliance on it in every day use (the book describes the initial attempts to introduce digital cash, for example), and society's evolving ideas about the prices we're willing to pay for privacy. Recommended.
la Plume de ma Tante
5.0 out of 5 stars If you want the inside story on the NSA and GCHQ you must read this book!
Reviewed in the United Kingdom on January 8, 2014
A fascinating and incredibly detailed examination of the development of public key encryption by private individuals and their continuing battles with the US Government and the bureaucratic empire that the NSA had become. This account places Edward Snowden as only the latest of many people who have suffered for revealing the lack of clothes these emperors wear. Not difficult to read, written by a journalist rather than a computer geek, this is a splendid account of a struggle that is not over yet.
Federico Ruiz
5.0 out of 5 stars Un libro extremadamente interesante, entrega irreprochable
Reviewed in Spain on August 3, 2017
Este libro presenta de modo ameno la evolución de la criptografía desde finales de la segunda guerra mundial hasta nuestros días.
Es muy útil para entender una evolución que ha desembocado en Blockchain, por ejemplo
Se lle como una novela y contiene las referencias necesarias para profundizar.
El libro aparentemente no se se publica pero lo adquirí de uno de los vendedores de Amamzon, muy buen estado, entrega rápida y sin problemas
Maarten van Emden
5.0 out of 5 stars Excellent.
Reviewed in Canada on March 23, 2017
Prompt delivery, beautiful copy.
The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet
David Kahn
The Blocksize War: The battle for control over Bitcoin's protocol rules
Jonathan Bier


text:
Q: Qt5: работа с QtSql, обращение к пустой базе данных Я обращаюсь к базе данных mysql:
void queryDealID()
{
    QSqlQuery query;
    if (!query.exec("SELECT DealID FROM st_park_bukkit ORDER BY DealID DESC LIMIT 1;"))
    {
        qDebug() << "Unable to execute query";
        return;
    }
    QSqlRecord rec = query.record();
    query.next();
    //   qDebug() << "Current DID from query " << query.value(rec.indexOf("DealID")).toString();

    if(query.value(rec.indexOf("DealID")).isNull())
    {
        CurrentDealID = 0;
    }
    else
    {
        CurrentDealID = query.value(rec.indexOf("DealID")).toInt();
    }
}

Когда она пустая, то у меня в дебаге вылезает следующая ошибка:
 QSqlQuery::value: not positioned on a valid record

Как это поправить? Код работает, но я боюсь, что творятся страшные невидимые вещи.
Какова механика ошибки?

A: Для пустой таблицы надо просто проверять на валидность результат запроса

bool QSqlQuery::isValid() const Returns true if the query is currently
  positioned on a valid record; otherwise returns false.
isValid() ... Возвращает true если запрос находится на валидной
  записи, иначе возвращается false см.тут

QSqlQuery query = ...

if( query.isValid() )
{
    // Здесь ваш код на случай если записи в таблице имеются,
    // то есть запрос валиден

    QSqlRecord rec = query.record();
    //...
}

redpajama_set_name: RedPajamaStackExchange


For many decades the only 1/35 model of the AMX-30 was the one produced by the French company Heller, which had some nice details but also some troublesome parts and what was evident, it lacked of subtle details so if you wanted to have a nicely detailed model of the French tank you surely had to work a lot. Few years ago, the Meng Models Company from China presented their new kit at the Scale Model World 2012 at Telford and they did it "the big way" placing the real AMX-30B from the Bovington tank museum aside so the modellers could compare and enjoy.
That was certainly a big surprise and an effective commercial move as every modeller was talking about it for many days. As expected, the new model was immediately compared with the ancient Heller kit although it was not necessary at all, it is almost impossible to find a 20years old kit that can stand against any new model made with the latest technology, and the Heller kit is even older, a lot older.
Back to the Meng kit, is made of 390 dark green plastic pieces with another 360 of brown plastic for the tracks links. A photoetched fret with a few parts and a transparent plastic frame with the lenses, periscopes, etc. A small decal sheet provides the necessary for two models, one in overall green and another one with the typical NATO three tone camouflage, both from the French army. As I wanted my kit to be an AMX-30E I had to look for the decals somewhere else.
I started the building, following the instructions from the step two, I left the wheels aside unglued for better painting them once I was to begin with the decoration. Some of the suspension parts are not to be glued so you can position the torsion bars in the angle you like to adapt the wheels to the terrain. That decided me immediately to create an irregular base for the model.
I continued with the instructions step by step but left aside some parts; tools, extra track links, front boxes, photoetched mesh for the exhausts, fire extinguishers, lights crystals, searchlight, etc.
Includes more than 63 pics, here we show only the text pages.
Incluye más de 63 imágenes, aquí solo mostramos las paginas de texto.


text:
Home Company Culture Career Transition: Moving from designer to front-end developer
Career Transition: Moving from designer to front-end developer
Inês Gomes
Company CultureEducation
Today we share an interview with Inês Gomes (@theinesgomes) on her career transition from designer to front-end developer, how she made the change, and what she wishes she had known before she made the jump.
What did you study in school? What kind of exposure did you have to programming?
I studied Design and Multimedia in Coimbra, Portugal. My course of study had a lot of programming classes, even some with students from the software engineering major, so that helped when deciding on my new path.
We started by learning a program called Processing that was like a simplified version of Java. It was an incredible feeling to start understanding code, and the projects we did were very visual so it was very satisfying. (Of course, later we learned Java as well.)
I learned a lot about HTML, CSS, JavaScript and their tools through web design projects like making a personal website and creating an online game, and we did projects with Arduinos, which use C++. In my last year of study we even covered AI, where we had to program subjects to solve puzzles or ride a street without crashing. Let me tell you, for someone who was studying design, this killed me!
What was your first job? What did you like and dislike about it?
Codacy was actually my first job. I started as a summer design intern through Faber Ventures. About halfway through, the CTO and lead designer at the time came to me and told me it seemed like I preferred coding to designing (My response: "Yeeeeaaaah") and offered to have me work on the website instead. The rest is history!
Why did you feel like this transition from designer to front-end developer was right for you?
Although I worked very hard on my design ideas and was very proud of them, I never felt completely satisfied. I knew I was really interested in web design, and seeing my ideas actually coming to life on a web page was amazing. The sheer amount of possibility is beautiful.
My favourite part about design was actually doing animations on websites, when I learned all about the different kinds of user interactions, like mouse interactions, scroll interactions, and all the different kinds of user responses. I found it all fascinating.
What did you consider before you did it? What were you hoping to see as differences in your job?
I was hoping I would have less client interaction and less need to think about endless user flows and user case studies. I just wanted to make things happen.
What skills from being a designer do you think help you in your role now?
Having a background as a designer helps a lot in my direct interaction with them. I feel like I understand what they are looking for and how they are thinking when they're trying to create something, so I can give them the details they need.
What has been challenging for you in this role coming from a designer background?
There have been a lot of challenges, definitely. Not feeling like I have the same applied "logical thinking" education trained engineers have can be difficult. Sometimes it can be hard to keep track of their ideas because I lack the knowledge, but I just have to try harder, ask questions, and not be afraid of not knowing.
Now that you've been in this front-end developer role for 2 years, what do you like best about it in comparison to your previous designer role?
I'd always hated the need to do extensive user research as a designer. I found all that so boring even as I respect everyone that likes and can do that part of the job. This role is much more actionable, like "you have this mock up: implement it" which is so much easier for me. The work has already been done to ensure the best user experience, and I can just focus on how to make it work.
What kind of person do you think would benefit most from this transition?
I think designers, like myself, who feel they can go above and beyond the idea, who want to go further and fulfill the missing pieces on their designs. I think it all starts with a bit of curiosity: "How can I make this thing I designed? Is there any way I can help my colleagues?", and once you start to investigate more, you'll find multiple solutions in different ways.
What do you wish you had known before you made this transition?
It would've helped to know more about the front-end world, maybe even just by talking to someone in the area. I would have been more prepared and built my base on JavaScript earlier and stronger. What would've helped me as well was knowing more about JavaScript frameworks, and studying the possibilities to prepare myself for this challenge.
Inês Gomes is a front-end developer and has worked at Codacy for 2 years. In her spare time, she likes to watch a good TV series and discuss it passionately or hang out with friends over beers.
Want to join our team? We love crafting software and we're passionate about helping developers ship better code. See our openings.
Previous articleTaking transparency to the next level at Codacy: our open salary calculator
Next articleScala: Learn to Walk Before You Fly (Part 2)
Automated Code Review Benefits: Webinar
E Hunt - December 4, 2019 0
Our sales team member Matt Kohler recently gave a presentation on code review benefits with his "Benefits of Automated Code Review" webinar....
How to write legible QA tests
Fernando Chovich - July 29, 2019 0
Our quality-minded software engineer shares best practices for writing legible QA tests.


The artists of SoWa Artists Guild are happy to announce our newest event, SoWa Second Sunday, free and open to the public! More than 80 artists will be in their studios at 450 Harrison Avenue in the SoWa Art + Design District on the second Sunday of every month, from 11:00 AM - 4:00 PM. You can meet the artists, see a wide variety of original contemporary art and if you like, buy art that you love directly from the people who make it. MBTA Orange line to New England Medical Center, then Silver line outbound to Union Park Street. Parking is available. For more information, please visit http://www.sowaartists.comand http://facebook.com/SoWaArtistsGuild.


text:
Interview By Ellen Joan Pollock
This interview is from "Doubling Back: Some '70s Pioneers Make Headlines Two Decades Later" by Ellen Joan Pollock, Staff Reporter of THE WALL STREET JOURNAL, and is a follow-up to a 1975 Wall Street Journal article by Mary Bralove. From The Wall Street Journal Interactive Edition.
Sonia and Zia Fuentes
Several weeks ago, Sonia Pressman Fuentes, 70, got a phone call from her daughter in Chicago. Zia, 26, told her mother not to try to reach her over the weekend because she would be visiting friends in Michigan. "Who knows whether she'll even remember my birthday," Ms. Fuentes remembers thinking.
The relationship between the two has been rocky nearly from the start. Sonia, a lawyer, married late and had Zia when she was 43. "I was bored to the gazoo staying home with my baby, although I loved her," she says. "My husband sent me back to work after a five-week maternity leave. I was driving him crazy."
Says Zia: "She's 'Type A' to the nth degree."
In 1975, Sonia was a senior attorney at GTE Corp. in Stamford, Conn., and her husband had a government job in New York. "The woman at home and the husband at the office are living two different lives," she told the Journal. "We're living more the same kind of life, and we're closer for it." A few years later, her marriage was over, and today she finds it hard to believe she once said that.
So does her daughter.
Back then, Sonia had a lot on her plate. Not only was she one of the most senior women at GTE, but as a founder of the National Organization of Women, she was active in the women's movement. Zia was being raised by a succession of housekeepers. "I managed everything for her, but that's not the same as spending time with her," Sonia says. "I should have given her more priority. She was really like a little doll that I could show off."
Sonia's marriage was also a contest of wills. She felt saddled with running the household; unhappy with his job, he wanted to move. "I said to him, 'I'm not leaving Stamford,' " Sonia says. "I had an important corporate job, and I wasn't going to leave that. But also at that stage, I didn't have enough trust in him to let go of my career and follow him." They split up. Eventually he returned to Puerto Rico, where he was from. (He died in 1995.)
Sonia moved in 1981 to Cleveland to take charge of TRW's equal-employment-opportunity and affirmative-action programs. She later took a job at the U.S. Department of Housing and Urban Development and moved to Maryland. The relationship between mother and daughter degenerated until they were at war, with Zia in full rebellion by the time she was 12. Sonia told her daughter to move out when she was a teenager, but at the last minute backed down. Friends told Sonia, "You have to wait, she'll get older. I said, 'Listen, I can't live forever.' "
For Zia, resentment was a slow burn. "She couldn't make every school play, and she couldn't make every piano lesson or doctor's appointment," she says. "I expected her to have all the time in the world because other moms did. I never got what I wanted from her. I felt she didn't know me as well as other moms. She didn't have the time." By high school, Zia had made a decision: She would never have children. "I'm very career-oriented. Those are values that I get directly from her," says Zia, who is a manager of sales support at Ameritech and is studying for her M.B.A. "And understanding the way I felt as a child, I really feel that if I was going to be a mom, I would want to stay home because I missed that so much."
Her mother hopes she will change her mind.
Sonia is now happily retired and trying to find a publisher for her memoirs. As for Sonia's 70th birthday, she planned to attend a poetry reading at the headquarters of the National Woman's Party in Washington. But when she arrived, she found that poetry wasn't on the night's agenda. Instead, she found about 45 family members and friends waiting to wish her well. Zia wept when her mother entered the room. She had spent almost a year planning the party, designing elegant invitations and a memory book for her mother.
"It was a great experience for me because I realized how much closer we'd become," says Zia. She realized when the invitations were ready how she had come to value her frequent phone conversations with her mother: "It began to hit me that not being able to tell her [about them] was a gap for me," she says.
Sonia was beside herself. "There's no way to express such a thing," she sputtered shortly after the party. "What it means to me that she did this is that she really loves me... . It's wonderful, but it took 26 years to get there."
Wall Street Journal, May 1998


Given that you described, "...having real difficulty with tasks requiring sustained effort", means you may have just called me a squirrel. I think I'm going to go eat a walNut.
I do like how you applied the positive application to your bigger concerns, like increasing the size of the scope as each panel was laid instead of reducing the size of the scope. That was really cool.
I suppose the Bible does that also, as it continues to narrow down till the 40th book, aka, Matthew, till there's only one person of focus, the proceeds to expand focus until Revelation. I don't suppose I would have thought of that correlation until I was looking at your comic.
I enjoying teaching them about both the strengths and pitfalls of the ADHD "gift;" hope is a big part of how God keeps us all moving forward.
Very intriguing observation and insight into 'squirrels', I hope that there is a bright future coming for your ADHD young ones!


Does anyone know if Netweaver supports the J2EE Deployment API (JSR-88)?
I'm trying to figure out a programmatic way of deploying/controlling my application on Netweaver in the same way I could on Tomcat or WebSphere.
Support for J2EE Deployment API will be available with the next major release of NetWeaver - which will be fully J2EE 1.4 compatible.
There is no official statement about when this release will be available.
Keep an eye on SDN and the other SAP information portals about that.


Want to find out More Details About Produce My Essay to me On the net? | Trimax IT Infrastructure & Services Ltd.
Want to find out More Details About Produce My Essay to me On the net?
HomeUncategorizedWant to find out More Details About Produce My Essay to me On the net?
Then learn your newspaper just as before, and afterwards underline two or three sentences that you're miserable with and need to strengthen. Producing articles, as well as other local newspaper to do this selected situation, isn't just creating. Following your cardstock was concluded, you'll be also asked for to speed the author. Without a doubt, it's vitally important to select https://espace.library.uq.edu.au/view/UQ:243937/SF_1993_August_Edition6.pdf unique themes for review essay. It is possible to post a remarkable essay, and can flourish to be really reduce scars and possibly are unsuccessful your project for those who haven't clarified the inquiry asked. Creating an article is difficult get the job done, and web expert services are really expensive, which is the explanation a great number of you're wondering I want an internet solution could produce my essay low priced! Effectively, our superior excessive very good custom-made publishing service is precisely what you want. In the event it respect prolonged requests, they'll be broken into many different areas for you along with your author's safe practices and comfort. You can find a selection of causes why you have to settle on our offerings. Top rated Compose My Essay for me personally Internet Selections Thankfully, you may not really have to go through solely it's possible to arrangement essay internet and price quickly with those issues. Bing On line posting essay incorporates a standard observe to express men and women programs for illustration, by the identical building contractor. Congratulations, you recognise that a sincere and qualitative on-line essay creating product might possibly deliver wonderful assistance to your studying, it's enough time to fixed your select.
In the case it seems less complicated, give some thought to diagnosing three or more inquiries you have as you consider the topic position. Undoubtedly, it's amongst the number one portions of the duty. Now there are 100s and a large number of business owners offering up specialized essay formulating assistance, together with your position is to try to choose the the one that would fit your demands, in particular, one of the most reputable companies is NitroEssaysWriting! Locating the optimal Publish My Essay custom essays i believe Internet In case the Customer's request for revision doesn't encounter all of the abovementioned situations, a surplus charge for your personal revision may possibly be required. Use sub-headings to hold to maintain results of the actual similar form together with each other, which is often easier to report and focus. If your order is defined online and isn't settled, the seller isn't planning to get started refinement it and may sit back and watch towards your charge. What to anticipate From Create My Essay personally Web-based?
There are numerous unique varieties of essay together with the titles might possibly can be different in keeping with the places you reside. You real danger obtaining a little class as professors are very demanding about just about every miscalculation they locate. Once you have used your pay for, the freelance writers which are intrigued and have the ability during the adequate field start up bidding for this. Information of Produce My Essay for Me On the internet You're in the acceptable location for the reason that our pros are incredibly capable to guide you with essay for any organize. Actually, you can easily meet track of the author on the web and talk about your assignments. Close to everything you will have may likely reduce from publishing an essay that could offer you the product quality which you've been longing for. Remember you may want to look for knowledgable about the examples of author's old give good results. With each other the method of composing, you're possibly so that you can get your hands on your copy writer and gives even more recommendations in their eyes.
Previous Previous post: How common can it be for PhD learners to fail their viva?


text:
Bye-bye potholes? University of Michigan lab working to create ultra-strong concrete
David Jesse
There are two KitchenAid mixers sitting on the counter and next to them, a mixer that looks like it's been taking designer steroids for a decade.
Into that giant mixer go a bunch of dry ingredients. The mixer whirs to life and stirs for five minutes or so.
Then, the liquids go in and the mixer whirs back to life and shortly, the recipe is done.
But this isn't your grandma's kitchen — and the finished product isn't holiday cake batter. It's a lab in the basement of a University of Michigan building and the stuff inside the mixer bowl is concrete — ultra-high-performance concrete to be exact.
And while it has existed before, a team of U-M engineers has come up with a non-proprietary formula that has all sorts of potential uses.
More on Freep.com:
Michigan's pothole hotline swarmed with calls
League of Women Voters joins Michigan Democrats in lawsuit targeting gerrymandering
It could be used to create better roads that don't turn into a pothole maze as fast; help build super-strong, super-tall buildings, and even have uses in making blast-proof buildings.
"Regular concrete will have a strength of about 4,000 pounds per square inch (psi) … that's maybe the weight of an SUV on every square inch," said Sherif El-Tawil, a U-M professor of civil and environmental engineering. "However, UHPC can support at least 22,000 psi or six times as much."
In addition, the concrete is built to better handle freeze/thaw cycles, which contributes to the creation of those pesky potholes. Regular concrete is good for about 28 cycles. This concrete is good for 90 cycles or more.
So, how does it work?
The super-strong concrete packs more particles into each bit of concrete.
Pretend that the regular concrete is three tennis balls stacked on each other in a triangle. There are gaps in the stack. This concrete fills those gaps, and then fills in the gaps in the next layer and so on until there aren't any gaps. That keeps water from getting in, freezing and then causing problems when it thaws. There are also thin steel wires mixed into the concrete to help hold it together when it does crack.
The super-strong concrete was developed by a private company, but it's costly — around $2,700 or $2,800 per cubic yard. Regular concrete runs about $100 or so per cubic yard.
The Michigan Department of Transportation gave U-M a grant to see if it could develop a less costly version.
In 2016, MDOT outlined the problem with commercially available brands of UHPC in a research publication.
"While the durability properties of UHPC are very attractive … mixes are currently prohibitively expensive for widespread use and require specialized equipment and curing practice," MDOT's research report stated. "But if costs were reduced …(it) could have potential …including thin overlays for decks that now need to be replaced every few decades."
U-M's version costs about $880 per cubic yard. That's still much more than regular concrete.
The reason U-M's is still more costly is largely due to those thin steel wires. MDOT mandates only American-made products be used and the steel wires are more expensive than similar products made overseas.
"Our (concrete) brings down the cost of long-term maintenance," El-Tawil said. "It's still more expensive than regular concrete. But if you consider the effect over the lifetime of a bridge, then the cost becomes very competitive.
"If you have a concrete deck on a bridge that lives for 200 years with little to no maintenance … imagine the cost savings.
"I think we should use it for all infrastructure."
U-M is currently working on the best ways to mass-manufacture the mix. It was used recently in a bridge repair in St. Clair County which MDOT is using as a test.
Unlike the private companies already doing the super-strong concrete, U-M plans to give away its formula as a way to help it become used more, which the U-M engineers believe will also help drive down the cost.
Contact David Jesse: 313-222-8851 or djesse@freepress.com. Follow him on Twitter: @reporterdavidj


G&H Landscaping has been providing custom Lawn Care, Landscaping and Irrigation Services throughout the greater Springfield, Holyoke, Chicopee, Northampton areas since 1974. Whether you need a simple shrub replacement, lawn renovation, sprinkler installation or service, a full property maintenance program or a complete landscape or backyard makeover, our professional staff has the knowledge and experience to make it happen! From the smallest to the largest project, either residential or commercial, our goal is to exceed our customer's expectations. We pride ourselves in using only the highest quality products available in the industry, and back all of our work with a written guarantee!


text:
/**
 * @author Benjamin M. Chase <benjamin.chase@fh-luebeck.de>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
"use strict";

/**
 * Description parse the results and write the line speed as language specific
 * string to the output.
 * @method displayDetectedLineSpeed
 * @param {} resultData
 * @return
 */
function displayDetectedLineSpeed(resultData) {
    switch (resultData) {
    case "-2":
        writeToScreen(displayMessages.insufficient, 'resultstext');
        break;
    case "-1":
        writeToScreen(displayMessages.systemFault, 'resultstext');
        break;
    case "0":
        writeToScreen(displayMessages.rtt, 'resultstext');
        break;
    case "1":
        writeToScreen(displayMessages.dialupStr, 'resultstext');
        break;
    case "2":
        writeToScreen(displayMessages.t1Str, 'resultstext');
        break;
    case "3":
        writeToScreen(displayMessages.ethernetStr, 'resultstext');
        break;
    case "4":
        writeToScreen(displayMessages.t3Str, 'resultstext');
        break;
    case "5":
        writeToScreen(displayMessages.fastEthernet, 'resultstext');
        break;
    case "6":
        writeToScreen(displayMessages.oc12Str, 'resultstext');
        break;
    case "7":
        writeToScreen(displayMessages.gigabitEthernetStr, 'resultstext');
        break;
    case "8":
        writeToScreen(displayMessages.oc48Str, 'resultstext');
        break;
    case "9":
        writeToScreen(displayMessages.tengigabitEthernetStr, 'resultstext');
        break;
    default:
        // writeToScreen(displayMessages.runningOutboundTest, 'resultstext');
        break;
    }

}

/**
 * Description Use the stored web100 variables to intrepret the findings and
 * make some assumptions to help the user understand what happen during the tests.
 * Ouput the results for the user to read with language specific text
 * @method interpretResults
 * @return
 */
function interpretResults() {

    var metadata = userAgent();
    var metabrowser = metadata[0] + ' / ' + metadata[1];
    var metaclientOS = metadata[2];
    var metaClientVer = CLIENT_VER;
    var metaClientApp = CLIENT_ID;

    writeToScreen("OS Data: " + metaclientOS, 'resultstext');
    writeToScreen("Browser: " + metabrowser, 'resultstext');
    writeToScreen("NDT Client Version: " + metaClientVer + " " +
        metaClientApp, 'resultstext');

    switch (clientResults.c2sData) {
    case "-2":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.insufficient, 'resultstext');
        clientResults.linkSpd = NaN;
        break;
    case "-1":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.systemFault, 'resultstext');
        clientResults.linkSpd = NaN;
        break;
    case "0":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.rtt, 'resultstext');
        clientResults.linkSpd = NaN;
        break;
    case "1":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.dialupStr, 'resultstext');
        // 64 kbps
        clientResults.linkSpd = 0.064;
        break;
    case "2":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.cabledsl, 'resultstext');
        clientResults.linkSpd = 3;
        break;
    case "3":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.ethernetStr, 'resultstext');
        clientResults.linkSpd = 10;
        break;
    case "4":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.t3Str, 'resultstext');
        clientResults.linkSpd = 45;
        break;
    case "5":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.fastEthernet, 'resultstext');
        clientResults.linkSpd = 100;
        break;
    case "6":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.oc12Str, 'resultstext');
        clientResults.linkSpd = 622;
        break;
    case "7":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.gigabitEthernetStr, 'resultstext');
        clientResults.linkSpd = 1000;
        break;
    case "8":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.oc48Str, 'resultstext');
        clientResults.linkSpd = 2400;
        break;
    case "9":
        writeToScreen(displayMessages.your + " device " + displayMessages.connectedTo +
            " " + displayMessages.tengigabitEthernetStr, 'resultstext');
        clientResults.linkSpd = 10000;
        break;
    default:
        // writeToScreen(displayMessages. , 'resultstext');
        clientResults.linkSpd = NaN;
        break;
    }

    //RFC 896
    switch (clientResults.NagleEnabled) {
    case NAGLEENABLED_OFF:
        writeToScreen("RFC 896 Nagle Algorithm: " + displayMessages.off,
            'resultstext');
        break;
    default:
        writeToScreen("RFC 896 Nagle Algorithm: " + displayMessages.on,
            'resultstext');
        break;
    }

    //RFC2018
    switch (clientResults.SACKEnabled) {
    case SACKENABLED_OFF:
        writeToScreen("RFC 2018 Selective Acknowledgement: " +
            displayMessages.off, 'resultstext');
        break;
    default:
        writeToScreen("RFC 2018 Selective Acknowledgement: " +
            displayMessages.on, 'resultstext');
        break;
    }

    //RFC 3168
    switch (clientResults.ECNEnabled) {
    case ECNENABLED_OFF:
        writeToScreen("RFC 3168 Explicit Congestion Notification: " +
            displayMessages.off, 'resultstext');
        break;
    default:
        writeToScreen("RFC 3168 Explicit Congestion Notification: " +
            displayMessages.on, 'resultstext');
        break;
    }

    //RFC 1323
    switch (clientResults.TimestampsEnabled) {
    case TIMESTAMPSENABLED_OFF:
        writeToScreen("RFC 1323 Time Stamping: " + displayMessages.off,
            'resultstext');
        break;
    default:
        writeToScreen("RFC 1323 Time Stamping: " + displayMessages.on,
            'resultstext');
        break;
    }

    //bad Cable Test
    switch (clientResults.bad_cable) {
    case CABLE_STATUS_OK:
        writeToScreen(displayMessages.cablesOk, 'resultstext');
        break;
    case CABLE_STATUS_NOK:
        writeToScreen(displayMessages.cablesNok, 'resultstext');
        break;
    default:
        break;
    }

    //Full Half Duplex
    switch (clientResults.half_duplex) {
    case "0":
        writeToScreen(displayMessages.linkFullDpx, 'resultstext');
        break;
    default:
        writeToScreen(displayMessages.linkHalfDpx, 'resultstext');
        break;
    }

    //Duplex Mismatch Condition
    switch (clientResults.mismatch) {
    case DUPLEX_OK_INDICATOR:
        writeToScreen(displayMessages.duplexOk, 'resultstext');
        break;
    case DUPLEX_NOK_INDICATOR:
        writeToScreen(displayMessages.duplexNok, 'resultstext');
        break;
    case DUPLEX_SWITCH_FULL_HOST_HALF:
        writeToScreen(displayMessages.duplexFullHalf, 'resultstext');
        break;
    case DUPLEX_SWITCH_HALF_HOST_FULL:
        writeToScreen(displayMessages.duplexHalfFull, 'resultstext');
        break;
    case DUPLEX_SWITCH_FULL_HOST_HALF_POSS:
        writeToScreen(displayMessages.possibleDuplexFullHalf, 'resultstext');
        break;
    case DUPLEX_SWITCH_HALF_HOST_FULL_POSS:
        writeToScreen(displayMessages.possibleDuplexHalfFull, 'resultstext');
        break;
    case DUPLEX_SWITCH_HALF_HOST_FULL_WARN:
        writeToScreen(displayMessages.possibleDuplexHalfFullWarning,
            'resultstext');
        break;
    default:
        writeToScreen("Non valid duplex indicator", 'resultstext');
        break;
    }

    //Congestion
    switch (clientResults.congestion) {
    case "0":
        writeToScreen(displayMessages.congestNo, 'resultstext');
        break;
    default:
        writeToScreen(displayMessages.congestYes, 'resultstext');
        break;
    }

    //Average Round Trip Time
    writeToScreen(displayMessages.web100rtt + " = " + clientResults.avgrtt +
        " ms", 'resultstext');
    //PacketSize
    writeToScreen(displayMessages.packetsize + " = " + clientResults.CurMSS +
        " bytes", 'resultstext');

    //Bottleneck
    // 1) Is the connection receiver limited?

    if (clientResults.rwintime > SND_LIM_TIME_THRESHOLD) {
        writeToScreen(displayMessages.thisConnIs + " " + displayMessages.limitRx +
            " " + parseFloat(clientResults.rwintime * 100).toFixed(2) +
            " " + displayMessages.pctOfTime, 'resultstext');

        // Multiplying by 2 to count round-trip.
        var receiverLimit = (2 * clientResults.rwin / clientResults.rttsec);
        var idealReceiverBuffer = (clientResults.MaxRwinRcvd / KBITS2BITS);
        if (receiverLimit < clientResults.linkSpd) {
            writeToScreen(displayMessages.incrRxBuf + " (" +
                idealReceiverBuffer.toFixed(2) + " KB)" +
                displayMessages.willImprove, 'resultstext');
        }
    }
    // 2) Is the connection sender limited?
    if (clientResults.sendtime > SND_LIM_TIME_THRESHOLD) {
        writeToScreen(displayMessages.thisConnIs + " " + displayMessages.limitTx +
            " " + parseFloat(clientResults.sendtime * 100).toFixed(2) +
            " " + displayMessages.pctOfTime, 'resultstext');

        // Dividing by 2 to counter round-trip.
        var senderLimit = (2 * clientResults.swin / clientResults.rttsec);
        var idealSenderBuffer = (clientResults.Sndbuf / (2 * KBITS2BITS));

        if (senderLimit < clientResults.linkSpeed)
            writeToScreen(displayMessages.incrRxBuf + " (" +
                idealSenderBuffer.toFixed(2) + " KB)" + displayMessages.willImprove,
                'resultstext');
    }
    // 3) Is the connection network limited?

    if (clientResults.cwndtime > CWND_LIM_TIME_THRESHOLD) {
        writeToScreen(displayMessages.thisConnIs + " " + displayMessages.limitNet +
            " " + parseFloat(clientResults.cwndtime * 100).toFixed(2) +
            " " + displayMessages.pctOfTime, 'resultstext');
    }
    // 4) Is the loss excessive?
    // If the link speed is less than a T3 ~ 45 MB/s, and loss is greater than 1 percent, loss is determined to be excessive.
    if ((clientResults.spd < 45) && (clientResults.loss > LOSS_THRESHOLD)) {
        writeToScreen(displayMessages.excLoss, 'resultstext');
    }

    //Packet Retransmissions Results
    if (clientResults.PktsRetrans > 0) {
        writeToScreen(clientResults.PktsRetrans + " " + displayMessages.pktsRetrans,
            'resultstext');
        writeToScreen(clientResults.DupAcksIn + " " + displayMessages.dupAcksIn,
            'resultstext');
        writeToScreen(clientResults.SACKsRcvd + " " + displayMessages.sackReceived,
            'resultstext');

        if (clientResults.Timeouts > 0) {
            writeToScreen(clientResults.connStalled + " " + clientResults.Timeouts +
                " " + displayMessages.timesPktLoss, 'resultstext');
        }
        var percIdleTime = (clientResults.waitsec / clientResults.timesec *
            100);
        writeToScreen(displayMessages.connIdle + " " + parseFloat(
                clientResults.waitsec).toFixed(2) + " " +
            displayMessages.seconds + " (" + parseFloat(percIdleTime).toFixed(
                2) + ") " + displayMessages.pctOfTime, 'resultstext');
    } else if (clientResults.DupAcksIn > 0) {
        // No packet loss, but packets arrived out-of-order.
        var percOrder = (clientResults.order * 100);
        writeToScreen(displayMessages.noPktLoss1 + " - " + displayMessages.ooOrder +
            " " + parseFloat(percOrder).toFixed(2) + displayMessages.pctOfTime,
            'resultstext');

    } else {
        // No packet retransmissions found.
        writeToScreen(displayMessages.noPktLoss2, 'resultstext');
    }

    //Packet Queuing Results
    // Add packet queueing details found during C2S throughput test.
    if (clientResults.clientDerivedUploadSpd > clientResults.serverDerivedUploadSpd) {
        var c2sQueue = (clientResults.clientDerivedUploadSpd -
            clientResults.serverDerivedUploadSpd) / clientResults.clientDerivedUploadSpd;
        writeToScreen(displayMessages.c2s + " " + displayMessages.qSeen +
            ": " + parseFloat(c2sQueue * 100).toFixed(2) + "%",
            'resultstext');
    }

    // Add packet queueing details found during S2C throughput test.
    //server send data as mb/s and client stores data in kb/s  it Must be converted before a comparison is possible
    if (clientResults.spd > (clientResults.clientDerivedDownloadSpd / 1000)) {
        var s2cQueue = (clientResults.spd - (clientResults.clientDerivedDownloadSpd /
            1000)) / clientResults.spd;
        writeToScreen(displayMessages.s2c + " " + displayMessages.qSeen +
            ": " + parseFloat(s2cQueue * 100).toFixed(2) + "%",
            'resultstext');
    }

    // Max rcvd window size lesser than TCP's max value, so no scaling requested.
    if (clientResults.MaxRwinRcvd < TCP_MAX_RECV_WIN_SIZE || clientResults.WinScaleRcvd >
        TCP_MAX_WINSCALERCVD) {
        writeToScreen("RFC 1323 Window Scaling:" + displayMessages.off,
            'resultstext');
    } else {
        writeToScreen("RFC 1323 Window Scaling:" + displayMessages.on +
            "; " + displayMessages.scalingFactors + " - " +
            displayMessages.server + "=" + clientResults.WinScaleRcvd +
            ", " + displayMessages.client + "=" + clientResults.WinScaleSent,
            'resultstext');
    }

    //Throughput Limiting Results

    // 1) Theoretical network limit.
    writeToScreen(displayMessages.theoreticalLimit + " " + parseFloat(
        clientResults.bw).toFixed(2) + " Mbps", 'resultstext');

    // 2) NDT server buffer imposed limit.
    // Divide by 2 to counter round-trip.
    var ndtServerBuffer = (clientResults.Sndbuf / (2 * KBITS2BITS));
    var ndtServerLimit = (clientResults.swin / clientResults.rttsec);
    writeToScreen(displayMessages.ndtServerHas + " " + parseFloat(
            ndtServerBuffer).toFixed(2) + " " + displayMessages.kbyteBufferLimits +
        " " + parseFloat(ndtServerLimit).toFixed(2) + " Mbps",
        'resultstext');

    // PC buffer imposed throughput limit.
    var pcReceiverBuffer = (clientResults.MaxRwinRcvd / KBITS2BITS);
    var pcLimit = (clientResults.rwin / clientResults.rttsec);
    writeToScreen(displayMessages.yourPcHas + " " + parseFloat(
            pcReceiverBuffer).toFixed(2) + " " + displayMessages.kbyteBufferLimits +
        " " + parseFloat(pcLimit).toFixed(2) + " Mbps", 'resultstext');

    // Network based flow control limit imposed throughput limit.
    var networkLimit = (clientResults.cwin / clientResults.rttsec);
    writeToScreen(displayMessages.flowControlLimits + " " + parseFloat(
        networkLimit).toFixed(2) + " Mbps", 'resultstext');

    // Client and server data reports on link capacity.
    if (clientResults.c2sData != null) {
        writeToScreen(displayMessages.clientDataReports, 'resultstext');
        displayDetectedLineSpeed(clientResults.c2sData);
    }
    if (clientResults.c2sAck != null) {
        writeToScreen(displayMessages.clientAcksReport, 'resultstext');
        displayDetectedLineSpeed(clientResults.c2sAck);
    }
    if (clientResults.s2cData != null) {
        writeToScreen(displayMessages.serverDataReports, 'resultstext');
        displayDetectedLineSpeed(clientResults.s2cData);
    }
    if (clientResults.s2cAck != null) {
        writeToScreen(displayMessages.serverAcksReport, 'resultstext');
        displayDetectedLineSpeed(clientResults.s2cAck);
    }

}

/**
 * Description Parse data and store results to the  matching web100 variables
 * for later processing
 * @method getResults
 * @param {} data Raw data(String) from the message stream
 * @return
 */
function getResults(data) {

    //split message data into an array for easier searching and value assignment
    var resultArray = data.split(/[ ,\n]+/);
    var resultOffset = null;

    for (resultOffset = 0; resultOffset < resultArray.length; resultOffset++) {
        //find the occurence of the string and set the corresponding value in the object
        if (resultArray[resultOffset].indexOf("CurMSS") > -1) {
            clientResults.CurMSS = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("X_Rcvbuf") > -1) {
            clientResults.X_Rcvbuf = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("X_Sndbuf") > -1) {
            clientResults.X_Sndbuf = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("AckPktsIn") > -1) {
            clientResults.AckPktsIn = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("AckPktsOut") > -1) {
            clientResults.AckPktsOut = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("BytesRetrans") > -1) {
            clientResults.BytesRetrans = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("CongAvoid") > -1) {
            clientResults.CongAvoid = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("CongestionOverCount") > -1) {
            clientResults.CongestionOverCount = resultArray[resultOffset +
                1];
        }
        if (resultArray[resultOffset].indexOf("CongestionSignals") > -1) {
            clientResults.CongestionSignals = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("CountRTT") > -1) {
            clientResults.CountRTT = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("CurCwnd") > -1) {
            clientResults.CurCwnd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("CurRTO") > -1) {
            clientResults.CurRTO = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("CurRwinRcvd") > -1) {
            clientResults.CurRwinRcvd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("CurRwinSent") > -1) {
            clientResults.CurRwinSent = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("CurSsthresh") > -1) {
            clientResults.CurSsthresh = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("DSACKDups") > -1) {
            clientResults.DSACKDups = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("DataBytesIn") > -1) {
            clientResults.DataBytesIn = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("DataBytesOut") > -1) {
            clientResults.DataBytesOut = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("DataPktsIn") > -1) {
            clientResults.DataPktsIn = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("DataPktsOut") > -1) {
            clientResults.DataPktsOut = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("DupAcksIn") > -1) {
            clientResults.DupAcksIn = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("ECNEnabled") > -1) {
            clientResults.ECNEnabled = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("FastRetran") > -1) {
            clientResults.FastRetran = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MaxCwnd") > -1) {
            clientResults.MaxCwnd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MaxMSS") > -1) {
            clientResults.MaxMSS = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MaxRTO") > -1) {
            clientResults.MaxRTO = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MaxRTT") > -1) {
            clientResults.MaxRTT = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MaxRwinRcvd") > -1) {
            clientResults.MaxRwinRcvd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MaxRwinSent") > -1) {
            clientResults.MaxRwinSent = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MaxSsthresh") > -1) {
            clientResults.MaxSsthresh = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MinMSS") > -1) {
            clientResults.MinMSS = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MinRTO") > -1) {
            clientResults.MinRTO = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MinRTT") > -1) {
            clientResults.MinRTT = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MinRwinRcvd") > -1) {
            clientResults.MinRwinRcvd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("MinRwinSent") > -1) {
            clientResults.MinRwinSent = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("NagleEnabled") > -1) {
            clientResults.NagleEnabled = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("OtherReductions") > -1) {
            clientResults.OtherReductions = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("PktsIn") > -1) {
            clientResults.PktsIn = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("PktsOut") > -1) {
            clientResults.PktsOut = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("PktsRetrans") > -1) {
            clientResults.PktsRetrans = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("RcvWinScale") > -1) {
            clientResults.RcvWinScale = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SACKEnabled") > -1) {
            clientResults.SACKEnabled = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SACKsRcvd") > -1) {
            clientResults.SACKsRcvd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SendStall") > -1) {
            clientResults.SendStall = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SlowStart") > -1) {
            clientResults.SlowStart = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SampleRTT") > -1) {
            clientResults.SampleRTT = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SmoothedRTT") > -1) {
            clientResults.SmoothedRTT = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SndWinScale") > -1) {
            clientResults.SndWinScale = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SndLimTimeRwin") > -1) {
            clientResults.SndLimTimeRwin = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SndLimTimeCwnd") > -1) {
            clientResults.SndLimTimeCwnd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SndLimTimeSender") > -1) {
            clientResults.SndLimTimeSender = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SndLimTransRwin") > -1) {
            clientResults.SndLimTransRwin = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SndLimTransCwnd") > -1) {
            clientResults.SndLimTransCwnd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SndLimTransSender") > -1) {
            clientResults.SndLimTransSender = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SndLimBytesRwin") > -1) {
            clientResults.SndLimBytesRwin = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SndLimBytesCwnd") > -1) {
            clientResults.SndLimBytesCwnd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("ndLimBytesSender") > -1) {
            clientResults.ndLimBytesSender = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SubsequentTimeouts") > -1) {
            clientResults.SubsequentTimeouts = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("SumRTT") > -1) {
            clientResults.SumRTT = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("Timeouts") > -1) {
            clientResults.Timeouts = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("TimestampsEnabled") > -1) {
            clientResults.TimestampsEnabled = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("WinScaleRcvd") > -1) {
            clientResults.WinScaleRcvd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("WinScaleSent") > -1) {
            clientResults.WinScaleSent = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("DupAcksOut") > -1) {
            clientResults.DupAcksOut = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("StartTimeUsec") > -1) {
            clientResults.StartTimeUsec = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("Duration") > -1) {
            clientResults.Duration = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("c2sData") > -1) {
            clientResults.c2sData = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("c2sAck") > -1) {
            clientResults.c2sAck = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("s2cData") > -1) {
            clientResults.s2cData = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("s2cAck") > -1) {
            clientResults.s2cAck = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("half_duplex") > -1) {
            clientResults.half_duplex = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("link") > -1) {
            clientResults.link = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("congestion") > -1) {
            clientResults.congestion = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("bad_cable") > -1) {
            clientResults.bad_cable = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("mismatch") > -1) {
            clientResults.mismatch = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("spd") > -1) {
            //due to variables aspd and spd containing the same substring.
            //spd must be sent before aspd in order to map the value correctly
            //only assign if it has not been set.
            if (clientResults.spd == null) {
                clientResults.spd = resultArray[resultOffset + 1];
            }
        }
        if (resultArray[resultOffset].indexOf("bw") > -1) {
            clientResults.bw = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("loss") > -1) {
            clientResults.loss = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("avgrtt") > -1) {
            clientResults.avgrtt = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("waitsec") > -1) {
            clientResults.waitsec = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("timesec") > -1) {
            clientResults.timesec = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("order") > -1) {
            clientResults.order = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("rwintime") > -1) {
            clientResults.rwintime = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("sendtime") > -1) {
            clientResults.sendtime = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("cwndtime") > -1) {
            clientResults.cwndtime = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("rwin") > -1) {
            clientResults.rwin = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("swin") > -1) {
            clientResults.swin = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("cwin") > -1) {
            clientResults.cwin = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("rttsec") > -1) {
            clientResults.rttsec = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("Sndbuf") > -1) {
            clientResults.Sndbuf = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("aspd") > -1) {
            clientResults.aspd = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("CWND-Limited") > -1) {
            clientResults.CWND_Limited = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("minCWNDpeak") > -1) {
            clientResults.minCWNDpeak = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("maxCWNDpeak") > -1) {
            clientResults.maxCWNDpeak = resultArray[resultOffset + 1];
        }
        if (resultArray[resultOffset].indexOf("CWNDpeaks") > -1) {
            clientResults.CWNDpeaks = resultArray[resultOffset + 1];
        }

    }

}

redpajama_set_name: RedPajamaGithub


The EMBL Hamburg secretariat can arrange accommodation, ideally at the DESY guesthouse or at a local hotel.
You will be asked to pay your guesthouse / hotel bill before leaving Hamburg.
Guesthouse: Check out time is 10:30. You will be charged for an extra night if you do not return your key on time, unless notification has been given in advance to the Hostel Office.
Bills may be paid in cash (Euro), at the DESY Kasse (Building 6) or per money transfer (German Banking System). Payment with credit card is also possible.