teleren/devto huggingface dataset:
Trends in competitive CRM marketing strategy
Published: 2020-09-30 09:18:59

[Customer relationship management](https://www.cloudanalogy.com/) (CRM) has become a real market. We are now seeing trends in how CRM vendors compete in this changing market.

**Competitive movements of CRM providers**
We assessed the competitive behavior of CRM in 2010. To provoke testing of new customers, we saw vendors implement:

A. "Try before you buy" - Marketing strategies, with "30-90 days free" CRM trial offers.

B. “Limited time offers” in which low cost / user entry fees were established for a period of up to one year. The Microsoft CRM Dynamics offer of $ 34 / month for 1 year is an example of this strategy.

C. `` Free migrations '' offers from CRM A to CRM B.

While all three strategies can induce effective testing, CRM vendors will still need to address a common customer concern. This concern is: "What limitations are we going to encounter with this vendor later? Also, although the CRM service is offered free of charge (for a limited time), there are still real internal / professional migration costs, such as data preparation. , user training, etc. Free does not exist.

**CRM test and comparison**
A Granny Smith is not a Fuji apple: they don't taste the same, they don't cost the same. Some apples are best for snacks in children's school bags, and others are best for apple pie. Also, the solutions offered by Microsoft CRM Dynamics, Salesforce.com, or Oracle are similar but different. They meet different user requirements and have different cost profiles. And the fruit offering at the market stall, in the [CRM marketplace](https://www.cloudanalogy.com/), there are literally hundreds of vendors offering plausible solutions that may be suitable for a particular [organization](https://www.cloudanalogy.com/).

All providers have their own unique benefits and their ability to offer unique functionality. For example, Microsoft CRM Dynamics will take advantage of the "Microsoft Shops" where they can integrate it with existing Microsoft software suites, such as Office 2010 or SharePoint. By contrast, Salesforce.com has Chatter. CRMHelpdesksoftware.com coined the term Chatter as "Facebook for business."
Need help with next.config.js
Published: 2020-10-01 00:39:21

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

How can i write this without having it throw an error?

const withSass = require("@zeit/next-sass");
const withLess = require("@zeit/next-less");
const withCSS = require("@zeit/next-css");
const path = require("path");

const isProd = process.env.NODE_ENV === "production";

// fix: prevents error when .less files are required by node
if (typeof require !== "undefined") {
	require.extensions[".less"] = (file) => {};
}

module.exports = webpack: (config) => {
    config.resolve.alias['components'] = path.join(__dirname,'components')
    config.resolve.alias['public'] = path.join(__dirname,'public')
    return config;
},withCSS({
	cssModules: true,
	cssLoaderOptions: {
		importLoaders: 1,
		localIdentName: "[local]___[hash:base64:5]",
	},
	...withLess(
		withSass({
			lessLoaderOptions: {
				javascriptEnabled: true,
			},
		})
	),
});
Spread the word this should get to every student
Tags: productivity, beginners, javascript, codenewbie
Published: 2020-10-01 00:32:03

I didn't know about the GitHub Student Developer Pack.

https://education.github.com/pack

Check the benefits they are so many.

They offer lots of benefits for students completely free. You can now deploy and host things completely for free.

My personal recommendation is that if you really want to understand JavaScript, get this pack and claim the 6 months of FrontEndMasters and complete the path in JavaScript.

Sorry, I don't have time to write a complete post but there are lots of possibilities.

If you know about any other benefit from this pack that is valuable, please share it in your comments, so the students can use these amazing tools for free.
How to resolve merge conflicts with git
Tags: git, github, terminal, thecollablab
Published: 2020-10-01 00:26:48

Dealing with messy merge conflicts can be a bit like navigating heavy traffic. With a bit of patience, forward-thinking, and sometimes a pal, you can resolve any conflict you're faced with. Take a deep breath and follow the steps below to get those resolutions in place!

## Step 1
Pull down all the latest code from the main branch of your remote repo.
```
git fetch
```

## Step 2
Merge all that fresh new code into your feature branch locally.
```
git rebase origin/main
```

## Step 3
[Optional] Run this to get a high-level look at which files have conflicts. 
```
git status
```

## Step 4
Fix all the merge conflicts in your project. 
  * Go to those files in your editor. You will see that it shows you the code that lives on the HEAD **and** your branch's code. 
  * Keep the good code that you need when it asks you to choose and delete the code you don't want. This can be the most challenging part because you might be seeing code from your team that you don't recognize -- pair with your pals to decide what code goes and what code stays if necessary. 
  * When you see that the files that previously had conflicts are squared away, **save** them!

## Step 5
Stage all the files that you fixed. 
```
git add .
``` 

## Step 6
Continue the rebase to see what's next. 
```
git rebase --continue
``` 

## Step 7
You may still have more conflicts to work through because the rebase is going to compare every commit that came down from the main branch to your feature branch. Keep the following steps 3-6 until you're taken back to your feature branch. 

## Step 8
Push your updated code up to your remote repository. 
```
git push --force-with-lease
```
Note: `--force-with-lease` is a safer option than `force` because it will not overwrite any work on the remote branch if more commits were added to the remote branch. Read more [here](https://git-scm.com/docs/git-push).
OSD600 Lab – 2 "The First PR"
Published: 2020-10-01 00:19:38

September 30, 2020
In this class “Open Source Development” at Seneca, we were to file an issue on a Release 0.1 in order to add a feature to someone else’s work.  Uncertainty settles in as I think about how many grey hairs this was going to create.  I read through the list of features and did a little research on some code examples so I could finally decide what kind of feature to add.  I learned how to create a branch after cloning my partner’s Release 0.1, and then where Issue.  Now I just needed to learn how to do a pull request. Being a visual learner and several years older than probably the entire class, I requested some guidance on Teams from a fellow classmate to walk me through the process.  Turned out to be not as difficult as I imagined.  

The feature implementation…

I was able to find materials on Node.js to help me learn how to add the appropriate code to my partner’s Release 0.1. I created an issue to add support for DNS resolution issues.  After getting permission by partner and original author, I create my branch  and started to put together the code needed to implement the feature. With some trial and error and a little advice from friends, my task was complete.  I picked the default value and the results return a resource record type IPv4.   I then create the pull request.  

I enjoyed learning how to contribute to open source.  What really also impresses me about the programming environment is that it is like a community of its own. Developers helping developers.  I feel like I picked the right “New” career path since I have always loved helping others.  Learning new ways to code is exciting and stressful at the same time, however very rewarding.
Python Zero to Hero - Ep.24 - Python environment management tools
Tags: python, beginners, tutorial, tools
Published: 2020-10-01 00:04:32

---
title: Python Zero to Hero - Ep.24 - Python environment management tools
published: true
description: Today I have dive deeper into various Python environment management tools. I think it would be really helpful for beginners to start the habit of using separate environments for different projects. So come and pick one for yourself!
tags: python, beginner, tutorial, tools
---
Today I have dive deeper into various Python environment management tools. I think it would be really helpful for beginners to start the habit of using separate environments for different projects. So come and pick one for yourself! If you have any questions or any suggestions about which Python topics to cover, please leave your comment at my [Twitch channel](https://www.twitch.tv/cheukting_ho)

You can get the slide deck [here](https://slides.com/cheukting_ho) and the example code and homework form [GitHub here](https://github.com/Cheukting/python02hero). Ask questions at my [Twitch channel](https://www.twitch.tv/cheukting_ho)
Storing Timezones in Postgres
Tags: postgres, database
Published: 2020-10-07 19:05:59

---
title: Storing Timezones in Postgres
published: true
date: 2020-10-01 00:00:00 UTC
tags: postgres, database
canonical_url: https://magistratehq.com/blog/user-timezones-in-postgres/
---

Storing a user’s timezone in Postgres can be an interesting task in apps. Often, this is accomplished by generating a hardcoded list of every timezone in the backend (or worse the frontend JavaScript) and storing an item from that list in the database for each user. This hardcoded magic list is both difficult to build accurately and hard to maintain. Timezones change more frequently than you would imagine ...but less frequently than time itself.

Postgres has a system view called `pg_timezone_names` that has the list of timezones used by Postgres internally. We can use this view to generate a dropdown or other input type for the user to select their timezone. We can filter out some of the timezones in your query (like all the ones that start with “posix/“) because this list is quite large by default.

```sql
select name from pg_timezone_names where name not like 'posix%' and name not ilike 'system%' order by name;
```

Now, we need to figure out the best way to store the selection from our user. We can do this by adding a column to our users table to hold the timezone. The column is a text type because we are only storing the `name` value from `pg_timezone_names`.

```sql
alter table users add column timezone text;
```

Next, we want to query the user’s events in the timezone we have for the user. We store the `start_time` for the events as UTC `timestamptz` columns. This solution leverages the [timezone](https://www.postgresql.org/docs/13/functions-datetime.html#FUNCTIONS-DATETIME-ZONECONVERT) function in Postgres. `AT TIME ZONE zone` also works. The last `join` in this query is optional but it is there in case you need to know the UTC offset or if the timezone is in DST.

```sql
SELECT events.name, timezone(users.timezone, start_time)
FROM events
JOIN users ON events.user_id = users.id
JOIN pg_timezone_names ON users.timezone = pg_timezone_names.name;
```

This could be taken a step further by using the [to\_timestamp](https://www.postgresql.org/docs/current/functions-formatting.html) function in Postgres to format the dates, and keep the application from formatting dates at all.

This article was originally published on [Magistrate](https://magistratehq.com/blog/). Head over there if you like this post and want to read others like it.
One Win for a Team Lead
Tags: management
Published: 2020-11-06 22:22:43

---
title: One Win for a Team Lead
published: true
date: 2020-10-01 00:00:00 UTC
tags: Management
canonical_url: https://programmerdays.com/2020/10/01/Team.lead.wins/
---

Being a manager is challenging. On any given day, I can look back on so many things that I could’ve done better. I could have brought more energy to a meeting. I could have spotted something that was bothering a team member a little earlier. I could have prioritized work differently or reduced the scope of a project. And on and on and on…

And the wins can feel quite sparse. When I was a developer, each day had some level of success. I got the code to compile. I was able to reproduce and fix a bug. I helped a colleague debug an issue with one of our libraries. Even when our team has a big successful release, it’s not as easy to spot what the team lead actually contributed.

So when I come across a clear win, I make a special note of it. Last week, I had one of those wins.

One of my team members was falling behind. He was working on a bunch of items: a bug fix, some research work, some admin work. He happily volunteered for the work, but they weren’t getting done. Prior to our weekly 1-1, I wondered what was the best way I could help him course correct.

I eventually approached him with a couple of questions instead of demands. I asked him how he was doing? I said that I noticed he had a lot of things pending, and asked him if this was his preferred working style.

Luckily, he said he didn’t like what was going on. This was fortunate. Instead of me making demands, such as “Get focused and start finishing work”, he came up with some modifications. He’d try to wrap things up, post updates more regularly, and ask the team for help earlier. I said I understood his current situation and offered my help. I told him that I would help prioritize items for him so that we could spend more time on the things he really enjoyed. After some discussion, I felt we were in a good trusting space. At that point, I was able to say the higher level things I really wanted. I wanted him to get things done and to be transparent with updates. I think this discussion went well. His goals were now aligned with the team’s goals.

I don’t know what will happen next. Maybe things will improve. Maybe he will continue his bad habits. No matter what, we had a conversation that lays the groundwork for building trust and partnership.
The Rise and Rise of GraphQL
Tags: engineering, api, graphql
Published: 2020-10-05 11:17:23

---
title: The Rise and Rise of GraphQL
published: true
date: 2020-10-01 00:00:00 UTC
tags: Engineering,API,GraphQL,Performance
canonical_url: https://www.loginradius.com/engineering/blog/rise-and-rise-of-graphql/
---

GraphQL's popularity has been skyrocketed since its release in 2015. It is the modern way of developing and querying APIs. As its popularity increased its industry adoption also clearly increased, it is backed by many tech giants such as Facebook, Github, Twitter, and Airbnb…

   
[Read On](https://www.loginradius.com/engineering/blog/rise-and-rise-of-graphql/)
Hacktoberfest 2020 🦄
Tags: web
Published: 2020-10-01 00:00:00

---
  title: Hacktoberfest 2020 🦄
  published: true
  tags: web
  date: Thu Oct 01 2020 05:30:00 GMT+0530 (India Standard Time)
  canonical_url: https://melvingeorge.me/blog/hacktoberfest-2020
  cover_image: https://melvingeorge.me/_next/static/images/main-742351bbf5b7fde271bb38c96e423427.jpg
  ---
  [Originally posted here!](https://melvingeorge.me/blog/hacktoberfest-2020)
  
![Hacktoberfest 2020 Banner](https://melvingeorge.me/_next/static/images/hacktoberfest-banner-8eb3f0d48a73af990103750177cb0f40.png)

## What is Hacktoberfest ? 🌟

HacktoberFest is an online fest conducted in October to support Open Source Contributions by DigitalOcean. It is a month-long contribution period where developers can register for the fest in the [Hacktoberfest](https://hacktoberfest.digitalocean.com/) website and make **4 Pull requests** in any open source projects in Github.

You have to make the 4 Pull requests between October 1 and October 31.

If you have managed to make 4 PR's then you can claim a supercool T-Shirt from DigitalOcean or plant a tree for your positive participation. Cool Right! 😃 🌟

The Pull Requests doesn't need to be code related it can be adding some documentation, adding content, or designing a logo for a specific project, etc.

## How do I register for the fest 🤠 ?

- Go to: [hacktoberfest.digitalocean.com](https://hacktoberfest.digitalocean.com/).

![Hactoberfest Website landing page](https://melvingeorge.me/_next/static/images/hacktoberfest-website-976d099a9db98c20bcae67d42befb79e.png)

- Click the **Start Hacking** button on the landing page. 🦄

- Login with your GitHub account.

And that's it 💖. You got registered for the HacktoberFest 2020.

## Where can I find some issues to work on 🧞‍♂️?

You can go to GitHub and search for issues labeled as Hacktoberfest or [Click Here](https://github.com/search?q=label%3Ahacktoberfest+state%3Aopen+no%3Aassignee+is%3Aissue&type=Issues) to take you there.

![Issues labeled as Hacktoberfest in Github](https://melvingeorge.me/_next/static/images/hacktoberfest-issues-github-2c2e97b4279573ee5a57d7350b71d843.png)

- Click on any of the issues of your comfort on the page.
- Make a good Pull request. ❤️

## Some resources for beginners to start with Open source Contributions

- [Codetribute Mozilla](https://codetribute.mozilla.org/)
- [Awesome for Beginners](https://github.com/mungell/awesome-for-beginners)
- [Up For Grabs](https://up-for-grabs.net/#/)
- [First Timers Only](https://www.firsttimersonly.com/)
- [Good First Issues](https://goodfirstissues.com/)
- [Awesome Hacktoberfest 2020](https://github.com/OtacilioN/awesome-hacktoberfest-2020)

## Extra Hacktoberfest Swags 💖

Other than the T-Shirts provided by DigitalOcean, there are some other projects which give you extra Swags if you contribute to their projects.

Most of the project details and how to contribute to the projects are listed in the [Hacktoberfest Swag List](https://hacktoberfestswaglist.com/) website. Take that extra mile to get extra goodies and swags 🚀!!!.

### Keep On Hacking with HacktoberFest 2020 ❤️ 🌟

### Feel free to share if you found this useful 😃.

---
DevOps Engineering, what is it? Pt 2
Tags: devops, cicd, career, agile
Published: 2020-09-30 23:54:20

## Core values of DevOps
The core values of DevOps is summarised as the CAMS Model pioneered by [John Willis](https://itrevolution.com/faculty/john-willis/)  and [Damon Edwards](https://www.linkedin.com/in/damonedwards).
The core values of DevOps practice are:
1. **C**ulture: This is the very essence of devops. Culture is a way of life. Practicing devops is about bringing understanding between the development team and operations, thus, focusing on people over process over tools. A DevOps culture is an embodiment of communication and collaboration, eliminating silos between teams. This fosters understanding and bonding between team members. 
2. **A**utomation: Devops was adopted to meet up with continuous business changes and customer feedback. Automating devops processes through continuous integration and continuous delivery pipeline, and infrastructure as code accelerates the benefits of doing Devops. Automating devops reduces manual errors and saves time on repeatable tasks, reduce failures, and increase efficiency in delivering quality applications to users rapidly.
3. **M**easurement:  In order to understand the effectiveness of a devops adoption and transformation in your team, you need metrics. Measuring key metrics like Mean Time To Recover(MTTR), Mean Time Between Failure(MTBF), Mean Time To Failure(MTTF), Lead Time, Deployment frequency. These metrics serve as indicators of overall business performance. It is advised that result should be actionable if you want to increase value to customers.
4. **S**haring: “...without sharing, there is no Devops” -  [Patrick Debois](https://...). People will always make a mistake and the first approach is always to point fingers or blame someone. It is in nobody’s place to blame a team member for errors. But it is a shared responsibility to fix such a potential error prioritizing the overall business value. In DevOps everything is shared, team members are encouraged to ask questions and share opinions to reduce friction and encourage understanding.

The **CAMS** model provides successful adoption of devops and continuous improvement in the devops lifecycle.

*[continue to pt3](https://dev.to/daviddennis02/devops-engineering-what-is-it-ll4)*
Weekly Challenge #080 :: Haskell
Tags: haskell, perlweeklychallenge
Published: 2020-09-30 23:52:43

While I solving [PWC #080](https://perlweeklychallenge.org/blog/perl-weekly-challenge-080) with haskell, I realised that there are simpler way to solve with Raku as well.

I could solve task #1 with Data.Set in standard haskell module.
and I'm barely remember there is a [Set and SetHash](https://docs.raku.org/language/setbagmix) in Raku during reading  [Review](https://perlweeklychallenge.org/blog/p6-review-challenge-076/) of [PWC #076](https://perlweeklychallenge.org/blog/perl-weekly-challenge-076)

code below is my solution of task #1 in haskell
## Task #1
```haskell
...
{- tested with:
runhaskell ch-1.hs 5 -2 2 0
-}

smallestPostiveNumber ints = -- result "1" with empty list
  (head.dropWhile (isJust.((flip Set.lookupIndex) (Set.fromList ints)))) [1..]
...
```

and [my previous raku solution](/jeongoon/weekly-challenge-080-2kg9) can be even shorter :-]
```perl
[1..∞].first({@*ARGS.Set∌$_}).say
```
I believe that "∞" is actually 4bytes but "∌" is little shorter than "(cont).not"

and while I'm solving task #2 in haskell
I realise that I don't need to compare in both way..
need just one direction!

## Task #2
```haskell

countCandies []    = 0
countCandies ranks = defaultCandies + extraCandies
  where
    leftGroup = init ranks
    rightGroup = tail ranks
    defaultCandies = length ranks
    extraCandies =
      sum $ zipWith (\l r -> if l /= r then 1 else 0) leftGroup rightGroup

```

The original code I wrote is something like
```haskell
    extraCandies1 =
      sum ( zipWith (\l r -> if l < r then 1 else 0) leftGroup rightGroup )
    extraCandies2 =
      sum ( zipWith (\l r -> if l > r then 1 else 0) leftGroup rightGroup )
```

and then.. I thought "what was that? isn't is just **"/="**? (/= is same as "!=" in Perl/Raku)

which means I could shorten the code in raku as well!

[Original task #2 post](/jeongoon/weekly-challenge-080-task-2-kkj)

```perl
sub MAIN{(|@_,|(|@_.rotor(2=>-1).grep({[!=] $_}))).elems.say}
```

but my wife didn't understand why I'm smiling now.
p.s) I hope I could use "raku" in CodeBlock one day. (I'm using "perl" now)
Write your commits with VSCode
Tags: vscode, git
Published: 2020-09-30 23:41:04

If you use vscode for commits, the screen area is a bit small. 

Add these line in .gitconfig to configure for use vscode for write commits.

```text
[core]
	editor = code --wait
[difftool "vscode"]
    cmd = code --wait --diff $LOCAL $REMOTE
```

Save .gitconfig and in vscode type `git commit` it will open an empty file to write the commit message.

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

When closing the file, it is used as a commit message.

Photo by <a href="https://unsplash.com/@aaronburden?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Aaron Burden</a> on <a href="https://unsplash.com/s/photos/write?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>