teleren/devto huggingface dataset:
Choose a technology stack, choose your fate...
Tags: discuss, help
Published: 2020-02-27 01:28:32

---
title: Choose a technology stack, choose your fate...
published: true 
tags: discuss, techtalks, help
canonical_url: https://softwareapi.wordpress.com/2020/02/27/choose-a-technology-choose-your-fate/
---

At times, starting a fresh software project can be pretty daunting. There's nothing more exciting than a blank canvas, and yet, there's a lot to plan and consider which can make it difficult to know whether the choices we make are the right ones. Resources, design and architecture, tooling, releases, documentation - we all know the list goes on and it all needs to be considered. And though it's true that we should strive to be technology independent in our approach, ultimately, it doesn't always work out that way in practice. 

So perhaps one of the most impactful factors in the long-term is the technological choices we make. We often have a vision in mind for the end product which might include a backlog of features and the platforms it should be available on, but failing to consider or evaluate our options when making these early technological choices that we ultimately rely upon, can easily morph into a headache of technical debt or limitations down the road. 

In short, many of the factors which I've witnessed often sound a little like _"we use it because we know it"_, _"we've always supported XYZ so why try and support ABC, too?"_, _"this is the new hotness - let's use it for something"_, _"let's branch out a bit and learn and use ABC"_, _"XYZ has had solid and consistent development and maintenance so it seems a safe bet"_.

For example, you can find plenty of information about options for starting a new cross-platform desktop GUI project - a wealth of tech-stack options exist from the usual suspects (Electron, Element, Qt, _X_ + GTK*, Java Swing, JavaFX, .NETCore + AvaloniaUI, etc.), all the way to the more elaborate solutions like locally hosted web applications, but the question remains: what criteria and process do you find works well to whittle them down when you don't have strong experience of them all? 

I often find a few simple spike projects in the main options and a browse of some documentation and community discussion will help, but time isn't always on our side to allow that kind of experimentation. For me, it's a key factor that there be well-written and comprehensive the documentation, and a thriving community for help and discussion!

I'd love to hear about what processes and constraints you find useful when deciding which competing technology stack to use to kick-start the product into life. How do you, your team, or organisations go about weighting technology choices and making a decision? Are there any resources you've found particularly enlightening in these situations?
Code Pixel - Write better documentation
Published: 2020-02-27 00:39:35

## 1 - Stay simple

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

We all want to add every single detail in our documentation. But sometimes, less is more. Get straight to the point.

## 2 - Avoid patronizing vocabulary

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

“It’s super easy”… Yet, if your users are struggling to follow the steps in your documentation, that can make them feel bad and give up. Avoid patronizing language in your documentation as much as you can.

## 3 - Make it searchable

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

If your documentation is a standalone site, make it searchable. Tools like Algolia allow you to implement a search engine on your site with a few steps.

## 4 - Be polyglot

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

If you can, display the code snippets in multiple languages, relevant to your users.

---

You can also find these pixels on my Instagram: https://instagram.com/valentinprgnd. I will publish Pixels every Monday, Wednesday, and Friday about career development in tech, code, mental health and health for developers. Follow me for more tips @valentinprngd and check out my podcast https://rebased.whatdafox.com.
Secure your Azure web applications
Tags: azure, security, cloud, azurespringclean
Published: 2020-02-27 00:24:13

---
title: Secure your Azure web applications
published: true
description: Some simple (yet powerful) tips that will help you secure your Azure web applications.
tags: Azure, Security, Cloud, AzureSpringClean
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/grk1m5hu58qoxvqo8pv7.png
---

This article is part of the #AzureSpringClean initiative by Joe Carlyle ([@wedoazure](https://twitter.com/wedoazure)) and Thomas Thornton([@tamstar1234](https://twitter.com/tamstar1234)) includes community driven articles that highlight best-practices, lessons learned, and help with some of the more difficult topics of Azure Management.

Throughout the month of February 2020, you'll find helpful articles published daily by community members, so make sure to check it out every day by visiting [the official website](https://www.azurespringclean.com/).

Furthermore, you can follow the conversation on Twitter with the hashtag [#AzureSpringClean](https://twitter.com/search?q=%23AzureSpringClean).


Today, I'll walk you through some simple (yet powerful) steps that will help you strengthen your Azure web applications.


{% youtube PZm4aRDk8iM %}

Enjoy! :)
Argon Trail: A Pre-RailsConf Hike
Tags: ruby, rails, railsconf
Published: 2020-02-27 00:21:36

---
title: Argon Trail: A Pre-RailsConf Hike
published: true
description: Attending RailsConf 2020 in Portland, Oregon? Come join the Planet Argon team on a guided hike to enjoy the beauty of the Pacific Northwest.
tags: ruby, rails, rubyonrails, railsconf 
---

![ArgonTrail](https://dev-to-uploads.s3.amazonaws.com/i/icbyx1e1csny3mx139w0.png)

Are you attending RailsConf 2020 in Portland, Oregon? Come join the Planet Argon team on a guided hike to enjoy the beauty of the Pacific Northwest. You can [reserve a spot now](https://hi.planetargon.com/argontrail).

We first took Rails developers on the Argon Trail [back in 2013](https://blog.planetargon.com/entries/argon-trail) and we're bringing back the event for RailsConf 2020. Take a break from your laptop, meet fellow Rails developers from around the world, and take in the beauty of the Pacific Northwest. Planet Argon is taking care of your travel to and from the convention center, snacks, water, and maybe a few other surprises.

Questions? Leave me a comment or email events@planetargon.com for info.

[Click here](https://hi.planetargon.com/argontrail) to reserve a spot on the bus!

Hope to see you there!
Fullcalendar v4 Example
Published: 2020-02-29 11:17:16

---
title: Fullcalendar v4 Example
published: true
date: 2020-02-27 00:00:00 UTC
tags: 
canonical_url: 
---

Hi GuysThis post will give you example of fullcalendar version 4 example you will learn fullcalendar v4 you can understand a concept of fullcalendar example code i would like to share with you fullcalendar v4 basic exampleI will show the example of fullcalendar v4I will show basic ex
Fullcalendar v4 Add Event Example
Published: 2020-03-02 10:01:41

---
title: Fullcalendar v4 Add Event Example
published: true
date: 2020-02-27 00:00:00 UTC
tags: 
canonical_url: 
---

Hi GuysToday our leading topic is fullcalendar v4 add event example This tutorial will give you simple example of fullcalendar v4 add event this example will help you fullcalendar add event example code this example will help you fullcalendar v4 add event basic exampleI will show the ex
NodeWatch/Bangle.js demo talk
Tags: javascript, iot, espruino, tensorflow
Published: 2020-04-26 22:15:11

---
title: NodeWatch/Bangle.js demo talk
published: true
date: 2020-02-27 00:00:00 UTC
tags: javascript,iot,espruino,tensorflow
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/r7mylg8cpbnp4j47fpos.jpg
canonical_url: 
---

> The world’s first hackable open source JavaScript-powered and TensorFlow-powered smartwatch


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

[Nodewatch/ Bangle.js](https://nodewatch.dev) was [introduced as the conference badge](https://www.nearform.com/blog/bangle-js-hackable-oss-js-and-tensorflow-smartwatch/) at Nodeconf EU in November. A [Kickstarter](https://www.kickstarter.com/projects/gfw/banglejs-the-hackable-smart-watch) that followed was swiftly funded.

I had received my watch from NearForm in the post (employee benefits!) - and I didn't know what to do with it yet. But too good not to share for a quick lightning demo at [LNUG](https://lnug.org).


[See the talk on YouTube](https://www.youtube.com/watch?v=xN2mCmz3rig&feature=youtu.be)

[Download the slides](https://admataz.com/notes/nodewatch-banglejs-lnug-talk/docs/nodewatch-presentation.pdf) from the talk


{% youtube xN2mCmz3rig %}
Do you love the right person? 
Tags: love, life, wisdom
Published: 2020-02-26 23:11:36

No one has found a definite and rigid meaning for love. To some, it's dead, to some, it's life itself. At one point or the other in our life, we've loved, we've been loved, but are those people the right people we were supposed to love or are we deserving of others' love? People make costly mistakes because they love the wrong person, they showered attention on who they are not supposed to. *"you don't love with your heart alone, you love with your eyes wide open"*. Many have fallen victims to loving the wrong people with the notion of *love is blind*, but we don't have to be wictims, because we need to open our eyes and love who deserves our love and leave those that doesn't out of it. *love your neighbor as you love yourself* means you should love your neighbors because they deserve your love just like you deserve your love. We can't all be good in this world, but we can live happily if we decide to follow not just our eyes or our heart alone, but if we listen to what they tell us and make life changing decisions from them. Someone who has lived for over 20 years with his/her partner doesn't have a secret love potion or magic trick on his/her sleeves, but because he was able to find the **right love** and the **right person**. 
**"True love is not found, it is developed, and you develop it from loving the right person"**.
DebConf 2021 in Kosovo 
Tags: debian, opensource, debconf
Published: 2020-02-26 22:53:48

* What is Debian OS? (Source: https://www.debian.org/)

Debian is a free operating system (OS) for your computer. An operating system is the set of basic programs and utilities that make your computer run.

Debian provides more than a pure OS: it comes with over 59000 packages, precompiled software bundled up in a nice format for easy installation on your machine.

* What is CoderGals? (Source: https://codergals.github.io/)

CoderGals is an NGO based in Prishtina, Kosovo.

Back in 2017, we organized our first event -> The CoderGals Hackathon.

We invited one of the Debian Developers, and with the support of the US Embassy, companies from Kosovo such as Gjirafa50.com, we successfully organized the Coder Gals Hackathon, one of the first of its kind. 26 Software Developer Girls gathered together in Prizren, Kosovo. 

The CoderGals hackathon for the first time brought in Kosovo the Debian Community, and continued to work towards creating a Kosovo Debian Community as well.

From the CoderGals hackathon, nearly 20% of the participants were accepted in Google Summer of Code internship, working on Debian Projects. For the first time, three students from Kosovo were working remotely in one of the biggest tech companies.

* What is a community? (Source: https://en.wikipedia.org/wiki/Community)

A community is a social unit (a group of living things) with commonality such as norms, religion, values, customs, or identity. Communities may share a sense of place situated in a given geographical area (e.g. a country, village, town, or neighbourhood) or in virtual space through communication platforms.

* CoderGals vision?

Our mission is to empower people of any background to be represented as technical leaders, executives, founders, board members, and software engineers. 

* Debian OS Conference 2021

Debian Community had the opportunity to meet with a group of Software Developer Girls from Kosovo. The Coder Gals community had the chance to propose and present a bid presentation for having the Debian OS Conference 2021 in Kosovo. 

Our community members Qendresa, Enkelena, Diellza, Elena and Albiona were participating in the Debian Conference 2019 in Brazil, Curitiba, where the presentation took place as the main event for the future Debian Conferences. 

* FLOSSK - Free/Libre Open Source Software Kosova

Besides the presentation, we joined our forces with FLOSSK on organizing the Debian Conference 2021.


* Debian Conference 2021 goes to...


The decision to chose between India and Kosovo was a tough one, as mentioned here: https://lists.debian.org/debconf-announce/2020/02/msg00000.html?fbclid=IwAR1v1-aqKXXu19tKrC1WGFuAhseCQTnEUcLzjzqklGNrtgkrARyXS2KfmK4



And DebConf21 is coming to Kosovo 

> Thank you to the Debian Community for the trust as we look forward to living up to our renowned hospitality.
Everyone should write an operating system once
Tags: showdev, opensource, retro
Published: 2020-02-26 22:41:26

---
title: Everyone should write an operating system once
published: true
description: Publishing my first and only effort to write a bare metal x86 kernel
tags: showdev, opensource, retro
---

The saying goes: [Try everything once except incest and folk dancing](https://www.quotes.net/quote/10621), which for me at the tender age of 25 included attempting to write my own x86 kernel, bootloader and a few hardware drivers. Yeah I was and still am slightly mad.

This self-education / masochism ate up many evenings and weekends from 1992-95 then languished on a backup tape for 25 years, until today. Be nice to me :)

[edit - moved to sourcehut]
https://git.sr.ht/~phlash/litetask

For anyone interested in following a similar path, I now recommend the [OSDev Wiki](https://wiki.osdev.org/Main_Page), which would have really helped back in the day of almost no Internet!
Try useStateOnce if you are about to init a heavy state
Tags: react, hook, concent
Published: 2020-02-26 21:57:21

[star me if you like it](https://github.com/concentjs/use-state-once), thx.

### motivation
upgrade react useState hook, let the state been initialized only one time, hope you guys like it.

## traditional `useState`

```js
import React, { useState } from "react";

function Demo() {
  // if user pass a heavy state to useState
  // this state will been initialized in every render period
  const [heavyState] = useState(Array(1000000));
  return <h3>{heavyState.length}</h3>;
}
```

## with `useStateOnce`
`useStateOnce` accept normal state or function state
if user pass function state to `useStateOnce`, it will only been called one time
so user can completely replace `React.useState` with `useStateOnce`
```js
import React from "react";
import useStateOnce from "use-state-once";

const state = () => {
  console.log("this function will only been called one time");
  return Array(1000000);
};

function Demo() {
  // useStateOnce accept normal state or function state;
  // if user pass function state to useStateOnce, it will only been called one time
  const [heavyState, setHeavyState] = useStateOnce(state);
  return <h3>{heavyState.length}</h3>;
}
```
{% codesandbox use-state-once-demo-uy6tq %}

### Concent also provide this ability
[Concent](https://github.com/concentjs/concent)'s api `useConcent` also have the same effect with `useStateOnce` when user pass a private state to it;

{% codesandbox green-tdd-g2mcr %}

> you can also open the SandBox, and copy the other file's content to file `App.js` to see the more concent funny features.
Setting Up the Programming Environment for Java pt. I (as a legally blind person)
Tags: a11y, beginnerprogramming, codenewbie
Published: 2020-02-26 21:53:56

---
title: Setting Up the Programming Environment for Java pt. I (as a legally blind person)
published: true
description: 
tags: a11y, beginner_programming, codenewbie, accessibility
---

I've been hesitant to post this as I try not to corner myself as a blind person but here's a post on what I do to make things easier as someone with shit eyesight. 

The most important thing to do is recognize that yes, your eyesight is shit. You've got to embrace this. Once you do this, everything will be much easier. BUT understand the better you are at blending in or hiding your bad eyesight, the more people will disbelieve you and think your eyesight is truly not bad. I've been accused of lackluster effort multiple times by people (including friends and family) because they don't realize how certain things (socializing, reading emotional cues, interpersonal relationships in general) is far easier even second nature if you are blessed with decent site. So this embrace must be external as it is internal. This will be hard (especially in the unfriendly tech sector) and it will take a very long time, but it is necessary and worth it!

Ok now to the programming stuff. You are going to need a place to write your code. I'm going to use Notepad because it comes preinstalled in Windows. I like to set the font size to 22px for black on white and 28px for white on black. To open Notepad, click on the magnifier icon/ search bar at the bottom of the screen and type in "Notepad". After it is opened, click "Format", go to "Font" and under "Site" choose the size you prefer.

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

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

Next, you need a place to tell the computer to compile and run your program (don't worry, I'll go over what this means in a later post). Luckily this place is also preinstalled in the computer. This is called the terminal (it has many other names like command line and command prompt). It lets you tell the computer what to do using texts instead of clicking on pictures (icons). For example, to open Chrome, you might click on the Chrome icon but in the terminal you can enter "chrome.exe tumblr.com". Open the terminal like you did for Notepad. In the search bar, type in "terminal", click it and then once it's opened right click, go to "Properties". Click font to change the font size (I have mine set to 28px), go to "Color" to change the text.

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

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

All right! There you have it! We'll use this setup for the first program that we'll write!
Using TypeScript Function Overloads For Distinct Component Props
Tags: react, typescript
Published: 2020-02-26 21:47:37

Have you ever written a component that has two distinct props interfaces that can be passed in?

```tsx
type AspectRatioProps = {
  aspectRatio: string;
  width: number;
}

type WidthHeightProps = {
  width: number;
  height: number;
}

type Props = {
  width?: number;
  height?: number;
  aspectRatio?: string;
}

export function Image(props: Props) {
  // Imagine there is some logic to handle these props
  return <div>placeholder</div>
}
```

The idea here is that you want the consumer of this component to either pass in aspectRatio or width & height, but not both. 

Using one `Props` interface, you can't communicate that you want one or the other. We know the two distinct interfaces are not a [union](https://www.typescriptlang.org/docs/handbook/advanced-types.html#union-types), but you may think you can [intersection](https://www.typescriptlang.org/docs/handbook/advanced-types.html#intersection-types) the types together. I'm afraid it doesn't turn out so pretty:

```tsx
export function Image(props: AspectRatioProps | WidthHeightProps) {
  // Imagine there is some logic to handle these props
  return <div>placeholder</div>
}
```

![](https://zappy.zapier.com/0dcdc4b340a5fca7dae464998b497c74.png)

We want to be able to pass in an `aspectRatio` and `width` to this component, or `width` and `height`, but not both! TypeScript seems to be not cooperating.

I wouldn't be writing this article just to tell you it's not possible though! 

![](https://media.giphy.com/media/ToMjGpKniGqRNLGBrhu/giphy.gif)

We can accomplish our goal with TypeScript function overloads.

```tsx
export function Image(props: AspectRatioProps): React.ReactElement;
export function Image(props: WidthHeightProps): React.ReactElement;
export function Image(props: AspectRatioProps | WidthHeightProps) {
  // Imagine there is some logic to handle these props
  return <div>placeholder</div>
}
```

Function overloads tell your code that there are different signatures for this function. In this case, the function always returns a React element but you could even make it return different types if you wanted!

Check out how TypeScript correctly validates the usage of the component in [the sample code](
https://www.typescriptlang.org/play/?jsx=1&ts=3.8-Beta#code/JYWwDg9gTgLgBAJQKYEMDG8BmUIjgcilQ3wChSYBPMJOAQQGcaMEUZgIAFHMBuAXjgBvUnDgomSFmw4AuOAxhRgAOwDmAblFwA7sAAmMABbyVAVxAAjJFC0BfclRpwA6geMAJJMDVGY3CF4BYW09QxM4cysbLTEjb18YUwtrW1IHCmpaAKDBETEw4wB+ZOi0uIS-EsiUmO0JZhhWdghqxWV1e3IkAA9IWDhMMxUMDhU4AEkQFDUkAAowHgZ5RkbmjhyGAEp5ZHQYADo9jABRABskECQVGC1e-qxh0YhxqZn5xcDl13cjLx8-JsdohiIdjjBzpdrrdSPdoI8Ri1XtNZgslitJNIWps4AAfH7hf6JIEhMQAejJkxRqloxhstGAfAYuFoZwgamAaDgMAgcCMKBU+gu3PiDFon142iIMDMUHGAB59MAAG4APjAZ3QSCMEDO+hs8rJSrV6XIaBeikGEF5gnlb1m4kxTRkEH4ACIAIyyABMbrgZNVpHNKktlhQUGCdpRtEKRn4QgAzHZ-YHg6GUAAvSP22jxAEwePe5MBoMW+AgTn8pBnbPR3S-eMe5N5xKF4upssKHVnKi19718KN5MNKTOlrur2+lOlkPwBgoSgMLxnNl9h2xod8yoFoRFx1rF3uhOyAAsfoDQA) in a TypeScript Playground.

Cheers!