teleren/devto huggingface dataset:
Reimagining virtual team collaboration
Tags: showdev, vscode, tools, productivity
Published: 2020-03-03 23:14:13

Do you ever wish that collaborating with your team when working remotely, would feel more natural? A [4,300-person survey from Digital Ocean](https://www.digitalocean.com/currents/july-2019/) shows that 33% of developers primarily work remotely, and 28% split their time between remote and office work. 

Remote work is on the rise, and one of the toughest parts to a developer’s remote work journey is when they are onboarding to a codebase. It’s tough to know how each of the pieces in the codebase work, why the code was written this way, and who to ask for help.

Our team created a prototype called [Spaces](https://marketplace.visualstudio.com/items?itemName=vsls-contrib.spaces), a VS Code extension, to address issues for onboarding and collaboration, especially for remote teams. 

Here are some of the ways the prototype addresses some of these concerns to create a virtual team room that feels natural:

#1. Talk about code, where the code is.#

That way, context is never lost.

We wanted to cut distraction and make sure that a developer only gets notifications from people they are only working directly with, day-to-day. Focused discussion means less spam.

![Virtual team room](https://dev-to-uploads.s3.amazonaws.com/i/kyz6abxwop9k8uqhkmcr.png)
 
#2. Get help without hassle. #

We heard from developers that context-switching is the time-killer. So we wanted to reduce this by showing that getting help or making a note on a section of code is as easy as highlighting and right-clicking.

In Spaces, there's no need to paste to Slack/Teams, choose a channel, format code, or reference a line number, when you ask questions about code.

*Note: We are looking at building this feature into the prototype and this is still in progress.*

![Commenting code](https://dev-to-uploads.s3.amazonaws.com/i/eahrx6o2dptltsqh70l9.png)

![Commenting code](https://dev-to-uploads.s3.amazonaws.com/i/boc2ftd0kz7r3b53hjde.png)
 
 
#3. Sharing context is simple and fast.#

We envision that discussing code on another branch or giving help can be as simple as viewing another person’s environment without disrupting your own. No checking out branches.

*Note: We are looking at building this feature into the prototype and this is still in progress.*

![Live coding collaboration](https://dev-to-uploads.s3.amazonaws.com/i/w6at4ywkg91zxj5g2fxf.png)

 
The implications of asynchronous collaboration are endless. A developer can provide or receive help whenever they have a window of time, without breaking their workflow.

Here is the current [Spaces prototype](https://marketplace.visualstudio.com/items?itemName=vsls-contrib.spaces). Feel free to check it out!

I have spoken to hundreds of developer teams to understand how they are collaborating in today's development landscape. I would be curious to know, what do you think? What are your challenges to creating a virtual team room?
I don't want to do Devops anymore.
Tags: devops, career
Published: 2020-03-03 22:52:09

---
title: I don't want to do Devops anymore.
published: true
description: A Voyage to the Server and Back
tags: devops, career
---
No really. I don't. Money be damned.

Full-disclosure: the first draft of this was a long meandering rant fueled by mental-exhaustion and a few cans of Izzie pop. Nine paragraphs in, I had somehow written myself into a corner with a forced allegory, some stunted alliteration and something about "regressing to the mean" and why Pete Rose deserves to be in the Baseball Hall of Fame. My editor Mike made me start over and rub his belly. *Mike is a cat. He says hello.*

See it all started for me making websites. Ugly ones. Terrible websites. You'd be ashamed at some of those early websites, I wouldn't blame you and in fact, I'd probably try to pay you to surgically remove them from my memory. But I had a lot of fun doing it. Got hired at one point to be a "webmaster" for a small publishing house.

That tells you how long ago this was. My job title was "webmaster". People still put that on their resumes and CVs. I even got a nametag. "Dave. Webmaster". Ooo-wee I felt like hot stuff. 

Because I knew enough about making a pleasant enough homepage and despite what my father would say, playing video games did in fact pay the bills: Armed with enough knowledge to write server-side mods for Quake, I was able to get my first tech job. 

14 years later and I'm bored out of my ever loving mind. I don't want to do this anymore. Don't ask me why, other than to say it's not fun I can't give you a simplified, abridged reason for it. I've tried writing about it and ended up with 10 paragraphs and a thoroughly annoyed editor as I continue drifting off-topic and making Star Trek references. 

![poor Myles](https://www.neatorama.com/images/posts/464/68/68464/1389403304-0.jpg)
*In case you were wondering, it involved Myles O'Brien*

Anyway.

I was reading a post here on dev.to [from a young woman who](https://dev.to/bmor2552/why-not-data-science-bjm) realized she wasn't doing what she wanted either, and did something about it. Got me wondering, *why not me*? 

No really, why not? 

I went and signed up to Skillshare. Searched for "Responsive web design".

[A day and some change later, I have a website](http://iamdave.co). It's.....got a few problems. I'm working on them. 

It's not great. But it's mine. 

*And it was fun*.

This probably wont be the final version. Leave your critiques below? Opening myself up here and it feels strange, but it feels...*necessary* at the same time. I'm going to work on it more. And then after that I think I might try making a simple static site theme using [Eleventy](http://11ty.io). Might port my site over to it. I'll run it over with Mike. 

I don't want to do DevOps anymore. I want to go back to making websites. So I think I will.

....

Oh snap. Right. Almost forgot. The whole reason I started writing this:

Anyone else ever just stopped cold what they were doing and did something else? How'd it work? Are you still doing it?
Yet another reason to prefer unit tests 😇
Tags: testing, javascript, react, tdd
Published: 2020-03-03 22:24:08

---
title: Yet another reason to prefer unit tests 😇
published: true
description: Have you ever gotten so frustrated when writing a unit test that you gave up and wrote an end-to-end test instead?
tags: testing, javascript, react, tdd
---

Have you ever gotten so frustrated when writing a unit test that you gave up and wrote an end-to-end test instead?

I think this is a common occurrence in the JavaScript world. Codebases become complex very quickly, and then (unsurprisingly) unit tests become complex too.

It seems to me that this is one reason why people prefer end-to-end tests over unit tests: because unit tests can be difficult and frustrating.

But this is precisely why unit tests are useful: **unit tests give you design feedback.**

> If your unit test is hard to write, then that’s a good thing: the test is telling you that your design can be improved.

When you’re faced with a hard-to-write unit test, the solution is **not** to rewrite your test to be an end-to-end test. The solution is to refactor your production code until the unit test becomes easy to write.

**A unit test is like a clamp that holds your system in place while you refactor around it.**

If you’re puzzled as to what I’m talking about, then perhaps you would do well to read a book like Kent Beck’s [Implementation Patterns](https://www.informit.com/store/implementation-patterns-9780321413093) or [99 Bottles of OOP](https://www.sandimetz.com/99bottles) by Sandi Metz. (And if you’re a React developer, consider reading my book, [Mastering React Test-Driven Development](https://www.packtpub.com/gb/web-development/mastering-react-test-driven-development).)

Most developers are well aware of how to make their own code simpler. And yet they don’t do it.

Very often, developers don’t have enough trust in themselves to refactor safely. They fear causing unexpected regressions. They worry that they’ll spend all day refactoring and they won’t make progress on their assigned work.

If that’s you, try giving unit testing another go. _Listen_ to the tests and let them give you the structure you need to make positive change to your codebase.
Nevertheless, Tasmere never quit Troubleshooting
Tags: wecoded
Published: 2020-03-03 22:20:10


When I decided to go back to school to earn my degree, I knew I wanted to join an industry that was challenging, creative, fun, impactful and that would provide a lot of variety and options for my career. I found all these qualities in IT and I am now a proud woman in the Tech industry. 

It’s a well-known fact that technology is a male dominant industry, therefore when I was starting out I knew I would be in the minority. So yes, I have had my fair share of experiences with gender stereotypes and hidden prejudices. I could have decided to use these experiences as excuses to play small and let my insecurities get the best of me but instead, I choose to use all those biases to my advantage. Never forget, there is power in being underestimated.

I am starting to see more women leaders in the tech industry and I look forward to being a part of this trend. 

I will end this post by encouraging all women in tech to Speak up! It can be intimidating speaking up and putting yourself out there but don’t let that stop you from sharing your ideas, the world needs them. Plus bravery is contagious, being more vocal will encourage us all to do the same.
Question bot 2
Published: 2020-03-03 22:07:57

In this lesson we are talking about the chat bot, similar to the question bot except instead of taking a question and returning an answer, this one just records a conversation like the messages app. Important things to note is that a scrolling list of items is known as a table view. Each item in a list is called a cell. In this lesson most of the app is already built, we will be working on the part of the app that keeps track of the conversation. The conversation is going to hold two types of messages, questions asked by the user and answers given by the brain of the app. The message struct holds the info needed to make an entry in the conversation: the date, the message text, and the type of message. The question answerer struct is the brain of the chat and is responsible for providing answers to questions. The conversation data source class is responsible for holding and updating the details of the current conversation. Currently conversation data source doesn’t do anything when given orders and doesn’t give any helpful answers when asked questions. When you type a question, the app will think a little bit, then revert to what it looked like before. Nothing changes because the data source is always saying there are no messages in the conversation. When you change the message count property to have a value of 1 instead of 0, you can see a single message in the conversation. If you ask a question, you’ll see that nothing changes, but you still see the console messages about adding question-and-answer messages. What should happen is that each time a message is added to the conversation, the data source should update the number of messages, so the next time it’s asked, it can give the correct answer. By changing the definition of the message count property to var instead of let, setting the initial value back to 0, and adding the line of code messageCounter += 1, we can increase the message counter property each time a message is added to the conversation. You can see that the right number of messages is displayed but they’re all the same answer. A remainder operator is used to determine if the message should be a question or an answer then it creates and returns something appropriate. All that’s missing now is to be able to see the actual contents of the conversation. The conversation data source needs a way to store the questions that the user has entered and the answers given by the brain. You can do this using an array of messages, starting with a blank one, which will store the questions and answers.
OpenNMS Meridian 2019.1.4 Released
Tags: news, meridian, release
Published: 2020-04-20 21:02:25

---
title: OpenNMS Meridian 2019.1.4 Released
published: true
date: 2020-03-03 22:00:31 UTC
tags: News,Meridian,Release
canonical_url: https://www.opennms.com/en/blog/2020-03-03-opennms-meridian-2019-1-4-released/
cover_image: https://i.imgur.com/74fmzvG.png
---

Release 2019.1.4 is the fifth release in the Meridian 2019 series.

It fixes an HQL injection bug, as well as a few other issues. Hat tip to Johannes Moritz for the security report.

The codename for 2019.1.4 is _Jupiter_.

Bug

- Cannot process SNMPv3 Informs due to random Engine ID associated with users (Issue [NMS-12473](https://issues.opennms.org/NMS-12473))
- Downtime model change was not updated in the docs (Issue [NMS-12520](https://issues.opennms.org/NMS-12520))
- HQL Injection (Issue [NMS-12572](https://issues.opennms.org/NMS-12572))

Enhancement

- Support signing code in CircleCI (Issue [NMS-12557](https://issues.opennms.org/NMS-12557))
Meetup = Cars || Meetup != Cars ???
Tags: python, javascript, codenewbie
Published: 2020-03-03 22:00:04


*If cars & car shows aren't your thing, don't worry. I think I'm going to write another version of this post with an analogy to cats or crafts.*

I charm Python, but I was at a front end and JS meetup. I really enjoyed all the talks. There were talks from Brandon Mathis, @superdiana, and @smartudhaya. I learned a bunch of things. I met a few people. Though, I’m not a front ender and definitely not a JS person.

The next day, my spouse asked how the meetup was. They're not into programming and sometimes it's hard to explain further than "it was really good, learned things." So, I came up with a car show analogy.

What do cars have to do with meetups anyway? Pretty much nothing, but here's my analogy.

{% twitter 1233394642126856193 %}


## Ford person at a Mopar car show

```python
# assumptions
Me = a person
I = Me
Ford = Python
Mopar = front end & JavaScript
car = language
offroad = backend
```

I'm a fan of Ford. Fords are similar to Mopars because they are both cars. Generally, Ford people and Mopar people are rather opinionated when it comes to their cars and other cars. Both are cars, but they look a little different under the hood. Ford's bits and pieces are organized a bit differently than Mopar. The different organization gives each car different strengths. One car may be faster why the other is good at something different. Also, I have a Ford that can go off-road. Mopar isn't always seen off-road, but it is totally possible you may meet one along your journey

{% twitter 1233395863302615040 %}

## What's My Point?

If you don't have a local meetup in a language you're familiar with, don't worry. If there's a different meetup, go to that. Chances are there are people there that can help connect you with others. There's also a good chance there are people there that do use whatever you're using.
Testing for expiring SSL Certificates
Tags: security, ssl, testing
Published: 2020-03-03 21:51:11

---
title: Testing for expiring SSL Certificates
published: true
canonical_url: https://www.funkysi1701.com/posts/testing-for-expiring-ssl-certificates-2dmj
description: Testing for expiring SSL Certificates
tags: security, ssl, testing
---

Let's Encrypt is amazing, you can easily add SSL certificates to any website and automate the renewal process. I have talked [before](https://dev.funkysi1701.com/posts/let-s-encrypt-is-awesome-3f5j/) about how impressive it is.

Once you start adding SSL certificates to your production sites however you may want to check when they expire so you don't get caught out. You can always open your site in your favourite browser and view the certificate information and expiry date. 

![SSL Cert](https://dev-to-uploads.s3.amazonaws.com/i/jb78re4fmm1ofx81f3mu.JPG)
However there is a way to automate this check.

{% gist https://gist.github.com/funkysi1701/3bf8c5a0f9a8a04159c98b1b08955813 %}

This code gets the SSL expiry date from https://www.example.com and will fail the  xunit test if the expiry date is less than 30 days in the future. I then schedule my tests to run regularly on all my environments with a Let's Encrypt Certificate and this gives me advanced warning if a SSL certificate is about to expire.

The Assert.InRange(diff, 30, 1000) line will fail the test if the expiry date is less than 30 days or greater than 1000, but as the default expiry for Let's Encrypt certificates is three months it will never be greater than 1000 days even with a freshly installed certificate. These values can be tweaked to suit your use case, however 30 days is enough time for me to investigate what is happening.

To execute my tests I use a scheduled build in Azure DevOps, but anything that regularly can run your tests will do the job.

The code above is just a simple example to get your started for my purposes I have put all my URLs into config files and just pass these into my tests, so I don't need a custom test for every different URL.
OpenNMS Meridian 2018.1.16 Released
Tags: news, meridian, release
Published: 2020-04-20 21:02:05

---
title: OpenNMS Meridian 2018.1.16 Released
published: true
date: 2020-03-03 21:40:11 UTC
tags: News,Meridian,Release
canonical_url: https://www.opennms.com/en/blog/2020-03-03-opennms-meridian-2018-1-16-released/
cover_image: https://i.imgur.com/74fmzvG.png
---

Release 2018.1.16 is a small update to 2018.1.15 that fixes an HQL injection bug, as well as a few other issues. Hat tip to Johannes Moritz for the security report.

The codename for 2018.1.16 is _Hurricane_.  
Bug

- The Karaf poller:test command is not location aware (Issue [NMS-12460](https://issues.opennms.org/browse/NMS-12460))
- NPE while compiling a MIB (Issue [NMS-12472](https://issues.opennms.org/browse/NMS-12472))
- Cannot process SNMPv3 Informs due to random Engine ID associated with users (Issue [NMS-12473](https://issues.opennms.org/browse/NMS-12473))
- Backport date/time format fixes to Meridian 2018 (Issue [NMS-12514](https://issues.opennms.org/browse/NMS-12514))
- HQL Injection (Issue [NMS-12572](https://issues.opennms.org/browse/NMS-12572))
How I made Flappy Pose, Flappy Bird but where you flap with your arms
Tags: javascript, computervision, game, tutorial
Published: 2020-03-03 21:18:26

{% tweet 1233612479869194240 %}

Now that my muscles aren't sore from a day full of flapping, I wanted to take a moment to show you how I made the flapping portion of the game. For brevity, I'll only be covering the flapping portion, but if you'd like to see how I made the actual game itself I recommend watching this video:

{% youtube cXgA1d_E-jY %}

## Initializing PoseNet through ml5.js

[ml5.js](https://ml5js.org/) is a super friendly library for using Machine Learning on the web. It comes packaged with a few computer vision models, and the one we're interested in for flapping is [PoseNet](https://learn.ml5js.org/docs/#/reference/posenet).

So the first thing I did was add ml5.js and p5.js to the page:

```html
<script src="https://unpkg.com/ml5@0.4.3/dist/ml5.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/p5@0.10.2/lib/p5.js"></script>
```

The next step is to initialize PoseNet. This is done by passing a video element, a callback to run once it's done, and optimization options:

```js
  // createCapture is a P5.js method that creates a webcam stream
  video = createCapture(VIDEO)
  video.hide()

  // Initialize posenet...easy peasy!
  posenet = ml5.poseNet(video, () => {console.log('posenet ready!'}, { maxPoseDetections: 1})
```

The next step is to watch for flaps. In my approach, I consider a flap to start when the wrists go above shoulder level and end when the wrists fall back below shoulder level.

To determine how this happens, we first need to listen for posenet poses. This is done with `posenet.on('pose', callback)`. The callback here receives a pose object with [17 keypoints](https://github.com/tensorflow/tfjs-models/tree/master/posenet#keypoints) and their positions. The ones we're interested in are keypoints 9 and 10 (wrists) and 5 and 6 (shoulders).

To get flapping to work, we simply compare the keypoints y values and run a method when the flap occurs:

```js
  posenet.on('pose', poses => {
    pose = poses[0].pose

    // Detect up flap
    // (Note: I add 40 to the y so we don't have to flap as high)
    if (
      pose.keypoints[9].position.y < pose.keypoints[5].position.y + 40 &&
      pose.keypoints[10].position.y < pose.keypoints[6].position.y + 40
    ) {
      hasFlappedUp = true
    }

    // Detect down flap
    if (
      hasFlappedUp &&
      pose.keypoints[9].position.y > pose.keypoints[5].position.y + 40 &&
      pose.keypoints[10].position.y > pose.keypoints[6].position.y + 40
    ) {
      hasFlappedUp = false

      // FLAP 🐦
      bird.flap()
    }
  })
```

## That's all there is to it!

You can look through the [source code on Glitch](https://glitch.com/edit/#!/flappy-pose?path=README.md:1:0), or [try the demo](https://flappy-pose.glitch.me/) out yourself.

Thanks for reading and happy flapping!

[Follow me on Twitter @CheckboxOz](https://github.com/checkboxoz)
MoreWomenInTech = MoreIdeas
Tags: wecoded, discuss
Published: 2020-03-03 21:15:57

<!-- ✨This template is only meant to get your ideas going, so please feel free to write your own title & narrative! ✨ -->

I am really glad to see that women are coming up with new ideas, innovating something and not only that they are also becoming successful leaders. 
The foundation of the developer community is completely dependent on the people who are contributing to it.
Our developer community has been so supportive in encouraging every person who has been taking initiative to contribute irrespective of gender. There are many famous women developers like Ada Lovelace, Grace Hopper, Edith Clarke and many others who have changed the perspective that the technology field is led by men.
Women are now actively taking initiative in creating a community which helps in inviting more female developers via [inspiring conferences](https://www.themuse.com/advice/4-inspiring-conferences-you-need-to-attend-if-youre-a-woman-in-the-tech-industry), hackathons and coding challenges which are dedicated to women.

I have been coding since my college days and always made sure that the eagerness to learn never dies. Since the tech is evolving at such a fast pace, it has become the need of the hour to keep ourselves updated. I remember back in my college days when I was very fond of C++. I used it for so many years for competitive coding. Later, Java came in the picture which helped me to learn a lot about Object-Oriented Programming. Now, I have switched to Javascript and I very much enjoy working in it. Apart from this I always enjoy solving coding puzzles. Here I have one for you in javascript. Just for fun :stuck_out_tongue_winking_eye:


**_Write a function f that returns Hello, world!.
Every line must have at most 2 characters, and the total number of lines must be less than 40._**

This is the wrong solution :wink: 
```javascript
function f () { return 'Hello, world!'; }
// or
const f = _ => 'Hello, world!';
```

Let me know your thoughts?


I really :heart: the way that there are many organizations like Women Who Code who are actively promoting and facilitating women's contribution to the tech industry through different series of events. In order to encourage more participation, there should be more meetups, conferences, and sessions at each level starting from corporate to a community level to spread the word and onboard more amazing developers! :smile: