> All in One 586

Ads

Monday, June 1, 2020

Mostly Clear today!



With a high of F and a low of 59F. Currently, it's 77F and Clear outside.

Current wind speeds: 16 from the Southeast

Pollen: 6

Sunrise: June 1, 2020 at 05:27PM

Sunset: June 2, 2020 at 08:12AM

UV index: 0

Humidity: 33%

via https://ift.tt/2livfew

June 2, 2020 at 10:00AM

Carcinization

Nature abhors a vacuum and also anything that's not a crab.

from xkcd.com https://xkcd.com/2314/
via IFTTT

After a spate of device hacks, Google beefs up Nest security protections

Google has added its line of Nest smart home devices to its Advanced Protection Program, a security offering that adds stronger account protections for high-risk users like politicians and journalists.

The program, launched in 2017, allows anyone who signs up access to a range of additional account security features, like limiting third-party access to account data, anti-malware protections, and allowing the use of physical security keys to help thwart some of the most advanced cyberattacks.

Google said that adding Nest to the program was a “top request” from users.

Smart home devices are increasingly a target for hackers largely because many internet-connected devices lack basic security protections and are easy to hack, prompting an effort by states and governments to help device makers improve their security. A successful hack can allow hackers to snoop in on smart home cameras, or ensnare the device into a massive collection of vulnerable devices — a botnet — that can be used to knock websites offline with large amounts of junk traffic.

Although Nest devices are more secure than most, its users are not immune from hackers.

Earlier this year Google began requiring that Nest users must enable two-factor authentication after a spate of reported automated attacks targeting Nest cameras. Google said its systems had not been breached, but warned that hackers were using passwords stolen in other breaches to target Nest users.

Other devices makers, like Amazon-owned Ring, were also targeted by hackers using reused passwords.

While two-factor authentication virtually eliminates these kinds of so-called credential stuffing attacks, Google said its new security improvements will add “yet another layer of protection” to users’ Nest devices.



from Amazon – TechCrunch https://ift.tt/2XkAWZr
via IFTTT

Tech companies respond to George Floyd’s death, ensuing protests and systematic racism

On Sunday, a fourth night of protests erupted around the country, spurred on by the May 25 death of George Floyd at the hands of the Minneapolis police. The movement is a response to wide-ranging and systematic inequality that has seen a disproportionate number of black Americans suffer a similar fate, with Floyd’s desperate gasping “I can’t breathe” echoing Eric Garner’s death some six years prior.

Violence broke out over the weekend, with photos and videos emerging of bloodied protesters, bystanders and journalists tasked with covering the events. It takes a lot for an event to dominate headlines in a country suffering from far and away the world’s largest number of COVID-19 deaths, but wide scale movements in Minneapolis, New York, D.C., L.A., Chicago and beyond seem destined to remain top of mind in an already deeply divided nation.

Tech companies and CEOs have begun to weigh in on what amounts to a rather delicate topic for corporations not accustom to rocking the boat on these manner of social issues. Tim Cook, who has a history of publicly addressing social issues, said the company draws strength from its diversity. He also told staff that now is the time to listen,

This is a moment when many people may want nothing more than a return to normalcy, or to a status quo that is only comfortable if we avert our gaze from injustice. As difficult as it may be to admit, that desire is itself a sign of privilege. George Floyd’s death is shocking and tragic proof that we must aim far higher than a “normal” future, and build one that lives up to the highest ideals of equality and justice.

The Apple CEO says the company will be making unspecified donations to the Equal Justice Initiative and other non-profits. It will also be matching two-for-one on all employee donations for June.

Twitter, meanwhile, swapped its standard logo for a black and white version, adding a Black Lives Matter hashtag to its bio. Its diversity account Twitter Together offered the following statement (via tweet, naturally),

Racism does not adhere to social distancing. Amid the already growing fear and uncertainty around the pandemic, this week has again brought attention to something perhaps more pervasive: the long-standing racism and injustices faced by Black and Brown people on a daily basis.

Amazon also took to Twitter, offering the following statement,

The inequitable and brutal treatment of Black people in our country must stop. Together we stand in solidarity with the Black community — our employees, customers, and partners — in the fight against systematic racism and injustice.

AWS head Andy Jassy added on his own account,

*What* will it take for us to refuse to accept these unjust killings of black people? How many people must die, how many generations must endure, how much eyewitness video is required? What else do we need? We need better than what we’re getting from courts and political leaders.

Many were quick to condemn Amazon for perceived hypocrisy. Among the issues here are longstanding complaints over worker treatment, as well as Amazon Web Service’s technologies like facial recognition, which have been utilized by law enforcement.

The ACLU responded rather bluntly,

Cool tweet. Will you commit to stop selling face recognition surveillance technology that supercharges police abuse?

Amazon does not appear to have responded to this most recent question from the organization.

The pain of the last week reminds us how far our country has to go to give every person the freedom to live with dignity…

Posted by Mark Zuckerberg on Sunday, May 31, 2020

Facebook’s response has also been a mixed bag. Staff have began vocal about their anger around Mark Zuckerberg’s decision to break with Twitter by leaving Trump’s “when the looting starts, the shooting starts” statement in tact. More recently, however, the CEO commitment $10 million to relevant non-profits, adding in a post,

To help in this fight, I know Facebook needs to do more to support equality and safety for the Black community through our platforms. As hard as it was to watch, I’m grateful that Darnella Frazier posted on Facebook her video of George Floyd’s murder because we all needed to see that. We need to know George Floyd’s name. But it’s clear Facebook also has more work to do to keep people safe and ensure our systems don’t amplify bias.

Remarks from Microsoft CEO Satya Nadella posted to LinkedIn briefly touch upon the events in Minneapolis, as well as the recent problematic encounter in Central in which the police were called on birder Christian Cooper,

Our identity, our very existence is rooted in empowering everyone on the planet. So, therefore, it’s incumbent upon us to use our platforms, our resources, to drive that systemic change, right? That’s the real challenge here. It’s not just any one incident, but it’s all the things that have led to the incident that absolutely need to change.

Meanwhile, Snap CEO Evan Spiegel sent a lengthy letter to staff on Sunday, writing,

Of course, the same Founding Fathers who espoused the values of freedom, equality, and justice for all – were predominantly slave owners. Their powerful vision of a nation created by the people, for the people was built on a foundation of prejudice, injustice, and racism. Without addressing this rotten foundation and its ongoing failures to create opportunity for all, we are holding ourselves back from realizing our true capacity for human progress – and we will continue to fall short of the bold vision of freedom, equality, and justice for all.

Spiegel’s letter focuses on his work to understand the struggles as a “young, white, educated male [who] got really, really lucky,” as well as proposals for financial methods for addressing inequality. Specifically, he calls for the establishment of a non-partisan Commission on Truth, Reconciliation and Reparations, as well as an investment in housing, healthcare and education.



from Amazon – TechCrunch https://ift.tt/2MiDVv5
via IFTTT

Rotated Table Column Headers… Now With Fewer Magic Numbers!

Rotated <table> column headers is something that’s been covered before right here on CSS-Tricks, so shout-out to that for getting me started and helping me achieve this effect. As the article points out, if you aren’t using trigonometry to calculate your table styles, you’ll have to rely on magic numbers and your table will be brittle and any dreams of responsiveness crushed. 

Fortunately, in this case, we can take the trigonometry out and replace it with some careful geometry and our magic numbers all turn into 0 (a truly magical number).

For those in a hurry, here is the CSS (it’s very similar to the styles in the other article). Below is a thorough walk-through.

<th class="rotate"><div><span>Column Header 1</span></div></th>
table {
 border-collapse: collapse;
 --table-border-width: 1px;
}
th.rotate {
  white-space: nowrap;
  position: relative;

}
th.rotate > div {
  /* place div at bottom left of the th parent */
  position: absolute;
  bottom: 0;
  left: 0;
  /* Make sure short labels still meet the corner of the parent otherwise you'll get a gap */
  text-align: left;
  /* Move the top left corner of the span's bottom-border to line up with the top left corner of the td's border-right border so that the border corners are matched
   * Rotate 315 (-45) degrees about matched border corners */
  transform: 
    translate(calc(100% - var(--table-border-width) / 2), var(--table-border-width))
    rotate(315deg);
  transform-origin: 0% calc(100% - var(--table-border-width));
  width: 100%;

}
th.rotate > div > span {
  /* make sure the bottom of the span is matched up with the bottom of the parent div */
  position: absolute;
  bottom: 0;
  left: 0;
  border-bottom: var(--table-border-width) solid gray;
}
td {
  border-right: var(--table-border-width) solid gray;
  /* make sure this is at least as wide as sqrt(2) * height of the tallest letter in your font or the headers will overlap each other*/
  min-width: 30px;
  padding-top: 2px;
  padding-left: 5px;
  text-align: right;
}

Let’s unpack this table and see what’s going on. The magic starts with that funny chain of HTML tags. We’re putting a <span> inside of a <div> inside of our <th>. Is this all really necessary? Between how borders behave, the positioning flexibility we need, and what determines the width of a table column… yes, they each have a purpose and are necessary.

Let’s see what happens if we rotate the <th> directly:

<th class="rotate">Column header 1</th>
table {
  border-collapse: collapse;
}
th.rotate {
  border-bottom: 1px solid gray;
  transform: rotate(315deg);
  white-space: nowrap;
}
td {
  border-right: 1px solid gray;
  min-width: 30px;
  padding-top: 2px;
  padding-left: 5px;
  text-align: right;
}

Ignoring the fact that we haven’t corrected position, there are two big issues here: 

  1. The column width is still calculated from the header length which is what we were trying to avoid.
  2. Our border didn’t come with us in the rotation, because it is actually part of the table.

These problems aren’t so difficult to fix. We know that if the <th> has a child element with a border, the browser won’t treat that border as part of the table. Further, we know that absolutely-positioned elements are taken out of the document flow and won’t affect the parent’s width. Enter <div> tag, stage left…and right, I guess.

<th class="rotate"><div>Column header 1</div></th>
table {
  border-collapse: collapse;
}
th.rotate {
  white-space: nowrap;
  position: relative;
}
th.rotate > div {
  position: absolute;
  transform: rotate(315deg);
  border-bottom: 1px solid gray;
}
td {
  border-right: 1px solid gray;
  min-width: 30px;
  text-align: right;
  padding-top: 2px;
  padding-left: 5px;
}
Now our headers don’t influence the column width and the borders are rotated. We just need to line things up.

It’s easier to tell in the image with the rotated <th> elements, but that rotation is happening around the center of the element (that’s the default behavior of transform-origin). It is only another transform in x and y to get it to the right spot, but this is where we’d need trigonometry to figure out just how much x and y to line it up with the column borders. If we instead carefully choose the point to rotate the header about, and use transform-origin to select it, then we can end up with distances that are more straightforward than magic numbers.

The animation below helps illustrate what we’re going to do to avoid complicated math. The black dot in the top left of the blue border needs to match the red dot on the right border of the table column and rotate about it. Then there won’t be any gaps between the two borders.

It’s not helpful to start going somewhere if you don’t know where you are. The absolute positioning is going to help us out with this. By specifying bottom: 0; left: 0; on the <div>, it ends up at the bottom left of the parent <th>. This means the <div> border’s bottom-left corner is sitting on top of the left column border and halfway through it. From here, it’s apparent we need to move down one border width and over one cell width, but how are we going to get that responsively? It’s at this very moment you may recall that we haven’t added the <span> yet — we’re going to need it!

We’ll use the <div> to “figure out” how big the table cells are and the <span> to actually hold the text and position it absolutely as well to overflow the parent.

<th class="rotate"><div><span>Column header 1</span></div></th>
th.rotate{
  white-space: nowrap;
  position: relative;
}
th.rotate > div {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;  /* <- now the div parent is as wide as the columns */
}
th.rotate > div > span {
  position: absolute;
  bottom: 0;
  left: 0;
  border-bottom: 1px solid gray;
}

Great! When we set the width of the <div> to 100%, it holds the information for how big the column is regardless of what the content is in the table cells. With this in place, we can easily translate things over by the width of the <div> — but don’t forget that we need to shave off a half border width. Our translation becomes:

transform: translate( calc( 100% - var(--table-border-width)/2), var(--table-border-width));

The <div> is now in the right spot to rotate, but we have to make sure to pick the correct transform-origin. We want it to be on the top-left corner of the border, which will be on the left and up one border’s width from the bottom of our <div> element:

transform-origin: 0%, calc(100% - var(--table-border-width));

This brings us to our final style for the table header.

table {
  border-collapse: collapse;
  --table-border-width: 1px;
}
th.rotate{
  white-space: nowrap;
  position: relative;
}
th.rotate > div {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  transform:
    translate( calc( 100% - var(--table-border-width)/2), var(--table-border-width));
    rotate(315deg);
  transform-origin: 0%, calc(100% - var(--table-border-width));
}
th.rotate > div > span {
  position: absolute;
  bottom: 0;
  left: 0;
  border-bottom: var(--table-border-width) solid gray;
}

Note that transformations happen after everything is placed. That means the rotated headers will overflow onto everything as best they can. You will need to wrap the whole table in something to compensate for the unexpected height. I put the title and table together in a flexbox <div> and set the flex-basis of the title to a value large enough to compensate for the tall headers.

#div-with-table {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
}
#title {
  flex-basis: 140px;
}

The post Rotated Table Column Headers… Now With Fewer Magic Numbers! appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2XNSXyp
via IFTTT

Overlapping Header with CSS Grid

Snook shows off a classic design with an oversized header up top, and a content area that is “pulled up” into that header area. My mind goes to the same place:

Historically, I’ve done this with negative margins. The header has a height that adds a bunch of padding to the bottom and then the body gets a margin-top: -50px or whatever the design calls for.

If you match the margin and padding with a situation like this, it’s not exactly magic numbers, but it still doesn’t feel great to me beaus they’re still numbers you need to keep in sync across totally different elements.

His idea? Build it with CSS grid instead. Definitely feels much more robust.

Random coinsidence, I was reading Chen Hui Jing’s “The one in black and orange” post and the pattern showed up there as well.

Direct Link to ArticlePermalink

The post Overlapping Header with CSS Grid appeared first on CSS-Tricks.



from CSS-Tricks https://ift.tt/2WEjSgC
via IFTTT

Sunday, May 31, 2020

Partly Cloudy today!



With a high of F and a low of 60F. Currently, it's 69F and Clear outside.

Current wind speeds: 13 from the Southwest

Pollen: 4

Sunrise: May 31, 2020 at 05:27PM

Sunset: June 1, 2020 at 08:11AM

UV index: 0

Humidity: 48%

via https://ift.tt/2livfew

June 1, 2020 at 10:01AM

Mostly Cloudy/Wind today!

With a high of F and a low of 55F. Currently, it's 79F and Fair outside. Current wind speeds: 18 from the Northeast Pollen: 3 Su...