teleren/devto huggingface dataset:
Mid Meet Py - Ep.15 - Interview with Stéphane
Tags: python, interview, developers, chat
Published: 2020-07-09 13:19:25

---
title: Mid Meet Py - Ep.15 - Interview with Stéphane
published: true
description: We meet in the middle of the day in the middle of the week to chat about Python. This week we have Stéphane - CPython core developer, Board member of EuroPython joining us.
tags: python, interview, developers, chat
---
PyChat:

  [Python security announcement](https://twitter.com/zooba/status/1280235122730680324) - If your application embeds Python on Windows, you may be at risk.

  [Matplotlib Cheatsheet](https://twitter.com/NPRougier/status/1280249448774414339)
  [EuroPyhon Merch Shop](https://ep2020.europython.eu/europython/europython-merchandise-shop/) (15% off till 15th)

  [Turn you Raspberry Pi into gaming machine](https://twitter.com/Raspberry_Pi/status/1280819367882764290)

  [Python Ireland remote meetup event today](https://www.meetup.com/pythonireland/events/271602841/)

  [Pydata event](https://www.meetup.com/pythonireland/events/271604309/): joined effort with regional meetup

Mid Meet - Hall of Fame:

  Stéphane - CPython core developer, Board member of EuroPython

  Follow Stéphane on [Twitter](https://twitter.com/matrixise)

PyPI highlights:

  [Pandas-Bokeh](https://github.com/PatrikHlobil/Pandas-Bokeh) - using bokeh with pandas

  [interrogate](https://pypi.org/project/interrogate/) checks your code base for missing docstrings.

[Listen to MidMeetPy podcast](https://anchor.fm/midmeetpy)
Chingu Voyage 22 Starts on August 3
Tags: development, education, career, collaboration
Published: 2020-07-09 12:56:37

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/tufqubws0enxol67fcy8.png)Chingu Voyages are a way for you to get out of Tutorial Purgatory by turning what you've learned into expertise.

Get yourself job ready by applying your tech skills on a team project while also practicing the soft skills and team workflows you will need on the job. Our project-based learning community will help you aim higher and achieve more than you could alone.


In a six week Voyage you'll work on a team to design, build, test, & deploy a project.

Learn more at https://chingu.io
YouTube Video | Create a twitch clone using React -2
Tags: react, youtube, webdev, showdev
Published: 2020-07-09 12:50:41

This video is from my YouTube channel — **The Web Dev**. 

Here, we will create a clone of the popular streaming service [https://www.twitch.tv/](https://www.twitch.tv/) using ReactJS.

In this part , we will create Authentication to login to our App, using google OAuth authentication.

{% youtube aQz1gZ7efXQ %}

Please do like it and [Subscribe](https://www.youtube.com/channel/UCRf7mazcufqZxd2pR3oQJuQ?sub_confirmation=1) to my channel for more videos.
Day-After Sluggishness
Tags: devjournal, codenewbie, womenintech
Published: 2020-07-09 12:30:05

_This post was originally published on July 9, 2020 on [my blog] (https://alexlsalt.github.io/blog)._

I'm feeling tired today! I had a big podcast day yesterday - recording, editing, launching another episode, etc - so I'm feeling the sluggishness today.

[Go check out Episode 2 of The Ladies Code Collective Podcast here >>] (https://www.buzzsprout.com/1184462/4489202)

Anyway, I think it's just something to get used to, and then after a few weeks, it'll become habitual.

Other than podcasting yesterday, I had a great chat with a dear friend and software engineering mentor I have from my last job, and we talked through some planning for an upcoming big coding project I have on the horizon.

I so appreciated his generosity with sharing his ideas and expertise, and I really believe in the power of having good mentors to be able to bounce ideas off of over time.

Today I'm going to work a bit on my Udemy JavaScript course and continue on with building up the recipe-finding app we're currently building (APIs, etc). I'm loving what I'm learning and can't wait to keep going with APIs in the future!

Thanks so much for reading along! [Now let's be friends over on Twitter >>] (https://twitter.com/alexlsaltt)

P.S. I've launched a brand-new podcast with new episodes each Wednesday! Stay up to date by [signing up for the newsletter here >>] (https://www.ladiescodecollective.com/)

![The Ladies Code Collective Podcast art](https://dev-to-uploads.s3.amazonaws.com/i/nl20jdyk6b9ec2w1lms7.png)
Today I Learned (Not) Reflection
Tags: functional, math
Published: 2020-07-09 06:32:11

[An intuition for reflection | QA9](https://queuea9.wordpress.com/2020/04/01/an-intuition-for-reflection/)

This reflection is not the one for metaprogramming, but the property that if you fold a piece of data with its constructors, you get back the piece of data itself. In terms of list in Haskell, with constructors:

```haskell
[] :: [a]
(:) :: a -> [a] -> [a]
```

and a folding function like this:

```haskell
foldr :: (a -> b -> b) -> b -> [a] -> b
```

The property of reflection is then defined as this equation:

```haskell
foldr (:) [] = id
```

Another "Today I Learned" quote:

> It is known (although I am not sure where you can find this in a paper) that if you have parametricity and reflection, you can derive induction.

![A man feeling mindblown](https://dev-to-uploads.s3.amazonaws.com/i/7xkaln7idtsupylkcthg.gif)

Especially revelatory quotes:

> With induction, we are trying to summarize an infinite number of cases in some finite way. This finite way is with the constructors for the datatype.

> not taking constructors and datatypes for granted, we might ask: but how do you know you correctly summarized that infinite set of values using your functions you call constructors

> My intuition about reflection is that it contributes an essential property towards knowing you have the correct summary of your infinite set of data.

A philosophical quote:

> All it does is go through the list and interpret cons as cons, nil as nil.

Data transformation is all about reinterpreting the constructors of data.
Simple testing of Rails cache with RSpec
Tags: rails, rspec, caching
Published: 2020-07-09 12:28:42

---
title: Simple testing of Rails cache with RSpec
published: true
description: 
tags: Rails, RSpec, caching
//cover_image: https://direct_url_to_image.jpg
---
Turns out selectively enabling and cleaning up cache for select tests is easy. Testing with caching is needed where the functionality relies heavily on cache, like work with 3rd party API responses.

Here's a simple context:

```rb
RSpec.shared_context("with cache", :with_cache) do
  # Inclusion of this context enables and mocks cache.
  # Allows Rails.cache to behave just like it would on dev and prod!

  let(:memory_store) { ActiveSupport::Cache.lookup_store(:memory_store) }

  before do
    allow(Rails).to receive(:cache).and_return(memory_store)
    Rails.cache.clear
  end
end
```
How do you evaluate new technology?
Tags: discuss, codenewbie, career
Published: 2020-07-09 12:26:44

This question is inspired by [Chris Bertrand](https://dev.to/designpuddle)'s [post](https://dev.to/designpuddle/don-t-believe-the-hype-4ccb). 

Chris' warning of not buying into the hype around new technologies without social proof resonated with me. But it also made me wonder about if and how I should be vetting new technology. How do I pick the new tech to explore and what to be wary of? 

I would love to know how you decide to explore or ignore new technologies.
Kubernetes is just an API: Let's see it on K3s Cluster, running on AWS Spot Fleet
Tags: linux, kubernetes, terraform, k3s
Published: 2020-07-09 12:20:37

---
title: Kubernetes is just an API: Let's see it on K3s Cluster, running on AWS Spot Fleet
published: true
description: Exploring what Kubernetes really is
tags: linux, kubernetes, terraform, k3s
cover_image: https://assets.mkdev.me/posts/covers/000/000/012/original/mkdev_article.png
---
What Kubernetes really is? A complex system of dozens of different technologies or something of a higher order, a new standard runtime for any applications? 

In this video, Kirill Shirinkin will discuss what Kubernetes really is and will show you how mkdev uses K3s as a primary Kubernetes cluster for CI/CD Jobs with Gitlab CI.

You will also see behind the scenes of how we use AWS Spot Fleet and Terraform to build very cheap Kubernetes cluster.

{% youtube 6vyxh7UjE64 %}

***

*You can always hire [our mentors](https://mkdev.me/en/specializations) and learn directly from them!*
Creating a composable command-line tool using the Swift Argument Parser
Tags: swift, commandline, tools
Published: 2020-07-09 12:07:52


Most of us make use of command-line tools that are composable, like `sed(1)`, `grep(1)`, `sort(1)`. Not all tools use the same conventions for working with input from the standard input(STDIN). But it's certainly handy when they do.

Apple [announced on February 2020](https://swift.org/blog/argument-parser/) the [Swift Argument Parser](https://github.com/apple/swift-argument-parser). It provides an easy to use parsing capability, and their [documentation](https://github.com/apple/swift-argument-parser/tree/master/Documentation)is good. But as many examples on the Internet about building command-line tools, they focus on self-contained applications.

I thought it might be useful to show how to create a composable command-line tool. A composable command-line tool allows you to create a workflow between different tools. For example:

```bash
$ grep "Name:*" *.txt | sort
``` 

We are using two tools here `grep(1)`(To search for the pattern `Name:*` on all files with a `.txt` extension) and `sort(1)`. Each of the commands can be used on their own, but when we put them together, we can create complex workflows that easily solve our problem. The idea is redirecting the Standard Output(STDOUT) of one command and use it as the Standard Input(STDIN) of the second command using a pipe `|`.

If we want to make our command-line tool composable, we would like to support the following cases:

+ If the tool is called without any parameters it'll try to read from the STDIN.
+ If the tool's last argument is a single dash (`-`) read from the STDIN.

The same way as `sort(1)` or other Unix command-line tools work. 

we can call:

```bash
$ cat file.txt | sort
```

or we can call:
```bash
$ sort file.txt
```

If you are interested in how to build a command-line tool that is composable using the Swift Argument Parser, you might find the following post interesting:

https://rderik.com/blog/understanding-the-swift-argument-parser-and-working-with-stdin/ 

As always, feedback is welcomed.
Fit Your UI to the Screen on Mobile Browsers
Tags: webdev, beginners, css, javascript
Published: 2020-07-09 12:03:32

Fitting your UI to the screen on mobile devices gets weird sometimes. Most mobile browsers have navigation bars or applications menus that hide itself while user is scrolling down throughout the page. This causes the actual height of the window to change. What difference does it make? Let's say you want your footer to be fixed at the bottom of every page. Without a proper fix, it won't work. Here is the difference:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ryo3epzrfav4vni2zfhp.png)

I know my drawing is bad, but I hope you got the idea. This is even more important when working with modals on mobile:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/qyo1uhc20j6fweul0nr8.png)

If you can't fit your modals to the screen, users won't see some parts of your UI. Maybe they will miss some important buttons. How to fix this? Well, it's very easy.

###**1. Add The Viewport Metatag**

```html
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1">
```

I know this is Responsive 101, but begginners tend to forget about this. So, just in case...

###**2. Set CSS Variable**

```javascript
  const resizeOps = () => {
    document.documentElement.style.setProperty("--vh", window.innerHeight * 0.01 + "px");
  };

  resizeOps();
  window.addEventListener("resize", resizeOps);
```

This block should run as soon as your app starts. It will set 1% of the actual view height of the window as a CSS variable whenever the window resizes. We'll use this variable in the next and the last step.

###**3. Adjust Your CSS**

```css
html, body {
  height: 100vh;
  height: calc(var(--vh, 1vh) * 100);
}
```

First height property is for older browser in case if the browser doesn't support CSS variables. You can see its support table **[here](https://caniuse.com/#feat=css-variables)**. If you don't want your whole page to behave in this way, you can also do something like this:

```css
.modal {
  width: 50vw;
  height: 50vh;
  height: calc(var(--vh, 1vh) * 50);
}
```

In short; for individual UI elements, all you need to do is using **calc(var(--vh, 1vh) * 50)** instead of **50vh**.

---

I hope this was useful, you can also follow me on Twitter for future content:

[twitter.com/oznbll](https://twitter.com/oznbll)
Never forget the keyboard warriors
Tags: a11y, keyboard, tab
Published: 2020-07-09 11:52:42

---
title: Never forget the keyboard warriors
published: true
description: A simple trick to help keyboard navigation
tags: accessibility, keyboard, tab
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/xxok6a4wbmhbbzr0cie8.JPG
---

I was polishing a site today and checking how it worked when using the keyboard to navigate when I noticed something: at certain points, the focus disappeared. Sometimes, this was because it got swallowed by tooltips or navigation bars (which I've since updated so they fly open). But even after this, the focus still went <abbr title="absent without leave">AWOL</abbr>.

Then I remembered that I'd inherited a form where the manual submit button was hidden with JavaScript, but which auto-submits, when the user changes a select box.

I'd used the old trick of getting JavaScript to add a `js` class to the body, then used a `data-js="hidden"` attribute on elements I wanted to scoot out of the way. It's a variation of the old `sr-only` class:

```css
.sr-only, .js [data-js="hidden"] {
  border: 0;
  clip: rect(0,0,0,0);
  height: 1px;
  margin: -1px;
  min-width: 0;
  overflow: hidden;
  padding: 0;
  position: absolute;
  white-space: nowrap;
  width: 1px;
}
```

Rather than adding more JavaScript or another class, instead, I expanded it like this (I'm using SCSS):

```css
.sr-only, .js [data-js="hidden"] {
  border: 0;
  clip: rect(0,0,0,0);
  height: 1px;
  margin: -1px;
  min-width: 0;
  overflow: hidden;
  padding: 0;
  position: absolute;
  white-space: nowrap;
  width: 1px;
  
  // Never forget our keyboard navigating siblings.
  &:focus {
    height: auto;
    margin: unset;
    min-width: unset;
    overflow: visible;
    padding: unset;
    position: static;
    width: auto;
  }
}
```
Note that one limitation with my use of the `data-js` attribute is that it's not particularly expandable - trying to add a *second* value to the attribute will break the pattern, unless I started using a pattern along the lines of `[data-js^="hidden"], [data-js*=" hidden"]`. I'll revisit this if it becomes an issue.

Anyway, it worked a treat and my hidden submit button pops out when required. Mouse-driven users and touch users probably won't ever see it. Dunno if this might be useful to someone. Feel free to reuse it.

## Update

Well, that didn't take long. What I'd forgotten was that I'm heavily abusing checkboxes and radio buttons for various tasks around the site, all of which popped up when I added this code (and they went into focus, of course). For the moment, I've locked this behaviour behind an `.kb-focus:focus` selector, which makes it opt-in.
Lil' functional auxiliary helpers: `thisify`
Tags: functional, javascript, learning, tutorial
Published: 2020-07-09 12:02:29

---
title: Lil' functional auxiliary helpers: `thisify`
published: true
description: 
tags: #functional #javascript #learning #tutorial
//cover_image: https://direct_url_to_image.jpg
---

If you want a self-referencing object in an ad-hoc manner you should meet `thisify`:

```javascript
const thisify = f => f({});

const comp = f => g => x => f(g(x));
const log = prefix => x => (console.log(prefix, x), x);
const sqr = x => x * x;

const foo = thisify(o => {
  o.bar = 5;

  o.once = op => {
    const memo = op(o.bar);
    o.once = _ => memo;
    return memo;
  }

  return o;
});

foo.once(comp(log("logs")) (sqr)); // logs 25 + yields 25
foo.once(comp(log("logs")) (sqr)); // yields 25
```
[run code](https://repl.it/@scriptum/ClearcutCylindricalProjector)

`f => f({})` is all it takes to mimic Javascript's `this`.
Learning Python as Java Developer - Intro
Tags: java, python, programming
Published: 2020-07-09 12:01:23

####Introduction
Hi *,
I am Francesco and I am a Software Developer.
I know several programming languages like Java, C, C++, PHP and Javascript. My strong skill is Java and If I could speak Java as a spoken language, it would be fantastic. Unfortunately, I have to use Italian or English :P
If you are curious to know my working path and my course of study,  visit my [linkedin](https://bit.ly/2AHdFbC) profile.

####History
The Italian quarantine forced me to stay at home, but it allowed me to acquire new skills by attending online courses and, when I discovered dev.to, by reading the posts here too.
In that period I studied several topics like MongoDB, Microservices and, last but not least, Python.

####Why Python?
Python has attracted me and it has been love at first sight, therefore I have continued to study it.
It has a wonderful syntax, a big community and there are a lot of open-source projects that use it. It is perfect for scripting, web, AI, big data and whatever you want. 
By using Java as the main programming language, Python seems minimalist and it is strange when you notice that one python instruction can correspond with more java instructions.
In the end, it is very cool.

####Goal
With this post and the following ones, I want to learn Python as a Java Developer by sharing this path with you.

####Regards
See you next post!

P. S. add a reaction or comment to give me feedback :)
Daily Developer Jokes - Thursday, Jul 9, 2020
Tags: jokes, dailydeveloperjokes
Published: 2020-07-09 12:00:28

---
title: "Daily Developer Jokes - Thursday, Jul 9, 2020"
description: "Check out today's daily developer joke! (a project by Fred Adams at xtrp.io)"
series: "Daily Developer Jokes"
cover_image: "https://private.xtrp.io/projects/DailyDeveloperJokes/thumbnail_generator/?date=Thursday%2C%20Jul%209%2C%202020"
published: true
tags: #jokes, #dailydeveloperjokes
---

Generated by Daily Developer Jokes, a project by [Fred Adams](https://xtrp.io/) ([@xtrp](https://dev.to/xtrp) on DEV)

___Read about Daily Developer Jokes on [this blog post](https://xtrp.io/blog/2020/01/12/daily-jokes-bot-release/), and check out the [Daily Developer Jokes Website](https://dailydeveloperjokes.github.io/).___
### Today's Joke is...
![Joke Image](https://private.xtrp.io/projects/DailyDeveloperJokes/public_image_server/images/5e125999cc4b1.png)

---
*Have a joke idea for a future post? Email ___[xtrp@xtrp.io](mailto:xtrp@xtrp.io)___ with your suggestions!*

*This joke comes from [Dad-Jokes GitHub Repo by Wes Bos](https://github.com/wesbos/dad-jokes) (thank you!), whose owner has given me permission to use this joke with credit.*

<!-- 
Joke text:
___Q___: What are clouds made of?

___A___: Mostly linux servers.
 -->
What have you always wanted to ask a recruiter but couldn't?
Tags: discuss, career
Published: 2020-07-09 11:51:25

---
title: What have you always wanted to ask a recruiter but couldn't?
published: true
description: 
tags: discuss, career
//cover_image: https://direct_url_to_image.jpg
---

Hey everyone! Is there anything you've ever wanted to ask a recruiter, but you didn't because of how it might affect the relationship? Or maybe its because there wasn't a good time or place to ask. Well, now's your chance. 

I host [Production Ready](https://www.productionreadypod.com/), a podcast that helps developers grow their professional skills. We're doing an "AMA" with a recruiter in an upcoming episode, so now's your chance to ask those questions! 

Some questions I've been thinking about: 

* How much do you get paid per hire? 
* How often do developers go "around" you, and try to get the job themselves? 
* Do people actually accept jobs at companies not knowing what company they are? 

I'll be sure to give you a shoutout if we use your question. 

What do you want to ask the recruiter?
What Do You Think About "Github's new Profile README"?
Tags: github, features
Published: 2020-07-09 11:49:18

Github recently added the option to create a README that will show on your profile page, like a more customizable description.

My readme looks as follows:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/83e2i4s2u92dig92fqjb.png)


****

What do you think about it? Will you be using it? If so, for what purpose?

****

You can create yours by following this tutorial:
{% link https://dev.to/natterstefan/how-to-add-a-readme-to-your-github-profile-2bo9 %}

**** 

If you'd like to see what people are putting on their profiles, please check out Waylon's post:
{% link https://dev.to/waylonwalker/what-s-on-your-github-profile-40p3 %}
Top 5 best chrome extensions for developers
Tags: career, watercooler, beginners, codenewbie
Published: 2020-07-09 11:49:00

Since we, developers kept Google Chrome as their primary browser. Working with Chrome offers access to an immense repository of Chrome extensions and tools which make our daily tasks less of a chore. With the built-in developer tools, there seems to be no further need for more tools. However, I’d like to present you some of the best Google Chrome extensions for developers.

__1. [Daily](https://chrome.google.com/webstore/detail/dailydev-news-for-busy-de/jlmpjdjjbgclbocgajdjefcidcncaied?hl=en)__
Used for latest technology and new update.

![](https://lh3.googleusercontent.com/oKEPhU9lFSYKV3HDUmX9aobZMe0HwaJOS3m14QgUmFFztMrRYNQ3qvvyu9JR60TFJDQRIt0f=w640-h400-e365)

__2. [Wappalyzer](https://chrome.google.com/webstore/detail/wappalyzer/gppongmhjkpfnbhagpmjfkannfbllamg?hl=en)__
Get info about the technologies used in a your current opened website.

![](https://lh3.googleusercontent.com/QVwNvDyEfFZIJdRsmSQA6NPLAWxkmyrUPR-SH5tQ7D4KiIYR-jzN9NTis-XTZXergz7AHuoSIQ=w640-h400-e365)

__3. [Sitemode.io](https://chrome.google.com/webstore/detail/sitemodio/efjbaneaebkanjmhengnedpllfdiocin?hl=en)__
Lets anybody modify, save and shares any website in real time.

![](https://ph-files.imgix.net/e89b7c53-681d-42c5-99f7-245b96d9fb8f?auto=format&auto=compress&codec=mozjpeg&cs=strip&w=380&h=380&fit=max)
__4. [Devo](https://chrome.google.com/webstore/detail/devo/elkhalpmbmbaeoemecpcfdcoekmpgmdm?hl=en)__
GitHub Trending, Hacker News and Product Hunt on every new tab

![](https://lh3.googleusercontent.com/Ti19-H2fa2V-KNmL31ctQ-KL3V2rmLi7dcbEVEXiLjc2EK6VQ881MNCLzEMRsxl7VRWaVZVI=w640-h400-e365)

__5. [Marmoset](https://chrome.google.com/webstore/detail/marmoset/npkfpddkpefnmkflhhligbkofhnafieb?hl=en)__
Marmoset is a fun little tool for creating 3D screenshots of your code. 

![](https://lh3.googleusercontent.com/YbNnXQ6ApVr6pxEAx2O9moLZ4goKSGfrm54zcOkoL3y4Ixq0Plav6MS-yb8O5w6HVEzKjop9zA=w640-h400-e365)

###IF YOU LIKE THIS ARTICLE, DO REACT AND FOLLOW ME FOR MORE INFORMATIVE STUFF LIKE THIS.❤