teleren/devto huggingface dataset:
Coding in Public - discussing business strategy
Tags: devops
Published: 2021-10-13 16:01:36

I'm jumping into the saturated market of URL shorteners.  In this video I discuss why and my strategy to succeed.

{% youtube QY88-z31lIc %}

I'm going to build the initial framework of a shortened URL service.  I already have the shortened URL portion working for in-house purposes, but I'll be enhancing that and creating a more commercial version so I can start marketing it as a SaaS.

I'll be coding in PHP, JavaScript, SQL and using the Wizards Toolkit which is a low-code development environment.

While coding I discuss the business aspects of creating a SaaS and marketing basics.  How to pick a niche and choose what to do to be Different and Better when in an oversaturated market. 

First step was reviewing the competition... and there is a lot of competition in this market.

Before starting a company always clearly define your intent and goals.  Otherwise you can easily get side-tracked by the minutia and spend hours, days or months working on aspects which are not really important.

My goals for this SaaS are prioritized as:
- attractive finished product to showcase as a "Built by Wizards Toolkit"
- good solid analytics for use by my own company
- commercial quality SaaS that generates some income

If this takes off and starts earning a lot of money, that's great.  But that's not the primary purpose.  When I started reviewing the competition I realized I don't want to focus and compete with the ones that offer the most advanced features and functionality.  I love the analytics portion and want that for my own needs, so I don't want to just build the bare minimum URL shortener service either.

Note, if I was building this as my hopeful sole source of income I would spend at least a week analyzing the competition and their marketing strategies and I'd put a whole lot more time into designing my pricing structure and marketing strategy.  What niche I would go after first, which features have the most google searches, and I would poll customers of other services on what they like most or least about the competition.

But that time investment is not in line with my primary two goals.  So instead yesterday I spent 90 minutes reviewing the competitions' website and the pricing/features analytics that I had a colleague put together.  Then I went fishing so my subconscious could consolidate and absorb the mass amount of information to settle on a master plan.

Lots more details are in video.

## Low-code Wizards Toolkit library of PHP, SQL and JavaScript
https://wizardstoolkit.com

## HTML/CSS/JS Framework
https://materializecss.com
Fibonacci Sequence in Java
Tags: java, algorithms, beginners, tutorial
Published: 2021-10-13 15:58:08

The Fibonacci sequence is one of the most famous formulas in mathematics. Each number in the sequence is the sum of the two numbers that precede it. So, the sequence goes: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, and so on.

{% youtube W-SAPEOP6g4 %}
Clean up Github Actions Workflow Runs in PowerShell
Tags: powershell, github, operations, ci
Published: 2021-10-13 15:47:01

Eager to set up all the CI bells-and-whistles, I went to test out Github Actions Workflows in a small, simple Python project.

I had two peculiarities with the project I was testing it with, though:

1. It's a serial modem adapter (yes, [this kind](https://www.youtube.com/watch?v=ckc6XSSh52w)) and I was using my git repo largely to version code and move it my Raspberry Pi.

2. After every test, I'd realize I needed another serial setting. Rather than polluting my commit history with broken intermediary projects, I would just [amend the same commit](https://dev.to/msanford/rebasing-to-avoid-merge-commits-2k0k) and force push over and over. That rendered past Workflow runs uninformative garbage because they no longer referred to commits in the repo's history.

Now that I'm back in a more Operations-focused role, I'm keen to use PowerShell where I can, so I whipped up this "one-liner":

{% gist https://gist.github.com/michaelsanford/155db092767d5373ba8bce7ea98f4783 %}

based on the bash-isms found herein (I also posted this as an answer there):

{% stackoverflow 57927115 %}
The New and Deadly FontOnLake Malware Family
Tags: linux, virus
Published: 2021-10-13 15:33:10

###This new Malware family is up to no good:
___
* A very clever malware designed with 3 components: - trojanized applications, - backdoors, and - rootkits. 🐞

___
* It employs a rootkit to conceal its presence and uses different command and control servers for each sample, maintaining a low profile on your system as if nothing is happening will it cause havoc.

---
* It is designed to launch and mediate access to a local SSH server, update itself, and transmit collected credentials. 🔒

---
* FontOnLake is capable of file manipulation, updating itself, and uploading and downloading files

---
* It accepts remote connections, serves as a proxy and can download and run Python scripts, in addition to exfiltrating credentials.

---
* Surprisingly, this malware targets the one who is immune to most viruses, Linux

---
* And the most scary part is that, it is still under development (and it is this deadly ☠️)

---
source: [securityweek](https://www.securityweek.com/fontonlake-linux-malware-used-targeted-attacks)
El primer trabajo de: Yecely Díaz (Yesi Days)
Tags: career, latam, beginners, spanish
Published: 2021-10-13 15:25:58

## Resumen de la entrevista
[Yecely Díaz](https://www.linkedin.com/in/yesidiaz/) ([Yesi Days](https://twitter.com/silvercorp)) es una científica de datos que tiene muchos años de experiencia en la industria de tecnología. 

Su primer empleo en T.I. fue como maestra en una escuela de computación donde daba clases de diseño gráfico, office... de ahí se fue a trabajar en Gobierno, algo que no le gustó, pero era programadora PHP y hasta Visual Fox Pro le tocó.

En una de sus primeras entrevistas llevó su C.V. engargolado con unas 6 páginas con todos sus diplomas… algo que no recomienda, pero igual no la limitó a obtener aquel empleo, el cual cree que fue gracias a networking.

> No soy experta, pero si quieres a alguien motivada, esa soy yo.

Aquí te dejo algunos highlights, y abajo puedes leer o ver la entrevista que le hice a Yesi.

**Primeros empleos formales**
* Dar clases de computación
* Gobierno, programadora web PHP

**¿Cómo consiguió su primer trabajo?**
* Una profesora la recomendó.
* A través de alguien conocido que le comentó que estaban buscando personas. 

**Lecciones aprendidas en el primer trabajo**
* Tener paciencia y gusto por enseñar
* Que en gobierno no se podía crecer si no se hacía compañerismo, mejor buscar otro trabajo aunque fuera con menos salario

** Mito a romper **
No necesitas experiencia para tu primer trabajo, pero si le debes de echar ganas, terminando de trabajar se ponía a estudiar para aprovechar la oportunidad y demostrar que podría dar más. 

Tu primer trabajo no define el resto de tu carrera, Yesi empieza con Fox Pro, algo que nada que ver con lo que esta trabajando ahora.

---- 

## Entrevista completa en YouTube
{% youtube T2xfak8int8 %}

## Transcript de la entrevista
\<\< Pendiente \>\>

---- 
Espero que te haya gustado este blog post si crees que se me fue algo no dudes en dejar comentarios.  

Sigo trabajando en mis productos con el fin de ayudar de forma más estructurada a la comunidad de TI, si te interesan [pásale a mi perfil de Gumroad](https://marianorenteria.gumroad.com/)
- 📕 Líder Técnico
- 📘 De Junior a Senior
- 🗓 Mentorías
- 📑 Revisión de C.V.

Te invito a que **[me sigas en Twitter](https://twitter.com/marianorenteria/)** para que te enteres de todo el contenido que hago normalmente 🙃.

También soy creador del [podcast Chile, Mole & Tech](#)(https://dev.to/chilemoleytech), el cual esta [en todas las plataformas](#)(https://linktr.ee/chilemoleytech).

**Si te gusto este post, no dudes en compartirlo, me ayuda mucho.**
C#: Casting and type conversions
Published: 2021-10-13 15:21:22

C# is statically-type at compile time, after a variable is declared, it cannot be declared again or assigned a value of another type unless that type implicitly convertible to the variable's type.

###Implicit conversions
For built-in numeric types, an implicit conversion can be made when the value to be stored can fit into the variable without being truncated or rounded off. For integral types, this means the range of the source type is a proper subset of the range for the target type. For example, a variable of type long (64-bit integer) can store any value that an int (32-bit integer) can store. In the following example, the compiler implicitly converts the value of num on the right to a type long before assigning it to bigNum.
```
// Implicit conversion. A long can
// hold any value an int can hold, and more!
int num = 2147483647;
long bigNum = num;
```
For a complete list of all implicit numeric conversions, see the Implicit numeric conversions section of the Built-in numeric conversions article.

For reference types, an implicit conversion always exists from a class to any one of its direct or indirect base classes or interfaces. No special syntax is necessary because a derived class always contains all the members of a base class.

```
Derived d = new Derived();
// Always OK.
Base b = d;
```

###Explicit conversions
However, if a conversion cannot be made without a risk of losing information, the compiler requires that you perform an explicit conversion, which is called a cast. A cast is a way of explicitly informing the compiler that you intend to make the conversion and that you are aware that data loss might occur, or the cast may fail at runtime. To perform a cast, specify the type that you are casting to in parentheses in front of the value or variable to be converted. The following program casts a double to an int. The program will not compile without the cast.
```
class Test
{
    static void Main()
    {
        double x = 1234.7;
        int a;
        // Cast double to int.
        a = (int)x;
        System.Console.WriteLine(a);
    }
}
// Output: 1234
```
For a complete list of supported explicit numeric conversions, see the Explicit numeric conversions section of the Built-in numeric conversions article.
For reference types, an explicit cast is required if you need to convert from a base type to a derived type:
```
// Create a new derived type.
Giraffe g = new Giraffe();

// Implicit conversion to base type is safe.
Animal a = g;

// Explicit conversion is required to cast back
// to derived type. Note: This will compile but will
// throw an exception at run time if the right-side
// object is not in fact a Giraffe.
Giraffe g2 = (Giraffe)a;
```
A cast operation between reference types does not change the run-time type of the underlying object; it only changes the type of the value that is being used as a reference to that object. For more information, see Polymorphism.
Good Map Usage?
Tags: javascript, typescript, react, programming
Published: 2021-10-13 15:09:39

Do you think this is a good usage of map in terms on readability / performance?

Lets say I'm making a list of notes but only allow 1 per day, You have a list of your notes:

```
[
{id: 1, date: "2021-10-12", content: "hello world!"}, 
{id: 2, date: "2021-10-13", content: "hope you have a great day!"}
]
```

We have a text field and a submit button, on click we call `upsertNote()` which will update the array if it's the same day or will add a new record i.e:

```
usertNote({date: "2021-10-13", content: "how you get through today!"})
// output:
{id: 2, date: "2021-10-13", content: "how you get through today!"}

usertNote({date: "2021-10-14", content: "Future me!"})
// output:
{id: 3, date: "2021-10-14", content: "future me!"}
```

Notice how one updates the existing entry and the other creates a new one. 

Now lets say we want to add to our existing list. We could do a search on the array for the id but what if we used a Map instead? 

Is that better in terms on readability and performace?

e.g.
```
const toDoList = new Map(originalArray.map((i) => [i.id, i]))
const upsertToDoEntry = usertNote({date: "2021-10-14", content: "Future me!"})

toDoList.set(upsertToDoEntry.id, upsertToDoEntry)

// In our react if we wanted to map these out we'd have to do something like this:
Array.from(toDoList , ([id, toDoEntry]) => (
<span key={id}>{toDoEntry.content}</span>
)
```

Would you implement it this way? :)
How to be a better leader
Tags: career, productivity, leadership
Published: 2021-10-13 15:06:18

# Be proactive

Proactiveness is good not for only leader but for every teammate. But as a leader you should upgrade your proactivity to the sky. But do not create mess and chaos, your actions must create great impact to project and team growth.

Your team is like reflection in a mirror. They will unknowingly copy your attitude, passion and productivity.

Be that guy/girl you’d follow, reflect on your decisions and actions.

# Be a human and know your team

Don’t forget that your teammates are humans too :wink: They have good and bad moments in their life, which reflects in their work and productivity. Build the bridge of trust to talk openly. It will boost your relationship and make great impact on productivity. To know yourself and your team work on yours mindfulness and empathy. This skills matter!

Your job is to create open and healthy climate, where anyone is not afraid to ask questions, to take the initiative and responsibility for their actions.

Hold regular one-on-one, be sincere, fair and honest, learn to trust your team.

# Know what business wants

As leader you should know what business needs. Know your users and stakeholders. You should make decisions on business needs but do not forget about your team. Try to find win-win solutions.

Always use product you build, the worst thing can happen is growing gap between your team and users.


---
And what do you do to be a better leader?
Wednesday Links - Edition 2021-10-13
Tags: java, spring, elasticsearch, gradle
Published: 2021-10-13 14:34:38


Ten Things I Love About Java 17 (17 min read)❤️
https://todd.ginsberg.com/post/java-17/ten-things-i-love/

Oracle Proposes Shorter Java LTS Cycle of Two Years (3 min read)🚄
https://www.infoq.com/news/2021/10/oracle-java-two-year-lts

The javac Tree API (3 min read)🌳
https://inside.java/2021/09/20/javac-tree-api/

Performance impact of java.lang.System.getProperty (3 min read)🐌
https://blog.ycrash.io/2021/10/06/performance-impact-of-java-lang-system-getproperty/

Big problems at the timezone database (5 min read)⌛
https://blog.joda.org/2021/09/big-problems-at-timezone-database.html

Git Command Explorer (30s)🧭
https://gitexplorer.com/

Mockito 4.0.0 released (30s read)🍹
https://twitter.com/MockitoJava/status/1446121357280903181

Faster Maven builds in Docker (7 min read)🏃
https://blog.frankel.ch/faster-maven-builds/2/

A Gradle quickie: properly using dependsOn (3 min read)💁🏻
https://melix.github.io/blog/2021/10/gradle-quickie-dependson.html

IDEA can autocomplete Docker image names (30s read)🐳
https://twitter.com/poggs/status/1447167611175940096

All About Opt-In Annotations (9 min read)✋
https://zsmb.co/opt-in-annotations/

Multiple instances of the same configuration properties class in Spring Boot (4 min read)✖️
https://info.michael-simons.eu/2021/09/29/multiple-instances-of-configuration-properties-in-spring-boot/

How to ruin your Elasticsearch performance - Part 1 & 2 (8 + 16 min read)🐢
https://blog.allegro.tech/2021/09/how-to-ruin-elasticsearch-performance-part-i.html
https://blog.allegro.tech/2021/10/how-to-ruin-elasticsearch-performance-part-ii.html

CDN: Content Delivery Network: global scale caching (~4 min)🌐
https://nurkiewicz.com/53

Extracting text from any file is harder than it looks. Extracting formatting is even harder (12 min read)📜
https://stackoverflow.blog/2021/10/04/extracting-text-from-any-file-is-harder-than-it-looks-extracting-formatting-is-even-harder
powerful javascript and simple schema builder for value parsing and validation.
Tags: javascript, tools, validating, opensource
Published: 2021-10-13 14:28:44

# volder
link:[volder](https://github.com/devSupporters/volder)
don't forget to leave a star in the repo

**volder** is a powerful JavaScript schema builder for value parsing and validation. Define a schema and validate values, volder schema are extremely simple to use, it has custom error messages, custom types, nested schemas.


## Contents

- [⬇️ Installation](#Installation)
- [🔍 Usage](#Usage)
- [⚠️ Custom error messages](#Custom-error-messages)
- [🖥️ Custom type validator](#Custom-type-validator)
- [⚒️ Nested schemas](#Nested-schemas)

## Installation

`npm install --save volder`

## Usage

You can create and validate volder schema objects by:

```js
import Volder from 'volder';
const person = new Volder({
  name: {
    type: String,
    min: 4,
    trim: true,
    required: true
  },
  age: {
    type: Number,
    max: 100
  }
});
const [isValidPerson, errors] = person.validate({ name: 'lion', age: 23 });
```

- return isValidPerson true if an object are valid otherwise false
- if there are error or something wrong return errors object with his option name otherwise return empty object **{}**
- throw an error if validate function paramatere other than object
- all types: `String, Number, Boolean, Object, Array, volderSchema, null` - **null** mean everything -  

## Custom error messages

You Can Define you custom error messages by:

```js
const person = new Volder({
  name: {
    type: [String, "person name shoulde a string"],
    min: [4, "must at least 4 characters"] ,
    required: [true, "name is important"]
  },
  age: {
    type: [Number, "your age can not be a string"],
    max: [100, "age at most 100 years"]
  },
  other:  {
    type: [null, "'other' can be anything than object and array"]
    avoid:  [Object, Array],
    required:false
  }
});
```

## Custom type validator

You Can Define you custom types by adding a validator functions that returns a **boolean**:

```js
import isEmail from 'package';
import isValidPassword from 'package';
const user = new Volder({
  username: String, // use this trick by just add type as option value
  email: {
    type: [isEmail, 'Email is invalid'],
    max: 100
  },
  password: isValidPassword
});
```

## Nested schemas

You Can Define Nested volder schemas by:

```js
import Volder from 'volder';
const person = new Volder({ name: String, age: Number });
const user = new Volder({
  email: { type: String, trim: true },
  person: schema1
});
const [isValid, errors] = person.validate({
  person: { name: 'lion', age: 23 },
  email: 'test@test.com'
});
```

## 📝 License

Copyright © 2021 [salah alhashmi](https://github.com/alguerocode).<br />
This project is [MIT](https://github.com/devSupporters/volder/blob/master/LICENSE) licensed.
Bubble Sort Algorithm Simple Visualization Via Cards
Published: 2021-10-13 14:28:00

So today we're going to cover up how we can visualize the each steps of the algorithms we use .
Today I'm going to cover bubble sort algorithm visualizations via html boxes or you can say cards
each card is going to change it's values from the one as per the algorithm condition, so before doing anything let's understand about the bubble sort algorithm and the required things we need for this task.

Definition of Bubble Sort?
Bubble sort is one of the fundamental forms of sorting in programming. Bubble sort algorithms move through a sequence of data (typically integers) and rearrange them into ascending or descending order one number at a time. To do this, the algorithm compares number X to the adjacent number Y. If X is higher than Y, the two are swapped and the algorithm starts over.
 

What Does Bubble Sort Mean?

The name bubble sort comes from the fact that smaller or larger elements "bubble" to the top of a dataset. In the previous example of [3, 1, 4, 2], the 3 and 4 are bubbling up the dataset to find their proper positions.

This algorithm is alternatively called the sinking sort for the opposite reason; some of the elements are sinking to the bottom of the dataset. In our example, the 1 and the 2 are sinking elements.  



So now we knows about bubble sort algorithm then let's checkout code one by one. 
First we needed html structure as we have in video.
So let's start creating it, well I'm not so much good at frontend so the structure code can be messy,
but you guys can create your own structure and the only thing you need is just javascript code and you'll gonna get it at the end of the article.

![bubble sort algorithm visualization](https://1.bp.blogspot.com/-vhwyV0y8VCs/YWajtaPZdeI/AAAAAAAAEuI/09eK_DRZY30t8pE7HvxyWTwg2Tn0KLRRgCLcBGAsYHQ/s0/data-visualization-bubble-sort-algorithm.PNG)

Live : https://mavensingh.github.io/bubble-sort-algorithm.html

Checkout More Algorithms Solutions : 
https://kdsingh4.blogspot.com
Angular vs Blazor
Tags: angular, webassembly, javascript, dotnet
Published: 2021-10-13 13:17:57

In this blog, you will learn about Blazor, its pros, and a lot more compared to the popular AngularJS development services, which developers have preferred for years.

 
<b>Overview of AngularJS</b>
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/be0sqi01pibf7wvjdjm0.png)
 

It is undoubtedly a largely used JavaScript framework that allows you to execute client web apps in browsers and create native apps. Angular apps consist of various components written with TypeScript or JavaScript. These are decorated with directives for handling things such as binding the HTML or markup to data. Your codes written with Angular will not run directly on web browsers. Therefore, you need compilers to change your code to something which the browsers can easily run.

As Angular 9 uses the Ahead-of-time compiler for transforming the code as a part of the publishing process, the browser can easily download and execute the compiled code. Similarly, one can use a Just-in-time compiler for compiling an app in the web browser. When users access an Angular application, the browser’s JavaScript engine starts to run the app’s code.

 
<b>Overview of Blazor</b>

 ![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s1gn6kjzhaw0c0lqpj05.png)
 

Blazor is a framework that allows creating client web apps for running in browsers but through C# rather than TypeScript. During Blazor development, the apps arrive along with selected packages which are essential for making everything work. For installing the additional packages, you need NuGet.

From there, you create an application as an array of components through the markup language of Razor with UI logic. The browsers cannot directly execute the C# code. Like the Angular Ahead-of-time approach, you have to depend on C# compilers to compile your Razor and C# codes into various .dll files.

For publishing your application, you have to use .NET’s in-built publish commands that bundle up the app into numerous files like HTML, JavaScript, DLLs, CSS, etc. These files then get published to web servers that can serve these static files. If users access the Blazor WASM app, then the JavaScript file supersedes it. This downloads the runtime of .NET, your app, and its dependency before executing the app using WebAssembly. The framework Blazor then updates the DOM renders elements and forwards events to the app code.

<b>Here are the following comparison between Blazor and Angular with details:</b>

 
1.Production Ready

As Angular is much older, it is extremely production-ready in comparison with Blazor.

 
2.Learning Curve

Angular has a larger learning curve compared to easy learning with Blazor.

 
3.Performance

Blazor is less mature in performance.

 
4.Bundle Size

Blazor supports 622kb, and Angular supports less than 50kb.

Learn more here pros of Blazor and Angular with comparison table between them: https://www.rlogical.com/blog/angular-vs-blazor-which-is-the-best-one-to-opt-for-web-development/