teleren/devto huggingface dataset:
SDLC: Iterative Model
Tags: programming, model, beginners, sdlc
Published: 2021-07-21 14:38:12

In the Iterative Model , the development starts with a small set of requirements. Once this set of requirements is completed , then a new set of requirements is implemented again . This process of implementation goes on iteratively until unless the complete set of requirements is not implemented.

In each iteration , we design , test & deploy . Every iteration has a fixed time in which it should be completed . 

Here’s the diagram , representing iterations as ‘Build 1’ , ‘Build 2’ and ‘Build 3’:
![Iterative Model Digram](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kvkuprk71nh56v4skgmz.jpg)

Each Build (iteration) has to go through Design , Development , Testing & Deployment (Implementation as per the diagram)

Check out my blog [SDLC](https://dev.to/rishabhraghwendra/software-development-life-cycle-beginners-guide-k8p)  to get the gist of the process.

**When to use the model**
- This model is best fit for project which are:
- Requirements are clearly defined
- Client wants working model at each iteration
- New technologies are implemented & learnt on the way
- Not availability of highly skilled team
- Highly risky project

**Pros of Iterative Model**
- A working model is ready in end of every iteration
- Feedback of client can be taken at each iteration 
- Supports changing requirements
- Risk management is easy . Highly risky part is done first
- Suitable for large & critical projects
- Parallel development is possible

**Cons of Iterative Model**
- Not suitable for smaller projects
- More resources are required
- More attention of management is required
- Management complexity is more
- End of project is not defined , which can be risky
- System design or architecture issues may arise because all requirements is not gathered at the beginning 

So far, we have discussed the Iterative model, it’s use cases, pros & cons.

More information on Waterfall Model is in my other blog’s, here’s the link 
**WaterFall Model:** https://dev.to/rishabhraghwendra/sdlc-waterfall-model-307n

Feel free to comment if you have any questions. All comments are greatly appreciated. If you like the blog , don’t forget to like it & share with your friends/colleagues.

To see my projects or to get in personal touch , follow me on:
**Linkedin:** https://www.linkedin.com/in/rishabh-sde/
**GitHub:** https://github.com/Rishabhraghwendra18

Thanks for reading
Written with ❤️ & passion 🔥 by Rishabh Raghwendra
Can we use pseudo elements while styling D3 elements?
Tags: react, webdev, help, css
Published: 2021-07-21 14:31:14

I'm relatively new to React and am working with a library called D3. So here, I want to create tooltips using the before or after pseudo elements. So I'm getting a group element (<g>) by its class name in the css and customizing the before and after pseudo elements. The problem is that these changes are not showing in the svg on top of which these group elements are present. Can someone direct me regarding this? Can we apply customisations on the before or after elements of these group or text elements ?
Thanks in advance!
Amber 1.0.0rc2 & Jennifer
Tags: crystal, amber, amberframework, jennifer
Published: 2021-07-21 14:16:54

#{UPDATE}
Since writing this post, I became the owner of the i18n.cr repo and I've released a new version that includes some updates to the crystal version and soon you won't need the directions found here!

#Back to the original programming...
Hey there! I was recently trying to get up and running with Crystal 1.0.0+ and the new Amber 1.0.0rc2 with Jennifer 0.10.0, and I ran into a curious issue:

```bash
shard name (i18n) has ambiguous sources: 'git: https://github.com/dare892/i18n.cr.git' and 'git: https://github.com/techmagister/i18n.cr.git'.
```

I have a simple work around that will temporarily let you run the `shards install` or `shards update` commands to get your app up and running with Jennifer for your ORM!

In your `shards.yml` file change these lines:
```bash
citrine-i18n:
  github: dare892/citrine-i18n
  version: ~> 1.0.0
```

to

```bash
i18n:
  github: techmagister/i18n.cr
  branch: master
```

And set your Jennifer shard config to:

```bash
jennifer:
  github: imdrasil/jennifer.cr
  branch: master
```

Now shards can install and update all of your shards, without any Crystal version error warnings or ambiguous source warnings, and `amber watch` will compile and run the app in development.
Applicative order Vs Normal order
Tags: computerscience, programming
Published: 2021-07-21 14:14:18

Yeah, the Topic is a little weird. You ever heard static language and dynamic language. So, this topic looks like the same static vs dynamic language.

##Functional programming
In Functional programming, the evaluation of an expression rewrites the canonical form into the order(**Evaluation Order**).

What is rewriting the function??
It’s replacing the function body with the function call.
Eg Code Block:

```
//if the function the double the number
double x = x + x;
//if we call this function with a number
double 4
//It replaces by the body of the function "x + x" with argument
double 4 => 4 + 4
//so the answer is 8

```
#####This is the evaluation of the function.
---

##Evaluation Order

There's two important order rewriting.
1.Normal order
->It rewrites or execute leftmost occurrence of a function.
2.Applicative order
->It rewrites or execute innermost occurrence of a function.

###Let do some codes
```
//the function double the number
double x = x + x;
//the function average the two number
average x y = (x + y) / 2;
```

To avoid confusing the concept, let re-express operator function "+" , "*" and "/".
```
//so the function double change into 
double x = plus x x //change expression num1 + num2
//so the function average change into
average x y = divide (plus x y) 2 //change expression num1 / num2
```
---
Let evaluate double(average 2 4)

##Normal Order
Normal order execute leftmost part of function.
```
double (average 2 4) =>
plus (average 2 4) (average 2 4) =>
plus (divide (plus 2 4) 2) (average 2 4) =>
plus (divide 6 2) (average 2 4) =>
plus 3 (average 2 4) =>
plus 3 (divide (plus 2 4) 2) =>
plus 3 (divide 6 2) =>
plus 3 3 =>
6
```

##Applicative Order
Applicative Order execute innermost part of function.
```
 double (average 2 4) =>
 double (divide (plus 2 4) 2) =>
 double (divide 6 2) =>
 double 3 =>
 plus 3 3 =>
 6
```
---

So, We see. Normal order evaluate many steps and  it is a delay evaluation. It is **lazy evaluation**.
Applicative Order takes the few steps.

So, This is **Applicative order languages** vs **normal order languages**.

[Here is the reference link](https://courses.cs.washington.edu/courses/cse505/99au/functional/applicative-normal.pdf)
Game playing with adversarial algorithms
Tags: beginners, algorithms
Published: 2021-07-21 14:07:28

Do you know how IBM's Deep Blue chess computer controversially beat champion, Gary Kasparov in 1997? It's a search algorithm called min-max. This article describes how it works at a high-level.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/etc78c915xalx3qqxt5n.jpeg)

Adversarial search is characterized by opposition or conflict. These problems require us to anticipate, understand, and counteract the actions of an opponent in pursuit of a goal. In chess, we must react to the moves made by an opponent while carrying out your own strategy.

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

Examples of adversarial problems include two-player turn-based games such as Tic-Tac-Toe and Connect Four. Players take turns for the opportunity to change the state of the environment of the game to their favour.

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

A set of rules dictates how the environment may be changed and what the winning and end states are. The min-max algorithm uses a heuristic score to make decisions. This score is defined by a crafted heuristic and is not learned by the algorithm.

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

Assume that we have a heuristic that provides a score in which positive numbers are better than negative numbers. More about heuristics here: [https://rhurbans.com/using-heuristics-for-intelligence/](https://rhurbans.com/using-heuristics-for-intelligence/)

By simulating every possible valid move, the min-max search algorithm tries to minimize making moves where the opponent will have an advantage or a winning state and maximize making moves that give the computer agent an advantage or a winning state.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6or6p3f4lwfbdqpqu5tr.png)

Deep Blue also consisted of a database with known effective opening moves and end-game scenarios. This required human intervention to be created and tweaked. Since, there have been huge developments that allow algorithms to learn how to master a game with no human intervention.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3hu3wlaza95d81ilrkdo.jpg)

If you'd like more details about this algorithm, see Grokking Artificial Intelligence Algorithms with Manning Books: [http://bit.ly/gaia-book](http://bit.ly/gaia-book), consider following me - [@RishalHurbans](https://twitter.com/RishalHurbans), or join my mailing list for infrequent knowledge drops in your inbox: [https://rhurbans.com/subscribe](https://rhurbans.com/subscribe).
Starting a QR menu for restaurants
Tags: opensource, rails
Published: 2021-07-21 14:05:37

recently I started a new open source project named [Lalo Menu](https://github.com/JuanVqz/lalo_menu) which will be able to help us making digital menus for restaurants.

Our stack is:

- ruby on rails
  - I'm testing hotwire (I guess we well use it).
- postgresql
- github
- heroku

we are open to contributors

BTW, I choose this name because it's my brother-in-law's name, He passed away last year I'm proud of him, so, this is in his honor. I love you, bro!💚
Deceptive Patterns
Tags: design, ux, uiweekly, codenewbie
Published: 2021-07-21 14:01:35

- About deceptive patterns.
- Types of deceptive patterns.
- Why do businesses use deceptive patterns?
- Why businesses should not use deceptive patterns?

# About deceptive patterns

Have you ever checked out the free trial and later on without notifying you your credit card was charged? or you signed up for one newsletter and by clicking 'submit' you accept other newsletters too? or you paid to a subscription but there is no easy way to unsubscribe?

Well, It happens to everyone! These experiences are examples of deceptive patterns.

> Deceptive patterns are UX methods that trick users into doing to buying something they wouldn't otherwise have done or bought.

In simple words, **deceptive patterns trick users into unintentionally completing an action online.** 

It can be done through visuals, interactive, audio, motions, etc. that are added to the design.

# Types of deceptive patterns

### 1. Sneak into the basket

When a user has to remove an item from their cart if they don’t want to buy it, which is an extra step that could be easily missed.

Eg: like a service or some extra plan is pre-selected as "add to my cart"

### 2. Price prevention comparison

Making it intentionally difficult to compare prices so the user can’t make the best decision for themselves.

Eg: Buy at $1/Apple

### 3. Hidden costs

Hidden or unexpected charges in the user’s cart that are not revealed until the end of the checkout process.

### 4. Forced continuity

The practice of charging a user for a membership without a warning or a reminder.

### 5. Disguised ads

Ads hidden in the page and made to look as if they were a part of the regular content or navigation.

Eg: Download button that is not an actual download button

### 6. Others

Bait and switch, Friend spam, Misdirection, Trap door, etc.

# Why do businesses use deceptive patterns?

Obviously for sales and profits.

# Why businesses should not use deceptive patterns?

Deceptive patterns are unethical and should be avoided. Being clear and honest with your users will strengthen their trust in 
your brand and product.

# Reference
- Google UX
Connecting to Dataverse using AuthCode flow and CrmServiceClient
Tags: dynamics365, dataverse, crmserviceclient
Published: 2021-07-21 13:53:31

Here a quick example of connecting to Dynamics using `CrmServiceClient` in Microsoft.CrmSdk.XrmTooling.CoreAssembly 

{% gist https://gist.github.com/ImranCodeBug/da99f274074f8983e93fc295a01bd128 %}
Concurrency vs Parallelism
Tags: concurrency, parallelism, scaling, multithreaded
Published: 2021-07-21 13:37:20

---
title: Concurrency vs Parallelism
published: true
description: In modern computing the only way to scale up to increase productivity and output of the system is to increase the core count on the CPU and GPU. 
tags: concurrency, parallelism, scaling, multithreaded
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1pp45wupe73cya0aazd5.jpg
---

{% youtube R9-pQ83iSr0 %}

In modern computing the only way to scale up to increase productivity and output of the system is to increase the core count on the CPU and GPU. 

As a developer it's important to understand how this impacts the software that we write. It's also important to understand how things work for us as developer to be able to take advantage of the multi-core nature of the future of computing.

Whether we're handling large amount of web traffic, render demanding 3d movies, streaming video games live on social network, these tasks require multi core processors to get the work done.

In this episode we discuss the difference between concurrency and parallelism.
New! Adaptive music catalog for .devs - royalty free 
Tags: music, gamedev, devops, programming
Published: 2021-07-21 13:33:32

Hey! 

We've just launched the first album from our new royalty free music catalog for developers. Built with adaptation in mind, it features hundreds of musical variations to create dynamic soundtracks that move with player interaction. The theme of this one was Grand Theft Auto - check out the sounds here:
https://www.youtube.com/watch?v=4nYzRyjgFJI

Available now in Unreal Engine Marketplace 
https://www.unrealengine.com/marketplace/en-US/product/696da9998f374d918babe100f1319f1d

And Unity Asset Store 
https://assetstore.unity.com/packages/slug/190873


For this asset pack we have made it royalty free - so you can use in unlimited builds without worrying about copy right claims in the future. We want to help out upcoming developers and give them the best music tools possible :) 


We are also building our own multi platform audio engine that will integrate with our catalog, so you can easily implement adaptive audio in your build. Coming soon!
Beautiful CSS Buttons - A curated collection of 84 free beautiful buttons (click to copy) ✨
Tags: webdev, css
Published: 2021-07-21 13:33:30

---
title: Beautiful CSS Buttons - A curated collection of 84 free beautiful buttons (click to copy) ✨
published: true
description: 84 free CSS buttons ready-to-use for your next projects. Click to copy.
tags: #webdev #css
cover_image: https://getcssscan.com/css-buttons-examples/og-image.jpg
---

👋 Hi Dev.to!

One of the reasons I created CSS Scan was because I'm always interested in knowing how some websites make their buttons.

So I made [this collection](https://getcssscan.com/css-buttons-examples?ref=devto) of my favorite buttons on the internet, and I'll be adding new buttons to the list every time I see some new ones.

🎨 [CSS buttons examples by CSS Scan](https://getcssscan.com/css-buttons-examples?ref=devto) is a curated collection of 84 free beautiful CSS buttons.

💖 Bookmark it (keep it on your favorites) and use it whenever you need it for your projects!
All you have to do is click on a box you like, and it'll copy its CSS box-shadow rule.

And if you have any ideas or suggestions, I'm all ears.

Thanks all! 🙌

Launch Tweet: https://twitter.com/gvrizzo/status/1417392279359135745
Building an MVP from Scratch 🚀
Tags: nextjs, sideprojects, mvp
Published: 2021-07-21 13:29:23

Back in October 2020 I decided to start a pet project with a goal to learn a new technology. I noticed people on Twitter were saying how much they like the Developer Experience of Blitz JS so I decided to use it in this pet project.

But then I thought, this pet project could be something useful to our employees. So, after a little research I decided to build an Absence Tracker, so we can ditch the Telegram group where we reported our absences.

## The Inception
I decided to use [Chakra UI](http://chakra-ui.com/) along with [Blitz JS](http://blitzjs.com/), because it's rich with components and it allows me to quickly build the UI. And it looks 😍. I did a little planning and Database Design in [diagrams.net](https://diagrams.net) and started to layout the pages.

One month in I decided to stream the whole development process on  [Twitch](https://twitch.tv/nikolovlazar)! That was one of my best decisions. I've met a lot of cool folks on my streams and they gave me some interesting ideas regarding the implementation. All of my streaming archive can be found on my [YouTube channel](https://www.youtube.com/channel/UCTexaJMnN_Pv6TVueQ61-oQ).

## The Challenges
One of the challenges was keeping up with the changes of Blitz JS. When I started the project Blitz was still in alpha. And as we all know, alpha software tends to change and it's totally normal. Blitz JS is maturing in a great way, but keeping track of the changes did require a lot of release notes reading and checking out past PRs.

Another challenge was using Chakra UI with an experimental version of React (default by Blitz JS). I couldn't find a good workaround, so I decided to use the stable version of React. The drawback of that was disabling the Concurrent mode of React, even though I really liked that feature.

## The Benefits
This tech stack grew to be my favourite. It really allows you to build your app in a record time! I really like the DX of Blitz JS and Chakra UI and their intuitive APIs. I'll definitely use these technologies for my future projects too.

As I mentioned, streaming on Twitch was one my best decision. I've gotten a lot of followers and met a lot of cool folks that hung around my streams. I've also gotten the attention of Chakra UI! They liked my streams and invited me to join the [core team](https://chakra-ui.com/team) 🤩

## The Finale
I decided to bring my colleague @iboshkov as a guest to my live stream where we Dockerized the app and deployed it on our company servers. There was a readymade Docker image for Blitz JS, but we decided to build our own. It wasn't complicated at all. After we set up everything in a Docker Compose network, the deployment was a single line command.

Next on our list is to onboard all of the employees, synchronise the old data with the new platform and officially start using the new platform. It started off as a pet project, a "placeholder" for me to learn a new technology, but it grew into a cool usable app that will make our lives easier. It's been a wild ride, but I'd do it all over again without thinking.
How to build API for free using Google Sheets
Tags: appsscript, javascript, google, sheets
Published: 2021-07-21 13:28:15

Sometimes we have some data stored in a spreadsheet that we would like to make available to other applications, such as dashboards that visualise it. Of course, the growing number of applications and functionalities most often leads to a transition to the use of a real database. But sometimes, we have to deal with a one-shot to test an idea or a set-and-forget tool. Then dealing with the administrative side of things, servers, etc., can be extremely cumbersome. In these situations, I usually turn to the Google ecosystem and their Apps Script.

In this article, I will show you how to make a simple Rest-ish API that will have Google Sheets as its base. The API after accessing its URL will return JSON with the data from the table. To understand this article, all you need is a basic knowledge of programming (preferably JavaScript) and Google Workspace.

Read more:
https://fischerbach.medium.com/how-to-build-api-for-free-using-google-sheets-6c2b2e951a70
Use a custom domain and SSL on AWS Lightsail instance
Tags: aws, devops
Published: 2021-07-21 13:17:40

In our agency bitopia.digital we need to migrate a platform, which we have hosted in a GoDaddy VPS to a AWS Lightsail instance.

We started to love❤️ Lightsail because it's simplicity to up and run different system blueprints that makes our business run smooth.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p04rjv6u78frs54qtiwj.png)

We found two issues in the process, so i'm writing this to help any of you who maybe are trying to achieve this kind of stuff.

## The learning process

### Update domain zone

The first one is that we already have a domain name registered in GoDaddy and we need to point it to the need instance.

We opened domain panel in GoDaddy and updated the A record in our DNS Zone to point to the AWS Lightsail instance static public IP
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q32wxnh45amgmude77rx.png)

That process takes a little while, so you can check the DNS propagation process with a tool like [https://dnschecker.org](https://dnschecker.org)

After that we already have our domain pointed to our new instance but here is where it came the second issue.

### Reissue the SSL certificate

This step could be tricky, but it's easy to follow along.
The first thing we need to do is to generate a a new private key for our AWS Lightsail instance.

We logged in through SSH in our instance and we run the following command to generate a new private key:
```
sudo openssl genrsa -out /opt/bitnami/apache2/conf/bitnami/certs/server.key 2048
```

With that key we need to create a certificate to send to the Certificate Authority:
```
sudo openssl req -new -key /opt/bitnami/apache2/conf/bitnami/certs/server.key -out /opt/bitnami/apache2/conf/bitnami/certs/cert.csr
```

Send cert.csr to the certificate authority. When the certificate authority completes their checks, they will hand over your new certificate to you.

With the new certificate file (probably a *.crt file), we need to upload it to our instance with the following name:
```
/opt/bitnami/apache2/conf/bitnami/certs/server.crt
```

After this step we need to update the server name in the apache2 httpd.conf file with the domain name
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o8g3b3wwjz7gcdi8cenu.png)

With this we have our new instance up and running with a domain and a SSL certificate.
Run a local PHP web server
Tags: php, webserver
Published: 2021-07-21 13:10:38

---
title: Run a local PHP web server
published: true
description: Quick article on running a local PHP web server
tags: php,webserver
series: Google sheets from PHP
//cover_image: https://direct_url_to_image.jpg
---

One of the reasons that I like using PHP is that it is an easy language to pickup and also an easy language to create a new project. I will often times use PHP as a prototyping language and once I am happy with the project move onto a more robust platform such as .NET or Java.

To create a new web server using PHP is actually very easy. All that you need to do is create a file such as index.php with some php and html code in it and then run this command:

``` php -S localhost:3000 ``` 

This command will start a local web server that you can then access easily enough at http://localhost:3000 as per the example below.

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qlk0zn28espejb049gzy.png)