<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: valeversa</title>
    <description>The latest articles on DEV Community by valeversa (@valeversa).</description>
    <link>https://dev.to/valeversa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F107061%2Ffec0010e-021f-478e-b214-ab6e8a2fec93.png</url>
      <title>DEV Community: valeversa</title>
      <link>https://dev.to/valeversa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/valeversa"/>
    <language>en</language>
    <item>
      <title>NASA Space Apps 2021 - Registrations now open!</title>
      <dc:creator>valeversa</dc:creator>
      <pubDate>Fri, 24 Sep 2021 04:40:40 +0000</pubDate>
      <link>https://dev.to/valeversa/nasa-space-apps-2021-registrations-now-open-o0a</link>
      <guid>https://dev.to/valeversa/nasa-space-apps-2021-registrations-now-open-o0a</guid>
      <description>&lt;p&gt;The &lt;a href="https://www.spaceappschallenge.org/"&gt;&lt;strong&gt;NASA International Space Apps Challenge&lt;/strong&gt;&lt;/a&gt; is an international hackathon for coders, scientists, designers, storytellers, makers, builders, technologists, and others in cities around the world, where teams engage the National Aeronautics and Space Administration’s (NASA’s) free and open data to address real-world problems on Earth and in space.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This year's event will take place on October 2-3 and will also mark the 10th year of this hackathon!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the second year, the event will be hosted completely remotely, but it will still be a lot of fun (I promise!) and will give you the chance to connect with like-minded people nearby, thanks to Space Apps's virtual locations. &lt;br&gt;
&lt;strong&gt;If you're reading this from Berlin (or really anywhere in Germany)&lt;/strong&gt;, you're welcome to register for &lt;a href="https://2021.spaceappschallenge.org/locations/berlin"&gt;our virtual location here&lt;/a&gt;. Otherwise, you can browse the &lt;a href="https://2021.spaceappschallenge.org/locations"&gt;location closer to you&lt;/a&gt; or register for the universal event. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hope to virtually connect with a lot of you!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>hackathon</category>
      <category>event</category>
      <category>virtual</category>
      <category>development</category>
    </item>
    <item>
      <title>NASA Space Apps Challenge 2019 - Are You In?</title>
      <dc:creator>valeversa</dc:creator>
      <pubDate>Tue, 24 Sep 2019 11:56:31 +0000</pubDate>
      <link>https://dev.to/valeversa/nasa-space-apps-challenge-2019-are-you-in-gkp</link>
      <guid>https://dev.to/valeversa/nasa-space-apps-challenge-2019-are-you-in-gkp</guid>
      <description>&lt;p&gt;The &lt;a href="https://www.spaceappschallenge.org/"&gt;NASA Space Apps Challenge&lt;/a&gt; is an international hackathon for developers of all levels, scientists, designers, storytellers, makers, builders, technologists – EVERYONE! – that will take place in cities around the world, where teams will engage with NASA’s free and open data to address real-world problems on Earth and in space.&lt;/p&gt;

&lt;p&gt;This year's challenges will cover 5 topics:&lt;/p&gt;

&lt;p&gt;Earth's Oceans🌊&lt;br&gt;
Living in Our World🌎&lt;br&gt;
To the Stars ✨&lt;br&gt;
Planets Near and Far 🚀&lt;br&gt;
Our Moon 🌜&lt;/p&gt;

&lt;p&gt;Space Apps 2018 included over 18,000 participants at more than 200 events in 75 countries. Let's try to beat those numbers, this year!&lt;/p&gt;

&lt;p&gt;The global event will take place on October 18-20, 2019 – local and virtual attendance is encouraged!&lt;/p&gt;

&lt;p&gt;Check out the &lt;a href="https://2019.spaceappschallenge.org/locations/map"&gt;event's map&lt;/a&gt; and register for the hackathon closest to you! &lt;/p&gt;

&lt;p&gt;PS: If you are in Berlin, Germany, see you at our local &lt;a href="https://2019.spaceappschallenge.org/locations/berlin-germany/"&gt;event&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>nasa</category>
      <category>hackathon</category>
      <category>api</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Beauty of REM</title>
      <dc:creator>valeversa</dc:creator>
      <pubDate>Tue, 30 Jul 2019 18:40:52 +0000</pubDate>
      <link>https://dev.to/valeversa/the-beauty-of-rem-123a</link>
      <guid>https://dev.to/valeversa/the-beauty-of-rem-123a</guid>
      <description>&lt;h5&gt;
  
  
  How to create a fully responsive web page with just two media queries.
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2kZqgzTs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/31dn5jwl11p1c0u2e2uc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2kZqgzTs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/31dn5jwl11p1c0u2e2uc.png" alt="The Beauty of REM"&gt;&lt;/a&gt;&lt;br&gt;
While developing our web application, our team quickly realized the need for a highly responsive layout that would accommodate a wide range of browser sizes. Although our platform is almost entirely used on desktop, we still needed to come up with a flexible enough solution that was able to work on both large and very small screens (e.g. tablets, smartphones and very old desktop screens). Due to the complexity of our layout — which includes lots of tables, buttons, and modals — it was clear to us that working with media queries would be a strenuous task. While looking for alternative solutions, we stumbled across the possibility to create a truly responsive layout by scaling every component on our web page according to browser viewport width: &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Values_and_units#Numeric_values"&gt;vw&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;html { font-size: 4vw; }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The concept of this approach is straight-forward: assign a specific font size to the HTML element you are working with (e.g. font-size: 4vw), and then define the size of every element in it using REM units.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container {
  width: 20rem;
  padding: 2rem;
  margin: 2rem auto;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This way, the container is scaled up or down according to the screen width, due to its dependency on the parent’s font size.&lt;br&gt;
More examples: the headlines of your page will have rem font size as well as paddings and margins, as will your paragraphs. Both elements are sized according to the window’s width.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;h1 {
  font-size: 2rem;
  margin: 0;
  text-align: center;
}

p {
  font-size: .8rem;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;There is one exception to the “use rem everywhere” rule: you can continue using pixels for elements that should not resize according to the screen width. For instance, you still want to define borders of your div using pixels because scaling this up would result in fat borders or buttons.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container {
  border: 1px solid black;
  border-radius: 16px;
  width: 20rem;
  padding: 2rem;
  margin: 2rem auto;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h5&gt;
  
  
  Do we still need media queries?
&lt;/h5&gt;

&lt;p&gt;The answer is yes. Specifically, you only need two of them. You need to define a breakpoint in which your components won’t get any smaller, and another breakpoint at which your components will stop scaling up and will maintain the same size no matter how much bigger the screen gets. Those two media queries only affect the HTML font size element, but all elements underneath scale magically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;html {
  font-size: 3vw;
  font-family: sans-serif;
}

@media only screen and (max-width: 550px) {
  html { font-size: 12px; }
}

@media only screen and (min-width: 1020px) {
  html { font-size: 24px; }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Once again, you can use pixels to make sure the minimum and maximum possible font size units are fixed.&lt;/p&gt;

&lt;p&gt;Click &lt;a href="https://codepen.io/versavale/full/VoemoZ"&gt;here&lt;/a&gt; to view the full demo page.&lt;/p&gt;

&lt;p&gt;Do you have a comment or just send kudos our way, get in touch with &lt;a href="https://www.twitter.com/valeversa"&gt;Valentina&lt;/a&gt; or &lt;a href="//mailto:info@tomrothe.de"&gt;Tom&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>css</category>
      <category>responsivelayout</category>
      <category>frontend</category>
      <category>rem</category>
    </item>
    <item>
      <title>CSS Grid and IE11</title>
      <dc:creator>valeversa</dc:creator>
      <pubDate>Mon, 06 May 2019 12:41:47 +0000</pubDate>
      <link>https://dev.to/valeversa/css-grid-and-ie11-2p8g</link>
      <guid>https://dev.to/valeversa/css-grid-and-ie11-2p8g</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QtZMKAri--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/raet91uxd7qqgojvszmf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QtZMKAri--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/raet91uxd7qqgojvszmf.png" alt="CSS grid in IE11"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  How a little Javascript helped us make peace with CSS Grid and IE11.
&lt;/h4&gt;

&lt;p&gt;A few months ago, we decided it was time to re-work our core platform. The idea of starting from scratch was both exciting and challenging: how to choose sustainable technology and tools while making sure the team can handle them? On the frontend, the decision came down to three pillars: a) using a known naming convention for CSS classes: BEM, b) using an &lt;a href="http://bradfrost.com/blog/post/atomic-web-design/"&gt;atomic component design&lt;/a&gt; approach, and c) ideally building every layout using CSS Grid. This article will focus on the latest choice and its consequences.&lt;/p&gt;

&lt;p&gt;CSS Grid is a relatively new approach to layouts, and it has been proved simple for junior developers to learn. Wes Bos has a &lt;a href="https://cssgrid.io/"&gt;great free tutorial&lt;/a&gt; on this. Grid’s concepts were also flexible enough to meet our needs – our backend platform is mainly used on desktop, and our layout includes a high number of elements per page: tables, buttons, and a high volume of data to be displayed.&lt;/p&gt;

&lt;p&gt;The decision to adopt CSS Grid worked very well for us, although very early on the process of coding our new layout, we stumbled upon an impediment: the need of building layouts that would work – and look good – on IE11 browsers. With 35% of our current users still browsing with IE11, we could not ignore the fact that CSS Grid does not work on IE as seamlessly as on Chrome or Firefox: IE browsers don’t understand implicit row-column positioning, so they display every element overlapped in the first column/row.&lt;/p&gt;

&lt;p&gt;The very first solution that we came up with was to always use CSS to make the row and column positioning of each element explicit.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.header {
  color: yellow;
  font-size: 24px;
  grid-column: 2; /* explicit positioning */
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Since we were working with reusable components, in most cases we could not add the above declaration directly to the element’s global CSS (e.g. not all headers will be in column 2 throughout the whole platform). A solution for this issue was to add specific classes directly to our code: this enabled us to keep all our elements in the right layout position – even in IE11.&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/ adding block classes for IE11 (HAML)
%header.block--col2.block--row2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* CSS for the element and the block classes */
.header {
  color: yellow;
  font-size: 24px;
}
.block--col2 { grid-column: 2; }
.block--row2 { grid-row: 2; }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This solution, while giving us the result we were looking for on IE11, made our markup incredibly complicated and hard to read:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/ before
.container
  .company-logo
  .side-menu.block--row2
    .menu-item
    .menu-item.block--row2
    .menu-item.block--row3
  .banner-area.block--col2
  .main-content-area.block--col2.block--row2
    .intro-bar
      .header
      .buttons.block--col2
      .info.block--col3
        .info-detail.block--col1
        .info-detail.block--col2
        .info-detail.block--col3
    .content
      .hero
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This approach was error-prone, and the more complex our layout became, the more complicated it was to maintain it: we were in need of a more sustainable solution. Here’s where the idea for our grid-annotator polyfill was born: we needed a simple JavaScript that automatically annotates column and row positioning to our components if the browser is IE111. For every other browser, the script simply doesn’t kick in. After only a few hours hacking good old JavaScript, we had our first prototype. We could finally remove all these annoying block classes and this resulted in the markup becoming simpler and more maintainable:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/ after
.container
  .company-logo
  .side-menu
    .menu-item
    .menu-item
    .menu-item
  .banner-area
  .main-content-area
    .intro-bar
      .header
      .buttons
      .info
        .info-detail
        .info-detail
        .info-detail
    .content
      .hero
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Of course, our grid-annotator doesn’t solve all CSS Grid issues on IE112: some of its other features such as repeat or grid-area are not addressed, but we might add them in the future.&lt;/p&gt;

&lt;p&gt;While implementing the polyfill in our product, we noticed a small issue: obviously, IE11 loads the page before the JavaScript is able to untangle our grid columns and rows. This causes the page components to overlap for a split second. After discussing the issue with product managers and running tests on different computers, we agreed that the “glitch” was not compromising the performance of the pages.&lt;/p&gt;

&lt;p&gt;If you are in a similar situation, feel free to take a look at the &lt;a href="https://github.com/motine/css_grid_annotator"&gt;grid-annotator repository&lt;/a&gt;. Do you have more ideas or want to contribute? Do you have a comment or just send kudos our way, get in touch &lt;a href="//mailto:info@tomrothe.de"&gt;with Tom&lt;/a&gt; or &lt;a href="https://www.twitter.com/valeversa"&gt;Valentina&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This article was first published on &lt;a href="http://tomrothe.de/posts/css_grid_and_ie11.html"&gt;Tom's blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>crossbrowsing</category>
      <category>cssgrid</category>
    </item>
  </channel>
</rss>
