Wednesday, September 30, 2020

Diffa: The Creative Community Funding the Fight Against HIV/Aids

Quietly feeding a love affair with interior design, I have over the years anticipated and looked forward to my European friends' visits with attendance to the DIFFA: Design Industries Foundation Fighting AIDS’ annual gala on their “must attend” New York City itinerary. The event never disappointed. Its meticulously curated dining environments were ALWAYS a feast for the eyes. One year, a presentation particularly stood out: a perfect assortment of artisanal cheese boards accessorized with mouth-watering pairings, displayed on wood panel trays on an antique Volkswagen Bug. This prompted whispers among our group about whether we should partake in tastings from the display. We decided to watch and take cues from other attendees. No one touched the presentation. As the evening progressed, we circled the event to appreciate the other sublimely displayed presentations, but would always return to the perfect cheese display, still untouched. The temptation was finally too much. “Why would they put this out unless it was meant for tasting?” All agreed and pounced. A wine tray miraculously appeared. Perfection!

What a beautiful and attention-grabbing event to help address such serious health and social woes. “Since 1984 DIFFA (Design Industries Foundation Fighting AIDS) has raised awareness and provided funds to organizations that provide treatment, direct care services, preventive education programs and advocacy for individuals impacted by HIV/AIDS. To date, DIFFA has mobilized the resources and creative canvas of the design community to grant more than $46 million to fight AIDS nationwide – making it one of the largest funders of HIV/AIDS services and education programs.”

Kudos to my friend Carlos Maldonado, who partnered with Walker Ridge in 2019 to curate a booth at DIFFA's fundraising event to focus attention on the organization's work using a display centered on Puerto Rico's environmental challenges. This led to an introduction and my subsequent conversation with DIFFA’s Executive Director Dawn Roberson. I wanted to learn more about DIFFA and the face behind the organization that used beauty in design to grapple with HIV/AIDS and homelessness. I was not disappointed. It turns out Dawn Roberson had been DIFFA's National Events Director since 2013. In a press release announcing her appointment as Executive Director in 2018, the organization's Board Chair cited Roberson's “boundless energy, passion and knowledge” in leading DIFFA's charge against HIV/AIDS and homelessness. Her efforts and contributions are credited for DIFFAS's growth “in both measurable and immeasurable ways.”

A pleasurable knowledge-filled talk ensued. Roberson was exceptionally gracious with her time and I felt like we could've conversed all day. She schooled me on some of the issues that DIFFA continues to address, and the fundraising challenges, especially in this time of a global pandemic, as we sit front row to the challenges of managing the health of the world now fully on display.

I understood very well what some of Roberson's fundraising challenges would look like, especially in light of the economic hemorrhaging brought on by the pandemic. I approached Ms. Roberson with more questions on how to do my part in helping to steer additional attention to DIFFA’s ongoing work, its goals and its fundraising activities for this worthy cause deserving of profound admiration. I found her answers deeply sobering.

Q. I would imagine in this time of a global pandemic, fundraising becomes a challenge. If I may ask, how is DIFFA faring?

A. With the loss of our major annual fundraising events in the spring and the fall, DIFFA has had to get very creative in adjusting our fundraising initiatives. As such, we are proud to announce DIFFA's first-ever Online Auction; visit us at https://e.givesmart.com/events/ioO/. As a means of drawing attention to the online event and in keeping up with our reputation for fabulous events, DIFFA has planned a launch party complete with drag performers, trivia games and testimonials from recent grantees regarding DIFFA's support for their programming over the years!

DIFFA has unique and highly-coveted designer items up for grabs in the DIFFA By Design (DBD) Auction. “An assortment of home furnishings and high-end home décor from leading names like Herman Miller, DDC, Studio TK, B&B Italia, and artwork from William Engel, Sarah Von Dreele and Rebecca Moses,” which the organization hopes will “bring in some much-needed revenue.”

Q. I have to proclaim ignorance. I did not know HIV/AIDS were still this prevalent. Can you provide some data about where we stand on infections?

A. Approximately 1.2 million people in the U.S. are living with HIV today. About 14 percent of them (1 in 7) don't know it and need testing. HIV continues to have a disproportionate impact on specific populations, particularly racial and ethnic minorities and gay and bisexual men.

An estimated 36,400 new HIV infections occurred in the United States in 2018, the latest year for which we have this statistic. But some other more recent statistics include:

· 25.4 million people accessed antiretroviral therapy in 2019

· 38.0 million people globally were living with HIV in 2019

· 690, 000 people died from AIDS-related illnesses in 2019

· 32.7 million people have died from AIDS-related illnesses since the start of the epidemic

Q. I remember at the height of the AIDS crisis, infections meant a short, cruel existence and swift death. Has the situation improved today?

A. With the drug regimens available today, AIDS no longer needs to be a death sentence. However, not everyone has access to these drugs, and they have side effects – many of the organizations DIFFA supports provide access to health care and treatment to those who cannot afford it. We have yet to fully understand the drugs’ long-term impact because the aging population with the disease is only now entering their twilight years. We’re seeing indications of possible early-onset dementia and other ailments as a result of taking these drugs over time.

These smaller events are dwarfed in comparison to our past well-known design events. Still, they allow us to fund some organizations working on the front lines amid the pandemic. DIFFA and its chapters have issued over $300,000 to organizations around the country fighting on the front lines and working through COVID-19. They serve many of the at-risk populations for HIV/AIDS – in the very same communities which have been disproportionately affected by COVID-19.

Q. What are some of the contemporary issues society faces with HIV/ AIDS today?

A. In the United States, where DIFFA's work is focused, access to health care, particularly in rural areas of the country, is scant, and many cannot get the tests and treatment they need. Furthermore, stigma against the disease and its perception as a “gay disease” persists.

Q. What are some of your goals for the organization?

A. Without our primary fundraising vehicle, we hope to continue to support the organizations who need our assistance the most. To be able to grant more funds each year to the organizations that need our help. We hope to see the number of infections going down among those in the inner cities and LGBTQ+ youth, and the homeless and other at-risk populations.

Q. Your Dining for DIFFA Design Challenge was a fun initiative where participants shared their creativity and design inspirations by posting their own dining experiences at home. Can we expect more like this?

A. Yes, we will be doing more of these fun design initiatives. However, our focus is on creating events that generate donations because that’s the lifeblood of our grant-making operations. Without funds, we cannot help those we exist to help.

Q. What do you want people to know about DIFFA?

A. For over 35 years, DIFFA has supported organizations that provide care, education and advocacy for individuals impacted by HIV/AIDS, and societal plights that directly affect new HIV/AIDS infections such as homelessness and substance abuse.

DIFFA independently raises ALL of the funds we grant to support nonprofits and service organizations. We are one of the few HIV/AIDS organizations that give unrestricted funds to service agencies in our community, providing necessities like utilities, transportation, hot meals and buddy programs to those in need.

AIDS is far from over, and with the current pandemic raging, our grantees need our help more than ever.

***

All images are compliments of DIFFA:

  1. 2019 Dining by Design concept by Gensler + Knoll + EversonBest in conjunction with Miller Blaker

  2. Dawn Roberson, Executive Director, DIFFA

  3. DIFFA 2020 Dining By Design Auction

  4. Benjamin Moore - DIFFA 2019

  5. Interior Design



from Hacker News https://ift.tt/3mZuamV

Canadian Man Arrested for Not Being a Terrorist

Canadian Man Arrested For Not Being A Terrorist

from the fake-it-til-you-make-it dept

Here in the United States, we're used to the FBI radicalizing terrorists in order to arrest terrorists. If you don't have any aspiring terrorist friends, the FBI can set you up with some. Don't have a plan to do some terror stuff? No problem, the FBI has all kinds of ideas. Low on cash and unable to pick up your own terrorist supplies? Petty cash has you covered, my man. Just looking for a little acceptance? The FBI can fill that void in your life, just before it arrests you and takes that life away.

A string of open net goals by the FBI's counterterrorism division has left us a bit jaded. We need something new to shake things up a bit. Fortunately, the Royal Canadian Mounted Police have stepped up to provide a new twist: arresting and charging someone for [checks news report] not being a terrorist.

A Canadian whose widely-publicized account of conducting executions for ISIS fueled public outrage and debate in the House of Commons has been charged with allegedly making it up.

Shehroze Chaudhry, 25, who has portrayed himself as a former ISIS member living freely in Canada, was charged with faking his involvement in the terrorist group.

Not only is it a crime to be a terrorist in Canada, it's also a crime to not be one -- not if you portray yourself as a terrorist. After invoking all sorts of small-t terror with his pretending to be Jihadist Public Enemy No. 1, Chaudhry found himself arrested on the more seldom-used charge of "terrorism hoax."

The RCMP apparently doesn't take kindly to being duped, although it seems any investigation would have discovered Chaudry's lack of terrorism and allowed the agency to drop him as a suspect and quit wasting tax dollars on him. There's a hint of bitterness in this statement:

“Hoaxes can generate fear within our communities and create the illusion there is a potential threat to Canadians, while we have determined otherwise,” said stated Superintendent Christopher deGale, who heads the Toronto INSET.

“As a result, the RCMP takes these allegations very seriously, particularly when individuals, by their actions, cause the police to enter into investigations in which human and financial resources are invested and diverted from other ongoing priorities.”

I understand things like hoax bomb threats and hoax 911 calls can be taxing on a system that often portrays itself as overstretched. But Chaudry's faux terrorism was apparently limited to shitposting on a number of social media accounts, talking a good terrorist game while never actually being involved with any terrorism group.

The hoax charge hasn't been used often, but it appears prosecutors think this time it will stick. After all, not many faux terrorists end up the subject of multiple news reports and podcasts reaching large audiences.

[T]he Crown may intend to argue that, because the hoax was so widespread and was featured on a popular podcast, it created fear that Canadian ISIS members were “returning and running around,” and that police were powerless to stop them.

Implicit in that argument is that Chaudry is being punished for making law enforcement look inept. Moving forward with a prosecution on these charges, however, won't make them look any less inept. In fact, it will compound the perceived ineptness. First, the RCMP can't take down real terrorists. Second, the RCMP has to resort to arresting fake terrorists. Adding these two negatives together won't make them a positive.

But it could be an easy win for the Crown. The best defense against charges of fake terrorism is evidence you're a real terrorist. Either way, Chaudry is probably screwed. But fake terrorism is only five years in prison. Actual terrorism usual nets a person a whole lot more time behind bars. The best choice may be to agree to be the guy who didn't actually do anything.

Hide this

Thank you for reading this Techdirt post. With so many things competing for everyone’s attention these days, we really appreciate you giving us your time. We work hard every day to put quality content out there for our community.

Techdirt is one of the few remaining truly independent media outlets. We do not have a giant corporation behind us, and we rely heavily on our community to support us, in an age when advertisers are increasingly uninterested in sponsoring small, independent sites — especially a site like ours that is unwilling to pull punches in its reporting and analysis.

While other websites have resorted to paywalls, registration requirements, and increasingly annoying/intrusive advertising, we have always kept Techdirt open and available to anyone. But in order to continue doing so, we need your support. We offer a variety of ways for our readers to support us, from direct donations to special subscriptions and cool merchandise — and every little bit helps. Thank you.

–The Techdirt Team

Filed Under: canada, hoax, isis, rcmp, shehroze chaudhry, terrorism, terrorism hoax



from Hacker News https://ift.tt/30m2r5W

Data61 and Monash claim quantum-safe and privacy-preserving blockchain protocol

The Commonwealth Scientific and Industrial Research Organisation's (CSIRO) Data61 has announced alongside the Monash Blockchain Technology Centre a blockchain protocol they claim is secure against quantum computers while also protecting the privacy of its users and their transactions.

The protocol, MatRiCT, is patented by CSIRO and now licensed to Australian cryptocurrency developer HCash.

Hcash will be incorporating the protocol into its own systems and transforming its existing cryptocurrency, HyperCash, into one that is claimed to be quantum safe and privacy protecting, but according to Data61, the technology could be applied to more than cryptocurrencies.

It highlighted potential applications such as digital health, banking, finance, and government services, as well as services which may require accountability to prevent illegal use.

Data61 researchers said blockchain-based cryptocurrencies like Bitcoin and Ethereum are vulnerable to attacks by quantum computers, as they are capable of performing complex calculations and processing substantial amounts of data to break blockchains.

"Quantum computing can compromise the signatures or keys used to authenticate transactions, as well as the integrity of blockchains themselves," research fellow at Monash University and Data61's Distributed Systems Security Group Dr Muhammed Esgin said.

"Once this occurs, the underlying cryptocurrency could be altered, leading to theft, double spend or forgery, and users' privacy may be jeopardised.

"Existing cryptocurrencies tend to either be quantum-safe or privacy-preserving, but for the first time our new protocol achieves both in a practical and deployable way." 

See also: How blockchain will disrupt business (ZDNet/TechRepublic special feature) | Download the free PDF version (TechRepublic)

MatRiCT is based on "hard lattice problems", which are quantum secure, and introduces three features: The shortest quantum-secure ring signature scheme to date, which Data61 said authenticates activity and transactions using only the signature; a zero-knowledge proof method, which it said hides sensitive transaction information; and an auditability function, which is touted as helping prevent illegal cryptocurrency use.

"The protocol is designed to address the inefficiencies in previous blockchain protocols such as complex authentication procedures, thereby speeding up calculation efficiencies and using less energy to resolve, leading to significant cost savings," Monash University quantum-safe cryptography expert Associate Professor Ron Steinfeld said.

"Our new protocol is significantly faster and more efficient, as the identity signatures and proof required when conducting transactions are the shortest to date, thereby requiring less data communication, speeding up the transaction processing time, and reducing the amount of energy required to complete transactions."

RELATED COVERAGE

University of South Australia says blockchain at odds with privacy obligations

Asks for more work to be done to ensure the technology conforms to privacy rights and expectations.

Australia to focus on blockchain potential with new roadmap

Blockchain offers the nation jobs and growth, the government has said.

How the industry expects to secure information in a quantum world

With all of the good a quantum computer promises, one of the side effects is that it will be able to break the mechanisms currently used to secure information. But the industry is onto it, and Australia's QuintessenceLabs is playing a key role.

Australia's ambitious plan to win the quantum race

Professor Michelle Simmons thinks Australia has what it takes to be the first to the finish line in the international quantum computing race.



from Latest Topic for ZDNet in... https://ift.tt/3jjWL42

Words from Old Books

Words from Old Books

Books from a gentler age.

Thank you


Script font is Origins by Laura Worthington; ornaments from P22 1722 by Ted Staunton; Cone of Silence font by doodle_lee_do, used by kind permission.

DO NOT TRY TO DOWNLOAD THIS SITE: ask first. There are multiple gigabytes.

Contact: mail

slave

at fromoldbooks

dot

org, mentioning the colour of your socks in the subject.



from Hacker News https://ift.tt/2GpgErz

Irish Court Says Subway Bread Is Too Sugary to Be Called 'Bread'

View image

Irish Court Says Subway Bread Is Too Sugary to Be Called 'Bread'

this link is to an external site that may or may not meet accessibility guidelines.



from Hacker News https://ift.tt/3kYLeHJ

D-Wave Announces General Availability of First Quantum Computer for Business



from Hacker News https://ift.tt/33gJdk3

Ontario doctors sign letter to Premier advising against sweeping lockdowns

Ontario doctors sign letter to Premier advising against sweeping lockdowns

Published Sept. 30, 2020 9:40 a.m. ET

Updated Sept. 30, 2020 7:26 p.m. ET

Click to Expand

OTTAWA -- Twenty-one Ontario doctors have signed a joint letter to Premier Doug Ford, urging him not to issue a new lockdown this fall because of rising COVID-19 case numbers.

Daily numbers of new cases have risen dramatically in recent days, with Ontario recording 700 new cases of COVID-19 on Monday – the highest number of new cases recorded in a single day.

However, the 21 doctors who signed the letter to the premier say another provincewide lockdown—similar to what was in place in the spring—would not be helpful.

"We are writing this letter in support of the governments’ plan to use a tactical localized approach, rather than sweeping new lockdown measures, to deal with the increasing COVID case numbers in Ontario," the letter says. 

"Lockdowns have been shown not to eliminate the virus. While they slow the spread of the virus, this only lasts as long as the lockdown lasts. This creates a situation where there is no way to end the lockdown, and society cannot move forward in vitally important ways including in the health sector, the economy and other critically important instrumental goods including education, recreation, and healthy human social interactions."

Speaking on Newstalk 580 CFRA's "The Morning Rush with Bill Carroll" in Ottawa, CTV's infectious disease specialist Dr. Neil Rau—a signatory of the letter—pointed to two data points to consider when looking at the spread of COVID-19.

"We're reacting to increased aggregate case numbers, but the percentage positive is not really as bad as it used to be," he said. "We're testing more people, so we're finding more cases […] We're driving our numbers up, it's worse than it was in the summer, but it's not what it was last winter and life has to go on."

Monday's 700 cases in Ontario came from 41,111 total tests, for a positive percentage rate of 1.7 per cent. On April 24, the previous watermark of 640 new cases in a single day, the result came from 12,295 tests, for a positive percentage rate of 5.2 per cent.

Testing capacity was lower in the spring than it is now, and testing criteria has changed over time; however, Dr. Rau and the other signatories of the letter said the increasing case numbers are not leading to unmanageable levels of hospitalizations.

"In Ontario and other parts of the world, such as the European Union, increasing case loads are not necessarily translating into unmanageable levels of hospitalizations and ICU admissions," the letter says.

The letter also points to other health impacts linked to the lockdown.

"Hard data now exist showing the significant negative health effects shutting down society has caused. Overdoses have risen 40% in some jurisdictions. Extensive morbidity has been experienced by those whose surgery has been cancelled, and the ramifications for cancer patients whose diagnostic testing was delayed has yet to be determined," the letter states.

"Economic harms are health harms," Dr. Rau told CFRA. "It sounds horrible to say, but it's true. Health is wealth. We all know this."

LETTER POINTS TO DISAGREEMENT AMONG HEALTH PROFESSIONALS

Other Ontario health professionals have been arguing for increased restrictions as cases rise.

Last week, the Ontario Hospital Association released a letter signed by 38 health professionals which called for immediate restrictions to be re-imposed on non-essential businesses, such as gyms, dine-in restaurants and bars, nightclubs, and theatres. It also calls on restrictions on other places where people can gather, such as places of worship.

The letter from the OHA said regions where the speed of transmission was underestimated are “now facing the consequence of increased hospitalization rates, including a rise in intensive care unit (ICU) admissions and more deaths.”

Hospitalizations in Ontario have been increasing, but have not yet reached the same level that was seen in the spring.

According to data from the Ontario government, there were 128 people in hospital in Ontario with COVID-19 complications on Monday—the day 700 new cases were recorded—up from 65 a week before; however, on April 24—when 640 new cases were recorded—government data shows that there were 910 people in hospital. The peak for hospitalizations in Ontario came in May, when there were days when more than 1,000 people were hospitalized. That number steadily decreased from May through the summer before it began going up again in September.

Speaking on CTV Morning Live Ottawa, infectious disease specialist Dr. Abdu Sharkawy suggested temporary restrictions on gathering would help curb the spread of COVID-19

"We don't want to see our hospitals overwhelmed," he said. "We're still waiting for flu season and a whole bunch of other respiratory viruses to hit us and our capacity to be challenged. We don't want that to happen. We need everybody to try and simplify their lives and minimize anything that's non-essential."

Dr. Sharkawy said regions where cases are rapidly rising may need to impose new restrictions to get the spread of the virus under control.

"I think it's abundantly clear that, particularly in hot spots like Ottawa, Toronto and Peel region, the situation is not well controlled," he said. "Sometimes you need blunt instruments, even if they're temporary in nature, to make sure that you curtail the spread of this virus because it gets away from us a lot more quickly than many of us can anticipate sometimes."

Dr. Sharkawy suggested hot spots follow the lead of Quebec, which imposed harsh restrictions on three areas in the province, including Montreal and Quebec City, banning private gatherings and closing bars and restaurant dining rooms.

"I think we should do it now," Dr. Sharkawy said of Ontario. "I think we all need to adopt an attitude and an approach that recognizes that we have to do what's absolutely necessary to keep everybody safe."

FULL LETTER FROM ONTARIO DOCTORS TO THE PREMIER

Dear Premier Ford,

We are writing this letter in support of the governments’ plan to use a tactical localized approach, rather than sweeping new lockdown measures, to deal with the increasing COVID case numbers in Ontario. Lockdowns have been shown not to eliminate the virus. While they slow the spread of the virus, this only lasts as long as the lockdown lasts. This creates a situation where there is no way to end the lockdown, and society cannot move forward in vitally important ways including in the health sector, the economy and other critically important instrumental goods including education, recreation, and healthy human social interactions.

In Ontario the increase in cases at this time are in people under 60 years of age who are unlikely to become very ill. At the peak of the pandemic in Ontario in mid-April, 56% of cases were in ≥60 year olds, now in Sept only 14% of cases are in ≥60 year olds. In Ontario and other parts of the world, such as the European Union, increasing case loads are not necessarily translating into unmanageable levels of hospitalizations and ICU admissions. This is not a result of a lag in reporting of severe and fatal cases. While we understand the concerns that these cases could spill into vulnerable communities, we also need to balance the actual risk. As the virus circulates at manageable levels within the community, we need to continue the gains we have made in the protection of the vulnerable in long-term care and retirement institutions, and continue to educate other people about their individual risk, so that they can observe appropriate protective measures.

Lockdowns have costs that have, to this point, not been included in the consideration of further measures. A full accounting of the implications on health and well-being must be included in the models, and be brought forward for public debate. Hard data now exist showing the significant negative health effects shutting down society has caused. Overdoses have risen 40% in some jurisdictions. Extensive morbidity has been experienced by those whose surgery has been cancelled, and the ramifications for cancer patients whose diagnostic testing was delayed has yet to be determined. A huge concern is the implication of closure of schools, and the ongoing reluctance we have seen in the large urban centers of sending children back to the classroom due to safety concerns. Global data clearly now show that children have an extremely low risk of serious illness, but they are disproportionately harmed by precautions. Children’s rights to societal care, mental health support and education must be protected. This cannot be achieved with ongoing or rotating lockdown.

The invitation and involvement of other health experts to advise the government’s response beside individuals in Public Health and Infectious Diseases in addition to leaders in the business, securities and arts communities is essential. We also call for increased open debate, in the public forum, that hears voices from outside the medical and public health communities, in order to consider all points of view from society. This is a fundamental principle upon which democratic societies are built. All stakeholders should have an equal right to participation in public discourse when it comes to setting such fundamental and sweeping societal interventions.

All have the right to feel their voices have been heard, and moreover to ensure factual credible data is openly debated, in contrast to the personal and political slants that have had apparent significant impacts on the management of the virus to date. Our society has borne enormous pain over the past 6 months. It’s time to do something different.

Sincerely,

Jane Batt MD, PhD, FRCPC. Respirologist, Associate Professor, Department of Medicine, University of Toronto

James Bain MD, MSc, FRCSC. Plastic Surgeon, Professor of Surgery, McMaster University

Mahin Baqi MD, FRCPC. Infection Prevention and Control and Infectious Diseases Physician

Marcus Bernardini MD, FRCPC. Gynecologic Oncologist, Associate Professor, University of Toronto

Sergio Borgia MD, MSc, FRCPC. Infection Prevention and Control and Infectious Diseases Physician, Assistant Clinical Professor, McMaster University

Peter Cox, MBChB, FRCPC, DCH(SA), FFARCS. Critical Care Physician, Professor, Department of Anaesthesia, University of Toronto

James D. Douketis, MD, FRCPC, FCAHS. Haematologist, Professor of Medicine, McMaster University

Philippe El-Helou, MD, FRCPC. Infectious Diseases Physician, Associate Professor, Department of Medicine, McMaster University

Martha Fulford MD, FRCPC. Infectious Diseases Physician, Associate Professor, Department of Medicine, McMasterUniversity

Shariq Haider MD, FRCPC. Infectious Diseases Physician, Professor, Department of Medicine, McMaster University

Stephen Kravcik MD, FRCPC. General Internist, Associate Professor, Department of Medicine, University of Ottawa

Nicole Le Saux MD, FRCPC. Infectious Diseases Physician, Professor, Department of Pediatrics, University of Ottawa

Paul MacPherson PhD, MD, FRCPC. Infectious Diseases Physician, Associate Professor, Department of Medicine, University of Ottawa

Neil Rau MD, FRCPC. Infectious Diseases Physician and Medical Microbiologist, Assistant Professor, Department of Medicine, University of Toronto

Susan Richardson MD, FRCPC. Medical Microbiologist and Infectious Disease Physician, Professor Emerita, Department of Laboratory Medicine and Pathobiology, University of Toronto

Coleman Rotstein, MD, FRCPC, FACP, FIDSA. Professor of Medicine, Division of Infectious Diseases, University of Toronto, Attending Physician, University Health Network

Rob Sargeant MD, PhD, FRCPC. General Internist, Associate Professor, Department of Medicine, University of Toronto 

Nick Vozoris MD, MHSc, FRCPC. Respirologist, Assistant Professor, Department of Medicine, University of Toronto

Thomas Warren MD, FRCPC. Infectious Diseases Physician and Medical Microbiologist, Assistant Clinical Professor (Adjunct), Department of Medicine, McMaster University

Yvonne Yau, MD FRCPC. Medical Microbiologist, Assistant Professor, Department of Laboratory Medicine and Pathobiology, University of Toronto

George Yousef MD, PhD, FRCPC. Anatomic Pathologist, Professor, Department of Laboratory Medicine and Pathobiology, University of Toronto 



from Hacker News https://ift.tt/3n6ZBM0

3270font: A Font for the Nostalgic

3270font: A font for the nostalgic

Travis-CI

Screenshot

Sample

A little bit of history

This font is derived from the x3270 font, which, in turn, was translated from the one in Georgia Tech's 3270tool, which was itself hand-copied from a 3270 series terminal. I built it because I felt terminals deserve to be pretty. The .sfd font file contains a x3270 bitmap font that was used for guidance.

Using with the cool-old-tern (now cool-retro-term) terminal program

Getting it

If you are running Debian or Ubuntu and you don't want to mess with building your font files, you can simply apt-get install fonts-3270 (It's available from the Debian (https://packages.debian.org/sid/fonts/fonts-3270) and Ubuntu (http://packages.ubuntu.com/focal/fonts-3270) package repos at https://packages.debian.org/sid/fonts/fonts-3270 and https://packages.ubuntu.com/focal/fonts/fonts-3270, although the packaged version may not be the latest version, but it's good enough for most purposes.

On FreeBSD the font can be installed with pkg install 3270font.

For those who don't have the luxury of a proper system-managed package, Adobe Type 1, TTF, OTF and WOFF versions are available for download on https://3270font.s3.amazonaws.com/3270_fonts_fba25eb.zip (although this URL may not always reflect the latest version).

ASCII is so 60's

The format

The "source" file is edited using FontForge. You'll need it if you want to generate fonts for your platform. On most civilized operating systems, you can simply apt-get install fontforge, yum install fontforge or even port install fontforge. On others, you may need to grab your copy from https://fontforge.org/. I encourage you to drop by and read the tutorials.

Using it on OSX (don't forget to turn antialiasing on)

If you are running Windows, you'll probably need something like WSL or Cygwin, but, in the end, the font works correctly (with some very minor hinting issues).

Works on Windows

Generating usable font files

The easiest way to generate the font files your computer can use is to run make all (if you are running Ubuntu or Debian, make install will install them too). Using make help will offer a handy list of options.

The script generate_derived.pe calls FontForge and generates PostScript, OTF, TTF and WOFF versions of the base font, as well as a slightly more condensed .sfd file with the base font narrowed to 488 units, with no glyph rescaling (or cropping - we need to fix that) and its corresponding PostScript, TTF, OTF and WOFF versions.

For your favorite editor

Contributing

I fear GitHub's pull-request mechanism may not be very FontForge-friendly. If you want to contribute (there are a lot of missing glyphs, such as most non-latin alphabets which most likely were never built into 3270 terminals), the best workflow would probably be to add the encoding slots (if needed), add/make the changes, remove the unchanged glyphs and save it as a different file. If, in doubt, get in touch and we will figure out how to do it right.

In order to generate the sample image and the grids for FontForge, you'll need a Python 3 environment with PIL or pillow installed. The requirements.txt file lists everything you need to do it.

Screenshots

xterm

Gnome Terminal

Konsole

Terminator

Known problems

Not all symbols in the 3270 charset have Unicode counterparts. When possible, they are duplicated in the Unicode space. The 3270-only symbols are at the end of the font, along with some glyphs useful for building others.

Please refer to http://x3270.bgp.nu/Charset.html for a complete map.

Future improvements

A grid generator is provided for producing various grid sizes for the font. Those grids are not used yet, but they are intended to be used to align font features to provide better rendering at common font size choices. The captures below exemplify these choices:

x3270 with 32 pixel font (used as bitmap template for the font)

x3270 with 20 pixel font

Gnome Terminal on Ubuntu 17.10



from Hacker News https://ift.tt/2hTiC2S

Industrial Literacy

Industrial literacy

I’ve said before that understanding where our modern standard of living comes from, at a basic level, is a responsibility of every citizen in an industrial civilization. Let’s call it “industrial literacy.”

Industrial literacy is understanding…

  • That the food you eat is grown using synthetic fertilizers, and that this is needed for agricultural productivity, because all soil loses its fertility naturally over time if it is not deliberately replenished. That before we had modern agriculture, more than half the workforce had to labor on farms, just to feed the other half. That if synthetic fertilizer was suddenly lost, a mass famine would ensue and billions would starve.

  • That those same crops would not be able to feed us if they were not also protected from pests, who will ravage entire fields if given a chance. That whole regions used to see seasons where they would lose large swaths of their produce to swarms of insects, such as boll weevils attacking cotton plants in the American South, or the phylloxera devouring grapes in the vineyards of France. That before synthetic pesticides, farmers were forced to rely on much more toxic substances, such as compounds of arsenic.

  • That before we had electricity and clean natural gas, people burned unrefined solid fuels in their homes—wood, coal, even dung (!)—to cook their food and to keep from freezing in winter. That these primitive fuels, dirty with contaminants, created toxic smoke: indoor air pollution. That indoor air pollution remains a problem today for 40% of the world population, who still rely on pre-industrial fuels.

  • That before twentieth-century appliances, housework was a full-time job, which invariably fell on women. That each household would spend almost 60 hours a week on manual labor: hauling water from the well for drinking and cooking, and then carrying the dirty water outside again; sewing clothes by hand, since store-bought ones were too expensive for most families; laundering clothes in a basin, scrubbing laboriously by hand, then hanging them up to dry; cooking every meal from scratch. That the washing machine, clothes dryer, dishwasher, vacuum cleaner, and microwave are the equivalent of a full-time mechanical servant for every household.

  • That plastics are produced in enormous quantities because, for so many purposes—from food containers to electrical wire coatings to children’s toys—we need a material that is cheap, light, flexible, waterproof, and insulating, and that can easily be made in any shape and color (including transparent!) That before plastic, many of these applications used animal parts, such as ivory tusks, tortoise shells, or whale bone. That in such a world, those products were a luxury for a wealthy elite, instead of a commodity for the masses, and the animals that provided them were hunted to near extinction.

  • That automobiles are a lifeline to people who live in rural areas (almost 20% in the US alone), and who were deeply isolated in the era before the car and the telephone. That in a world without automobiles, we relied on millions of horses, which in New York City around 1900 dumped a hundred thousand gallons of urine and millions of pounds of manure on the streets daily.

  • That half of everyone you know over the age of five is alive today only because of antibiotics, vaccines, and sanitizing chemicals in our water supply. That before these innovations, infant mortality (in the first year of life) was as high as 20%.

When you know these facts of history—which many schools do not teach—you understand what “industrial civilization” is and why it is the benefactor of everyone who is lucky enough to live in it. You understand that the electric generator, the automobile, the chemical plant, the cargo container ship, and the microprocessor are essential to our health and happiness.

This doesn’t require a deep or specialized knowledge. It only requires knowing the basics, the same way every citizen should know the outlines of history and the essentials of how government works.

Industrial literacy means understanding that the components of the global economy are not arbitrary. Each one is there for a reason—often a matter of life and death. The reasons are the immutable facts of what it takes to survive and prosper: the laws of physics, chemistry, biology, and economics that govern our daily existence.

With industrial literacy, you can see the economy as a set of solutions to problems. Then, and only then, are you informed enough to have an opinion on how those solutions might be improved.

A lack of industrial literacy (among other factors) is turning what ought to be economic discussions about how best to improve human health and prosperity into political debates fueled by misinformation and scare tactics. We see this on climate change, plastic recycling, automation and job loss, even vaccines. Without knowing the basics, industrial civilization is one big Chesterton’s Fence to some people: they propose tearing it down, because they don’t see the use of it.

Let’s recognize the value of industrial literacy and commit to improving it—starting with ourselves.

Comment on Reddit or debate me on Letter.

Social media link image credit: Wikimedia / Dori, CC BY-SA 3.0



from Hacker News https://ift.tt/3jl1wKK

Twitter removes 130 Iranian accounts for trying to disrupt the US Presidential Debate

debate.jpg
Image via CBS News YouTube channel

Social networking giant Twitter said today that it removed around 130 Iranian Twitter accounts for attempting to disrupt the public conversation during last night's first Presidential Debate for the US 2020 Presidential Election.

Twitter said it learned of the accounts following a tip from the US Federal Bureau of Investigations.

"We identified these accounts quickly, removed them from Twitter, and shared full details with our peers, as standard," the social network said today.

"They [the accounts] had very low engagement and did not make an impact on the public conversation," it added.

sample-tweets.png
Image: Twitter

Twitter said it plans to publish details about the removed accounts and their tweets on its Transparency portal's section for influence operations.

This marks the second time this month that Twitter has intervened to take down an influence operation on its website following an FBI tip. Twitter previously removed accounts tied to PeaceData, a news site that published misleading articles about world politics, which the FBI claimed was a Russian influence operation.

Developing story...



from Latest Topic for ZDNet in... https://ift.tt/3jjxbw1

NIST Pair of Atomic Clocks Reveal Einstein's Relativity at a Personal Scale

Comments

from Hacker News https://ift.tt/2ErjEOO

Congressional investigation shows Celgene, Teva plotted to keep drug prices high

WASHINGTON — The House Oversight Committee released two major reports Wednesday that expose the internal strategies used by drug makers Celgene and Teva to repeatedly jack up the price of their blockbuster drugs revlimid and copaxone.

The reports, which are the culmination of an 18-month investigation based on internal company documents, outline in vivid detail how both drug makers raised their prices at will and plotted to  keep lower-cost alternatives off the market.

The CEOs of Teva, which markets copaxone, and Celgene, which marketed revlimid until late 2019, will testify before the Oversight Committee this morning. The CEO of Bristol Myers Squibb, which acquired Celgene in Nov. 2019, will also testify, although the majority of the Oversight Committee’s report focuses on the behavior of Celgene prior to the acquisition.

advertisement

The reports detail a pattern of mercenary price hikes, particularly from Celgene, many of which were driven primarily by a desire to hit revenue goals for shareholders.

In one case, in March 2014, Celgene CEO Mark Alles, then an executive vice president for the company, demanded that the company immediately jack up the price of revlimid by 4% because the company had not met its first quarter sales goals. Alles was explicit about the strategy: An internal slide presented to the company’s drug pricing advisory board showed that the increase would yield $24 million in new net sales.

advertisement

“Can we take the increase tonight so that it impacts sales beginning tomorrow?” Alles asked in an internal email.

A number of the presentations made to Celgene’s pricing board that were obtained by the committee made similar reference to revenue targets, according to the report.

Both reports also attempt to refute the reasons drug makers often give to justify price hikes. The committee notes, for example, that both companies were not using increased revenues to pay for new clinical studies: Teva only spent $689 million on Copaxone-related research since 1987 — just 2% of the roughly $34 billion it took in net revenue for the drug over the last two decades, according to the report.

The reports are likely to reignite calls, particularly from Democrats, to pass substantial drug pricing reforms. In a Dear Colleague letter accompanying the report, Oversight Chairman Carolyn Maloney (D-N.Y.) emphasized the need to pass H.R. 3, House Democrats’ signature drug pricing bill, which would let Medicare negotiate directly with drug companies over the prices of their products.

“My hope is that these hearings and staff reports will shed additional light on this problem and spur the President and the Senate to finally act on H.R. 3,” Maloney wrote.

The report, and the high-profile hearings, will also give Democrats an opportunity to show themselves the party most serious about lowering drug prices ahead of the November election. Recent polling from the Kaiser Family Foundation has shown that voters believe Trump is more serious about lowering drug prices than Biden. While Trump has made lowering prices a signature initiative of his first term, and has rolled out at least half a dozen policies to achieve that goal, he’s struggled to enact lasting reforms.

“As the November election draws near, President Trump is scrambling to create the impression that he is addressing a problem he has failed to take on for the past four years,” Maloney wrote.

The reports also provide the clearest substantiation to date that both companies engaged in anticompetitive behavior to keep competitors off the market.

Among the most striking revelations: Teva launched a new, more potent version of copaxone as part of what they dubbed a coordinated “generic defense strategy.” The strategy, according to internal powerpoints, included contracting with middlemen to block generics’ market access and aggressive campaigns to lobby both doctors and patients to stay on the more expensive version of the drug.

The strategy stands out because 55% of Teva’s 2019 revenues came from selling generic drugs. This wasn’t lost on company executives: Internal documents obtained by the committee show that an executive suggested scrubbing the words “barrier to generic entrance” from an internal powerpoint discussing the strategy because “we don’t want to be seen as ‘creating’ barriers to generics as this is Teva’s core business.”

Executives privately admitted that the more potent version of copaxone would not work better or be markedly more convenient, the investigation shows.

The report also notes that Celgene referred to an FDA-mandated safety system for revlimid as a way to prevent “generic encroachment.” Celgene has been repeatedly accused of using REMS programs to prevent generic competitors to Revlimid, but the report doesn’t provide much new evidence substantiating that claim.

The reports also contain a fair bit of embarrassing dirt. In one case, the committee obtained internal Teva documents showing that when its own employee couldn’t afford copaxone, the company pulled strings to get her free samples.

In another, Celgene executives boasted about how their high price would keep competitors from developing new treatments. In one particular case, Jansen had asked to buy samples of revlimid at a discount to use in a major cancer clinical trial they were running. Celgene officials urged against the sale, though the report does not make it clear whether the deal was eventually refused.

“[M]aking them spend a lot more on their trials puts financial constraints on their ability to simultaneously fund lots of trials,” one executive wrote in an email.

“Anything we can do to hamper their development would help,” another executive added.



from Hacker News https://ift.tt/3kXm0cP

Security Bulletin: Open Source Apache Tomcat vulnerabilities affect IBM Tivoli Application Dependency Discovery Manager (CVE-2020-13935)

Sep 30, 2020 8:00 pm EDT

Categorized: Medium Severity

Share this post:

Multiple vulnerabilities in Open Source Apache Tomcat reported by The Apache Software Foundation affect IBM Tivoli Application Dependency Discovery Manager (TADDM)

Affected product(s) and affected version(s):

Affected Product(s) Version(s)
IBM Tivoli Application Dependency Discovery Manager 7.3.0.0

Refer to the following reference URLs for remediation and additional vulnerability details:  
Source Bulletin: https://www.ibm.com/support/pages/node/6339627



from IBM Product Security Incident Response Team https://ift.tt/36sDtWi

Security Bulletin: IBM Cloud Pak System is affected by a vulnerability in VMware component

Sep 30, 2020 8:00 pm EDT

Categorized: Low Severity

Share this post:

A vulnerability is reported in the VMWare component, and this component is used by IBM Cloud Pak System. IBM Cloud Pak System addressed applicable CVE.

Affected product(s) and affected version(s):

Affected Product(s) Version(s)
IBM Cloud Pak System v2.2.6, v2.3.0.1,  v2.3.1.1, v2.3.2.0

Refer to the following reference URLs for remediation and additional vulnerability details:  
Source Bulletin: https://www.ibm.com/support/pages/node/6329019



from IBM Product Security Incident Response Team https://ift.tt/3l2PndH

Security Bulletin: Vulnerability in IBM Java Runtime affect IBM Netcool Agile Service Manager

Sep 30, 2020 8:00 pm EDT

Categorized: Medium Severity

Share this post:

A vulnerability in IBM® Runtime Environment Java™ Version 8 used by IBM Netcool Agile Service Manager. IBM Netcool Agile Service Manager has addressed the applicable CVEs. This issue was disclosed as part of the IBM Java SDK updates in October 2019.

Affected product(s) and affected version(s):

Affected Product(s) Version(s)
IBM Netcool Agile Service Manager < 1.1.8

Refer to the following reference URLs for remediation and additional vulnerability details:  
Source Bulletin: https://www.ibm.com/support/pages/node/6339619



from IBM Product Security Incident Response Team https://ift.tt/3ifSvB1

Security Bulletin: App Connect Enterprise Certified Container is affected by multiple Node.js vulnerabilities

Sep 30, 2020 8:00 pm EDT

Categorized: Critical Severity

Share this post:

App Connect Enterprise Certified Container is vulnerable to CVE-2020-10531, CVE-2020-11080, CVE-2020-8174, CVE-2020-8172 in Node.js

Affected product(s) and affected version(s):

Affected Product(s) Version(s)
App Connect Enterprise Certified Container 1.0.0 with Operator
App Connect Enterprise Certified Container 1.0.1 with Operator
App Connect Enterprise Certified Container 1.0.2 with Operator

Refer to the following reference URLs for remediation and additional vulnerability details:  
Source Bulletin: https://www.ibm.com/support/pages/node/6339567



from IBM Product Security Incident Response Team https://ift.tt/3ihM6FH

Security Bulletin: A vulnerability in Netty affects IBM Netcool Agile Service Manager

Sep 30, 2020 8:00 pm EDT

Categorized: Medium Severity

Share this post:

A vulnerability in Netty used by IBM Netcool Agile Service Manager. IBM Netcool Agile Service Manager has addressed the CVE.

Affected product(s) and affected version(s):

Affected Product(s) Version(s)
IBM Netcool Agile Service Manager < 1.1.8

Refer to the following reference URLs for remediation and additional vulnerability details:  
Source Bulletin: https://www.ibm.com/support/pages/node/6339733



from IBM Product Security Incident Response Team https://ift.tt/30pBHBM

Security Bulletin: WebSphere Application Server is vulnerable to an information disclosure vulnerability (CVE-2020-4576)

Sep 30, 2020 8:00 pm EDT

Categorized: Medium Severity

Share this post:

WebSphere Application Server is vulnerable to an information disclosure vulnerability. This has been addressed.

Affected product(s) and affected version(s):

Affected Product(s) Version(s)
WebSphere Application Server 9.0
WebSphere Application Server 8.5
WebSphere Application Server 8.0
WebSphere Application Server 7.0

Refer to the following reference URLs for remediation and additional vulnerability details:  
Source Bulletin: https://www.ibm.com/support/pages/node/6339807



from IBM Product Security Incident Response Team https://ift.tt/3cI17iU

Security Bulletin: Vulnerability in Apache Commons Codec Affects IBM Sterling Secure Proxy

Sep 30, 2020 8:00 pm EDT

Categorized: High Severity

Share this post:

An Apache Commons Codec vulnerability for validating input was addressed by IBM Sterling Secure Proxy.

Affected product(s) and affected version(s):

Affected Product(s) Version(s)
IBM Secure Proxy 6.0.1 6.0.1
IBM Sterling Secure Proxy 3.4.3.2

Refer to the following reference URLs for remediation and additional vulnerability details:  
Source Bulletin: https://www.ibm.com/support/pages/node/6339801



from IBM Product Security Incident Response Team https://ift.tt/3jhOkWZ

An Elementary Introduction to Information Geometry [pdf]

Comments

from Hacker News https://ift.tt/2GloH99

Amazon Timestream is generally available

Time series are a very common data format that describes how things change over time. Some of the most common sources are industrial machines and IoT devices, IT infrastructure stacks (such as hardware, software, and networking components), and applications that share their results over time. Managing time series data efficiently is not easy because the data model doesn’t fit general-purpose databases.

For this reason, I am happy to share that Amazon Timestream is now generally available. Timestream is a fast, scalable, and serverless time series database service that makes it easy to collect, store, and process trillions of time series events per day up to 1,000 times faster and at as little as to 1/10th the cost of a relational database.

This is made possible by the way Timestream is managing data: recent data is kept in memory and historical data is moved to cost-optimized storage based on a retention policy you define. All data is always automatically replicated across multiple availability zones (AZ) in the same AWS region. New data is written to the memory store, where data is replicated across three AZs before returning success of the operation. Data replication is quorum based such that the loss of nodes, or an entire AZ, does not disrupt durability or availability. In addition, data in the memory store is continuously backed up to Amazon Simple Storage Service (S3) as an extra precaution.

Queries automatically access and combine recent and historical data across tiers without the need to specify the storage location, and support time series-specific functionalities to help you identify trends and patterns in data in near real time.

There are no upfront costs, you pay only for the data you write, store, or query. Based on the load, Timestream automatically scales up or down to adjust capacity, without the need to manage the underlying infrastructure.

Timestream integrates with popular services for data collection, visualization, and machine learning, making it easy to use with existing and new applications. For example, you can ingest data directly from AWS IoT Core, Amazon Kinesis Data Analytics for Apache Flink, AWS IoT Greengrass, and Amazon MSK. You can visualize data stored in Timestream from Amazon QuickSight, and use Amazon SageMaker to apply machine learning algorithms to time series data, for example for anomaly detection. You can use Timestream fine-grained AWS Identity and Access Management (IAM) permissions to easily ingest or query data from an AWS Lambda function. We are providing the tools to use Timestream with open source platforms such as Apache Kafka, Telegraf, Prometheus, and Grafana.

Using Amazon Timestream from the Console
In the Timestream console, I select Create database. I can choose to create a Standard database or a Sample database populated with sample data. I proceed with a standard database and I name it MyDatabase.

All Timestream data is encrypted by default. I use the default master key, but you can use a customer managed key that you created using AWS Key Management Service (KMS). In that way, you can control the rotation of the master key, and who has permissions to use or manage it.

I complete the creation of the database. Now my database is empty. I select Create table and name it MyTable.

Each table has its own data retention policy. First data is ingested in the memory store, where it can be stored from a minimum of one hour to a maximum of a year. After that, it is automatically moved to the magnetic store, where it can be kept up from a minimum of one day to a maximum of 200 years, after which it is deleted. In my case, I select 1 hour of memory store retention and 5 years of magnetic store retention.

When writing data in Timestream, you cannot insert data that is older than the retention period of the memory store. For example, in my case I will not be able to insert records older than 1 hour. Similarly, you cannot insert data with a future timestamp.

I complete the creation of the table. As you noticed, I was not asked for a data schema. Timestream will automatically infer that as data is ingested. Now, let’s put some data in the table!

Loading Data in Amazon Timestream
Each record in a Timestream table is a single data point in the time series and contains:

  • The measure name, type, and value. Each record can contain a single measure, but different measure names and types can be stored in the same table.
  • The timestamp of when the measure was collected, with nanosecond granularity.
  • Zero or more dimensions that describe the measure and can be used to filter or aggregate data. Records in a table can have different dimensions.

For example, let’s build a simple monitoring application collecting CPU, memory, swap, and disk usage from a server. Each server is identified by a hostname and has a location expressed as a country and a city.

In this case, the dimensions would be the same for all records:

Records in the table are going to measure different things. The measure names I use are:

  • cpu_utilization
  • memory_utilization
  • swap_utilization
  • disk_utilization

Measure type is DOUBLE for all of them.

For the monitoring application, I am using Python. To collect monitoring information I use the psutil module that I can install with:

Here’s the code for the collect.py application:

import time
import boto3
import psutil

from botocore.config import Config

DATABASE_NAME = "MyDatabase"
TABLE_NAME = "MyTable"

COUNTRY = "UK"
CITY = "London"
HOSTNAME = "MyHostname" # You can make it dynamic using socket.gethostname()

INTERVAL = 1 # Seconds

def prepare_record(measure_name, measure_value):
    record = {
        'Time': str(current_time),
        'Dimensions': dimensions,
        'MeasureName': measure_name,
        'MeasureValue': str(measure_value),
        'MeasureValueType': 'DOUBLE'
    }
    return record


def write_records(records):
    try:
        result = write_client.write_records(DatabaseName=DATABASE_NAME,
                                            TableName=TABLE_NAME,
                                            Records=records,
                                            CommonAttributes={})
        status = result['ResponseMetadata']['HTTPStatusCode']
        print("Processed %d records. WriteRecords Status: %s" %
              (len(records), status))
    except Exception as err:
        print("Error:", err)


if __name__ == '__main__':

    session = boto3.Session()
    write_client = session.client('timestream-write', config=Config(
        read_timeout=20, max_pool_connections=5000, retries={'max_attempts': 10}))
    query_client = session.client('timestream-query')

    dimensions = [
        {'Name': 'country', 'Value': COUNTRY},
        {'Name': 'city', 'Value': CITY},
        {'Name': 'hostname', 'Value': HOSTNAME},
    ]

    records = []

    while True:

        current_time = int(time.time() * 1000)
        cpu_utilization = psutil.cpu_percent()
        memory_utilization = psutil.virtual_memory().percent
        swap_utilization = psutil.swap_memory().percent
        disk_utilization = psutil.disk_usage('/').percent

        records.append(prepare_record('cpu_utilization', cpu_utilization))
        records.append(prepare_record(
            'memory_utilization', memory_utilization))
        records.append(prepare_record('swap_utilization', swap_utilization))
        records.append(prepare_record('disk_utilization', disk_utilization))

        print("records {} - cpu {} - memory {} - swap {} - disk {}".format(
            len(records), cpu_utilization, memory_utilization,
            swap_utilization, disk_utilization))

        if len(records) == 100:
            write_records(records)
            records = []

        time.sleep(INTERVAL)

I start the collect.py application. Every 100 records, data is written in the MyData table:

$ python3 collect.py
records 4 - cpu 31.6 - memory 65.3 - swap 73.8 - disk 5.7
records 8 - cpu 18.3 - memory 64.9 - swap 73.8 - disk 5.7
records 12 - cpu 15.1 - memory 64.8 - swap 73.8 - disk 5.7
. . .
records 96 - cpu 44.1 - memory 64.2 - swap 73.8 - disk 5.7
records 100 - cpu 46.8 - memory 64.1 - swap 73.8 - disk 5.7
Processed 100 records. WriteRecords Status: 200
records 4 - cpu 36.3 - memory 64.1 - swap 73.8 - disk 5.7
records 8 - cpu 31.7 - memory 64.1 - swap 73.8 - disk 5.7
records 12 - cpu 38.8 - memory 64.1 - swap 73.8 - disk 5.7
. . .

Now, in the Timestream console, I see the schema of the MyData table, automatically updated based on the data ingested:

Note that, since all measures in the table are of type DOUBLE, the measure_value::double column contains the value for all of them. If the measures were of different types (for example, INT or BIGINT) I would have more columns (such as measure_value::int and measure_value::bigint) .

In the console, I can also see a recap of which kind measures I have in the table, their corresponding data type, and the dimensions used for that specific measure:

Querying Data from the Console
I can query time series data using SQL. The memory store is optimized for fast point-in-time queries, while the magnetic store is optimized for fast analytical queries. However, queries automatically process data on all stores (memory and magnetic) without having to specify the data location in the query.

I am running queries straight from the console, but I can also use JDBC connectivity to access the query engine. I start with a basic query to see the most recent records in the table:

SELECT * FROM MyDatabase.MyTable ORDER BY time DESC LIMIT 8

Let’s try something a little more complex. I want to see the average CPU utilization aggregated by hostname in 5 minutes intervals for the last two hours. I filter records based on the content of measure_name. I use the function bin() to round time to a multiple of an interval size, and the function ago() to compare timestamps:

SELECT hostname,
       bin(time, 5m) as binned_time,
       avg(measure_value::double) as avg_cpu_utilization
  FROM MyDatabase.MyTable
 WHERE measure_name = ‘cpu_utilization'
   AND time > ago(2h)
 GROUP BY hostname, bin(time, 5m)

When collecting time series data you may miss some values. This is quite common especially for distributed architectures and IoT devices. Timestream has some interesting functions that you can use to fill in the missing values, for example using linear interpolation, or based on the last observation carried forward.

More generally, Timestream offers many functions that help you to use mathematical expressions, manipulate strings, arrays, and date/time values, use regular expressions, and work with aggregations/windows.

To experience what you can do with Timestream, you can create a sample database and add the two IoT and DevOps datasets that we provide. Then, in the console query interface, look at the sample queries to get a glimpse of some of the more advanced functionalities:

Using Amazon Timestream with Grafana
One of the most interesting aspects of Timestream is the integration with many platforms. For example, you can visualize your time series data and create alerts using Grafana 7.1 or higher. The Timestream plugin is part of the open source edition of Grafana.

I add a new GrafanaDemo table to my database, and use another sample application to continuously ingest data. The application simulates performance data collected from a microservice architecture running on thousands of hosts.

I install Grafana on an Amazon Elastic Compute Cloud (EC2) instance and add the Timestream plugin using the Grafana CLI.

$ grafana-cli plugins install grafana-timestream-datasource

I use SSH Port Forwarding to access the Grafana console from my laptop:

$ ssh -L 3000:<EC2-Public-DNS>:3000 -N -f ec2-user@<EC2-Public-DNS>

In the Grafana console, I configure the plugin with the right AWS credentials, and the Timestream database and table. Now, I can select the sample dashboard, distributed as part of the Timestream plugin, using data from the GrafanaDemo table where performance data is continuously collected:

Available Now
Amazon Timestream is available today in US East (N. Virginia), Europe (Ireland), US West (Oregon), and US East (Ohio). You can use Timestream with the console, the AWS Command Line Interface (CLI), AWS SDKs, and AWS CloudFormation. With Timestream, you pay based on the number of writes, the data scanned by the queries, and the storage used. For more information, please see the pricing page.

You can find more sample applications in this repo. To learn more, please see the documentation. It’s never been easier to work with time series, including data ingestion, retention, access, and storage tiering. Let me know what you are going to build!

Danilo



from Hacker News https://ift.tt/36mICzk

Elements of Programmnig

Book Review: Elements of Programming

The C++ STL may be the most impressive achievement in language standard libraries. Where most programmers are stuck complaining that their language’s default strings aren’t performant enough, about every standard C++ function for strings actually runs on arbitrary character sequences. Design your own container? std::find_if works just as well as for the built-ins. And it does this while often being more performant than the code you’d write yourself.

Alex Stepanov is the man who made this happen, and Elements of Programming (EOP) is his 200-page paean to his method for writing generic code. He’s a believer that programming can be turned from an art to a rigorous discipline based on mathematics, and I’ve long admired him for his deep knowledge and impact. Indeed, he’s spent years at #1 on my list of people I’d like to have lunch with. (Hey readers — can anyone help?)

And now, I’m about to ruin all that by writing a negative review.

EOP has a strong beginning and a strong finish. The first chapter explains core programming language concepts such as types and state — using non-standard terminology, but probably intentionally, judging by the explanation’s lucidity. This culminates in his big idea of being able to write programs on any type that offers a bundle of operations and properties called a concept, explained in this book over a decade before they entered the C++ standard. The afterword is a few pages of reflection on the power of this approach.

Between them is 11 chapters where he plays the same game: define a new abstraction and then show a bunch of functions that can be written using it. And unfortunately, these functions and abstractions are largely not very interesting.

There’s a famous site called Project Euler, where users write code to solve mathy problems such as “In a modified version of the board game Monopoly, on what three squares is a player most likely to land?” My former programming-contest coach advocated against using it to practice, because “It’s not really programming, and it’s not really math.”

I think this is an apt description of EOP, particularly the first half. This starts from Chapter 2, which is about cool algorithms that involve applying some function to itself repeatedly (iteration). One of my favorite lectures in undergrad was on this topic, and yet I still couldn’t enjoy this chapter, as I know no application of these algorithms outside of niche mathematical topics. This gets taken up another notch in Chapter 5, where, in about 5 pages, he goes from explaining commutativity to defining the algebraic structures of monoids, groups, and rings, all the way up to algebraic modules (no relation to software modules). I cannot fathom these explanations being useful to someone who does not already know these concepts, and certainly not to someone who already does. And while I do know many uses of groups in software engineering — as an abstraction of the idea of an invertible operation — he actually spends the remainder of this chapter considering generalizations of the greatest common divisor function.

I slogged through these chapters, excited for the second half of the book, which focused largely on iterators and containers, things more relevant to typical software engineering. Yet after encountering endless listings of variations of list-copy functions, I found myself no more fulfilled, and soon regressed to skimming through the pages.

Aside from my long-term goal to find all the good writing on software design, I had a short-term goal when reading this book: a student wanted me to teach a lesson based on it. But, halfway through the book, my deadline was fast approaching, and I hadn’t found any material useful enough for a software design lesson for experienced engineers.

I then noticed all the chapters were generated by the deeper principle of coming up with a good abstraction to write generic functions against. I got the idea that maybe I could use EOP as a problem book, telling them to look at the descriptions of generic functions, and then come up with both the code and the abstractions they can be written against. Alas, the topic selection is not suitable for this purpose. One section of the book, for example, deals with computing integer sequences by matrix exponentiation. Asking students to come up with this themselves would be too familiar for many who have taken a linear algebra course, and impossible for those who haven’t. I did design a lesson where students come up with their own abstractions for generic programming problems, but I used examples completely unrelated to the book.

I asked the friend who recommended EOP what he got out of the book, and his first answer was a technique for elegantly expressing state machines using goto’s. I similarly loved that part, but, alas, that was the only concrete thing I got out of this book. I’ll explain it at the end of this review and spare you the other 200 pages.

I have an undergraduate degree in mathematics and have authored several papers on generic programming, so I knew I was reading it for others’ benefit. Still, I don’t think my opinion would be changed were this not the case, and I’d really like help understanding the viewpoint of the many readers who did thoroughly enjoy it. Instead, I find myself agreeing with this Amazon reviewer, although I have too much admiration for Stepanov to contemplate a 1-star rating:

If you've ever written a generic function, you already know that the type parameters must obey a set of preconditions. This book lays out a big pile of definitions for types, numbers, algebraic structures, iterators, and such, so as to bamboozle people easily impressed by mathematical notation. It does so sloppily and writes some trivial generic algorithms in C++. To whatever extent one might accomplish something interesting with this topic, this book doesn't. Avoid.

As I read other material by Stepanov, I mourn for the book that could have been. Stepanov clearly cares about these abstractions and algorithms, to the point where he wrote a second book on largely the same material, with a chattier exposition and chapters more explicitly focusing on pure math. How different would it be had he managed to transmit this appreciation to me? The day after finishing, I watched this talk by a close colleague of Stepanov. “In this menu, you can select a bunch of rows and drag them somewhere else,” he explained over animated slides. “How many of you could implement this in one line?” It made me want to open section 10.4 on “rotation algorithms” again.

I’ve started watching a seminar he gave at Amazon. I’m only a few lectures in, but I’m already enthralled by his high teaching ability. I feel like I’m there with him working through problems. I feel like I’ve learned a great secret as he tells the story of how he invented “regular types,” something used throughout EOP but never motivated. To be honest, I still don’t know what this lecture series is about, but nonetheless expect to recommend it when I’m done.

In short, Stepanov has given many gifts to the world of programming, and EOP is not one of them.

Overall rating: Not recommended

With a smattering of exceptions, EOP neither teaches abstractions useful in everyday programming, nor teaches you the skills to invent your own.

Addendum: State machines by goto’s

“The fastest way to go from one place in code to another is goto.”

Alexander Stepanov

Many iterative algorithms can be described as state machines: first it looks for an X, then it does Y with it, then it looks for another X, and so on. Rather than trying to massage the cycles in the state machine into structured loops, Stepanov advocates a style using goto’s, with one goto-label per machine state.

In searching for an example to best illustrate this, I wanted something where the code was under 40 lines (which ruled out Stepanov’s examples), understandable with little context or knowledge of C++, and which was not equivalent to a regular expression. And so:

In my defunctionalization talk, I showed that many state machines are derived from recursive functions, being turned into iterative traversals by creating a state for each point in the program between recursive calls. For that talk, I demonstrated this in full for the example of printing a binary tree. It turns out that adding parentheses makes this derivation substantially harder, as an arbitrary number of close-parentheses may need to be printed after processing a node. And that difficulty comes from trying to massage a state machine into a loop.

In this case, seeing as I came up with this example by starring with a recursive function, the recursive version is quite simple:

void print_tree_rec(tree *t) {
  if (t != NULL) {
    printf("(");
    print_tree_rec(t->left);
    printf(" %d ", t->element);
    print_tree_rec(t->right);
    printf(")");
  }
}

But, for other state machines, the recursive version is not so easy. For example, Dijkstra created the “shunting yard” algorithm for parsing an arithmetic expression all the way back in 1961, yet I’m not aware of the recursive equivalent being discovered until 2007, using the technique of refunctionalization.

Here’s the state machine:

A confession: the first time I thought about how to make this recursive function function iterative, I didn’t get it, and had to look it up. The solution is to merge the “Next from stack” state in the diagram with its successors, resulting in a solution with two nested while-loops, at the cost of some duplicated code.

However, the version based on goto’s reads off this diagram rather nicely. One C++-ism in this code to note: while the stack s is initialized to NULL, the push() and pop() calls can actually change it.

void print_tree(tree *t) {
  tree *cur = t;
  stack *s = NULL;
  
begin_print_node:
  if (cur == NULL) {
    goto dispatch_stack_frame;
  } else {
    printf("(");
    push(LEFT_CHILD, cur, s);
    cur = cur->left;
    goto begin_print_node;
  }
  
print_element:
  printf(" %d ", cur->element);
  push(RIGHT_CHILD, cur, s);
  cur = cur->right;
  goto begin_print_node;
    
finish_print_node:
  printf(")");
  goto dispatch_stack_frame;

dispatch_stack_frame:
  std::pair<DIR, tree*> top_frame;
  if (s == NULL) goto end;
    
  top_frame = pop(s);
  cur = top_frame.second;
  if (top_frame.first == LEFT_CHILD)
    goto print_element;
  else
    goto finish_print_node;
  
  
end:
  return;
}

For the full code, including data declarations, go here

Neither I nor the friend who recommended this book have had a chance to use this technique since reading it. But for the times when you are implementing a state machine, it can be a nice trick — and a delightful surprise for those who grew up learning "Goto Considered Harmful."

Further reading: http://www.cs.rpi.edu/~musser/gsd/notes-on-programming-2006-10-13.pdf, page 191

Update: Reader Greg Jorgensen writes in to share an article he saved on this topic from the Computer Language magazine in 1991. "I’ve written a few FSMs in this style with successful results. One of them is still in use in the guts of a graphics terminal emulation program. That emulator is still used at big companies like British Telecom." Article



from Hacker News https://ift.tt/2HHTwp8