teleren/devto huggingface dataset:
I'm Sorry, Did The Flow of Time Suddenly Become Negotiable?
Tags: discuss, freelance
Published: 2019-01-12 23:34:08

---
title: I'm Sorry, Did The Flow of Time Suddenly Become Negotiable?
published: true
description: What are some of your stories of customers trying to negotiate non-negotiable things?
tags: #discuss #freelance
---

Hey there Dev world! My first post of 2019 woohoo! And while I would love to expound on my grand plans of the "New Year, New Me" variety, I don't have any such plans. So instead, I'd like to hear some of your stories about something that never changes: A client/customer/PM trying to "talk you down" on something that is flat-out non-negotiable, and how you handled it.

As some of you might remember in an old post of mine (located [here](https://dev.to/kaelscion/a-back-end-view-on-front-end-design-3bnk) if you want to check it out), I, along with many of you, have had the experience of clients trying to negotiate with me on things that ranged from bizarre to irresponsible or even illegal. Many of these occasions can be remedied by simply explaining your stance on things in a clear, calm, and concise way or clearing up a misconception that your client may simply not be aware of. But there are times when these requests can become so insistent that they border of aggressive or even abusive. Seeing as Dev has a large population of new or budding developers, I implore the more senior folks among us to give some examples of such times, how you addressed the situation and what the outcome was.
Using Plotly to draw charts in React Native
Tags: reactnative, showdev, opensource
Published: 2019-01-12 23:12:04

---
title: Using Plotly to draw charts in React Native
published: true
description: Getting a browser library to work on native
tags: reactnative, showdev, opensource
---

While working on a React Native version of a web dashboard, I struggled to find a charting libary that would meet my needs.  The one I tried were not performant or flexible enough, or required ejecting from Expo.  Since the web charts were built using Plotly, I decided to try to get plotly.js to work in React Native.

Since plotly.js depends on a lot of browser APIs, it would not work out of the box in React Native.  I thought the easiest way to get it working would be with a WebView.  The first thing I did was to get a basic chart rendering by including plotly.js from their CDN with a script tag.  This worked, but depended on the user being online.  I wanted offline support, so I decided to try to bundle the plotly.js source code with my app, and somehow inject that into the WebView.

Getting the source code injected turned out to be a frustrating process, as I ran into a lot of issues with certain characters in the source code not being sent properly, as well as finding implementation differences between Android and iOS WebViews.  Ultimately, the solution I settled on was to Base64 encode the plotly.js source code, send it to the WebView with postMessage, and decode and evaluate the code inside the WebView.

After adding the ability for my React component to call restyle/relayout functions on the chart, I was able to draw interactive, dynamic charts using Plotly, even if the device was offline!  The initialization is a bit slower than other libraries (1-2 seconds before the chart is drawn), but the performance is great, and I have access to all the great features of Plotly.

This component has been working great for me, so I decided to open source it!  [react-native-plotly](https://github.com/rynobax/react-native-plotly) lets you use Plotly in React Native.  You can see it in action on this [Expo snack](https://snack.expo.io/@rynobax/react-native-plotly-demo).
Stop Perfecting, Start Shipping
Tags: productdevelopment, shipping, developers, entrepreneurs
Published: 2019-01-12 23:07:04

---
title: Stop Perfecting, Start Shipping
published: true
description: Stop perfecting and start shipping. In this post I want to show you what value lies in stopping to procrastinate and shipping your product.
tags: productdevelopment, shipping, developers, entrepreneurs
cover_image: https://thepracticaldev.s3.amazonaws.com/i/oswwsleac325pur54de1.png
---
Hey There,

As 2019 is taking off, I was thinking about all those things I've been learning in the last 5 years or so. And 2018 was a special one in that.

I worked at a startup for the entire year, and I got to put to practice all those mind-shaping things that I learned from podcasts, books and talking to entrepreneurs and startup people all around.

I mean, it was just mindblowing to hear how many fellow makers experienced that urge to perfect their product before shipping it.

All those nights, weekends, days and weeks that were spent on adding features and tweaking the screens and making it JUST THAT LITTLE BIT BETTER before going live.

**STOP. DOING. THAT.**

What everybody I talked to agreed to with me, is that we now know how awkward it is to believe that the perfect picture in your head is actually going to happen.
And how silly it is to even think for a second that the world is pausing and waiting for your product to roll out of the shop.

Read about the value that lies in stopping to perfect your product, and actually just SHIP IT in Shipharder.com's latest vlog/blog post, here: https://www.shipharder.com/makers-stop-perfecting-start-shipping

It's time you got your stuff out there and get some real value from actual users.

Code Hard, Ship Harder - shipharder.com

What is your take in this? Do you like to refine things, the nitty-gritty if you will, before shipping? Or do you value the feedback from real usage that shipping your product can provide? Let me know 🙌🏻
Credentials for SanDisk Connect Wireless Stick
Tags: security
Published: 2019-07-10 10:23:20

---
title: Credentials for SanDisk Connect Wireless Stick
published: true
tags: security
canonical_url: https://ofdigitalwater.postach.io/post/credentials-for-sandisk-connect-wireless-stick
---

If you would like to connect to [SanDisk 16 GB Connect Wireless Stick](https://www.amazon.de/SanDisk-16GB-Connect-Wireless-Stick/dp/B00ZCFYDLA/) via external IP address, you will be asked for access authorisation. The credentials the stick wants are **owner/_wi-fi password_**
How to (re-)install OpenBSD on old disklabel
Tags: openbsd, faq, install, beginners
Published: 2019-01-12 18:55:14

---
title: How to (re-)install OpenBSD on old disklabel
published: true
description: Short tip for reinstalling OpenBSD while preserve some partitions
tags: #openbsd, #faq, #install, #beginner
---

Once I found my good old samsung netbook (little NC10 model, it was amazing laptop for my needs) and found that it has good old OpenBSD (I expected that).

But problem arise... it was really old 5.7 version. Time to update! But how? Official FAQ only supports close versions upgrades. Do it step by step? Too much time... Reinstall! But I don't remember, maybe something important already exists at home.

I quickly check documentation and can't find info how to preserve one of disklabel partitions while installing... but I found how it can be achieved.

IMPORTANT. I ALWAYS USE SEPARATED PARTITIONS FOR /HOME AND RECOMMEND IT TO YOU!

Boot your installation media, get to fdisk part 
Choose O for using already existing OpenBSD disk partition.
Next page will be default auto disklabel...

DONTPANIC;)

Just choose [C]ustom layout, check with 'p' that you see your old disklabels, now use 'n' to set mount points for all labels that you WANT to format. 

!!! DONT TOUCH LABEL(s) THAT YOU WANT TO SAVE DATA ON !!!

after setting all mount points for "new" labels use 'q' to save&exit and watch how only "mounted" labels got formated :)

Continue installation and don't forget to fix /mnt/etc/fstab for other mount points before reboot.

Voila!
How to Install Atom.io on Chomebook
Tags: atom, samsungchromebook3, chromebook, chromeos
Published: 2019-01-12 18:01:23

---
title: How to Install Atom.io on Chomebook
published: true
description: Installing Atom on your Chromebook from the command line
tags: atom, samsung chromebook 3, chromebook, chromeos
---

<b>Assumptions</b>
You have a Linux-capable Chromebook. You can check [here](https://www.reddit.com/r/Crostini/wiki/getstarted/crostini-enabled-devices).
You have already enabled Linux. You can follow instructions [here](https://www.androidpolice.com/2018/08/19/install-linux-applications-chrome-os/).

<b>My Environment</b>
Samsung Chromebook 3
Linux enabled
Google Chrome 72.0.3626.49 (Official Build) dev (64-bit) 

<b>Step 1 - Download Atom.io</b>
I downloaded the deb installer direct from [Atom's Github releases page](https://github.com/atom/atom/releases/tag/v1.34.0). You'll need to use the correct flags in your curl command in order to handle the inevitable redirects :: le sigh ::

![curl command with flags](https://thepracticaldev.s3.amazonaws.com/i/tawqvptjpb0jbh662zwa.png)

<b>Step 2 - Install Atom.io</b>
Installing is simple as opening your file browser, navigating down to My files > Linux files, then double clicking the deb installer file.

![deb installer in file browser](https://thepracticaldev.s3.amazonaws.com/i/x5hgj74m9slexqzy3ub1.png)

<b> Step 3 - Launch Atom</b>
I prefer to launch directly from the directory I want to work from using the `atom .` command. Although, you could also just search for Atom and launch that way.

![atom launched from terminal](https://thepracticaldev.s3.amazonaws.com/i/cjz7jijdp79bwnof6285.png)
How to join several commits into one?
Tags: git, merge, squash
Published: 2019-01-12 18:00:59

---
title: How to join several commits into one?
published: true
description: 
tags: git, merge, squash
---

####First way:
__1)__ Consider we have the following commit’s history:
```
* 493f284 2019-01-11 | fourth (HEAD -> master) [Andrei Fedotov]
* d2fd771 2019-01-11 | second 3 [Andrei Fedotov]
* 4ad568e 2019-01-11 | second 2 [Andrei Fedotov]
* 1c29a96 2019-01-11 | second 1 [Andrei Fedotov]
* ca8ad26 2019-01-11 | first [Andrei Fedotov]
```
and we want to join _second 1_, _second 2_ and _second 3_ commits into one commit named _second_.
Execute the next command:
```git rebase -i HEAD~4```
__2)__ After that the window with commits list will open in order of their creation (up to down):
```
pick 1c29a96 second 1
pick 4ad568e second 2
pick d2fd771 second 3
pick 493f284 fourth
```
__3)__ Commits that we want to join with the previous commit we have to mark as _squash_. Commits which we want to stay without changes we stay as _pick_
```
pick 1c29a96 second 1
squash 4ad568e second 2
squash d2fd771 second 3
pick 493f284 fourth
```
__4)__ Save and close the window. The next window will open where we should type the message for our joined commit. As a result, we obtain:
```
* 7a98610 2019-01-11 | fourth (HEAD -> master) [Andrei Fedotov]
* 5ef60fc 2019-01-11 | second [Andrei Fedotov]
* ca8ad26 2019-01-11 | first [Andrei Fedotov]
```
####Another way:
__1)__ Imagine we added one more commit and we want to join two last commits to one:
```
* 865a0f6 2019-01-11 | third (HEAD -> master) [Andrei Fedotov]
* 7a98610 2019-01-11 | fourth [Andrei Fedotov]
* 5ef60fc 2019-01-11 | second [Andrei Fedotov]
* ca8ad26 2019-01-11 | first [Andrei Fedotov]
```
__2)__ Type the following commands:
```
git reset --hard HEAD~2
git merge --squash HEAD@{1}
git commit
```
__3)__ Type the name of the commit in the opened window. For example: _third_. Now we have:
```
* c79f494 2019-01-11 | third (HEAD -> master) [Andrei Fedotov]
* 5ef60fc 2019-01-11 | second [Andrei Fedotov]
* ca8ad26 2019-01-11 | first [Andrei Fedotov]
```
If the commits we merged were pushed to the server before, we have to update them. It’s possible by typing the next command:
```git push origin +branch_name```


In addition, we can use helpful and convenient alias:
__Bash__:
 ```
git config --global alias.squash '!f(){ git reset --soft HEAD~${1} && git commit --edit -m"$(git log --format=%B --reverse HEAD..HEAD@{1})";};f'
```
__Cmd__:
```
git config --global alias.squash "!f(){ git reset --soft HEAD~${1} && git commit --edit -m\"$(git log --format=%B --reverse HEAD..HEAD@{1})\";};f"
```
Now it is possible to use this command to combine the last N commits:
```git squash N```

Cheers!
Retrofit Core for .NET Core
Tags: rest, net, core, showdev
Published: 2019-01-12 17:52:43

---
title: Retrofit Core for .NET Core
published: true
description: REST Interface for .NET Core with Retrofit style
tags: rest, .net, core, showdev
---

# Retrofit Core

1. No build step
2. Dynamic Service Proxy generator
3. Support for Header as property

# Example
```c#

public interface IBackendService {

    // when set, it will always be sent with
    // every request
    [Header("access-key")]
    AccessKey { get; set; }

    [Get("/location/{ip}")]
    Task<IPInfo> GetLocationInfoAsync([Path("ip")] string ip);

    [Post("/location/{ip}")]
    Task<IPInfo> SaveLocationInfoAsync([Body] IPInfo info);
    
    // retrive http response for detailed response
    [Get("/video/{id}.mp4")]
    Task<HttpResponseMessage> GetRawResponse([Query("id")] string id);
    
    [Get("/voice/{id}.mp3")]
    Task<byte[]> GetByteArray([Query("id")] string id);
}

```

# Usage
```c#

    var client = RetroClient
       .Create<IBackendService, BaseService>(
           new Uri("base url...") , httpClient);

```

{% github neurospeech/retro-core-fit %}
How to Run two .net core apps with debugging On using Visual Studio Code?
Published: 2019-01-12 17:34:55

When developing a web application we separate our application with *.web being initial server-side application and we provide a *.api application which will help us fetch/update data for client-side operations and avoid page reloads.

Here is .NET Core application I was working on which had a similar kind of ask, and I wanted to use VSCode to debug my application.

This is how we do it, first, we need to create a solution so that we keep both the API and Web project in one place

*dotnet new sln -n appname*
*dotnet sln add src/appname/appname.web.csproj*
*dotnet sln add src/appname/apname.api.csproj*

Open "launch.json" and Click on add configuration and add then select

*.NET Core Launch (web)*

No go ahead and rename to web or web-api, also add a development URL with a different than web configs the "env" property



*"env": {*
*"ASPNETCORE_ENVIRONMENT": "Development",*
*"ASPNETCORE_URLS": "https://localhost:5001"*
*}



Done now just run each of the configs with debug mode and happy debugging!



For reference adding the complete launch.json
{% gist https://gist.github.com/unrealnerd/31833c828622f48d85fb8f9cef234ee7 %}

Photo by Vincent van Zalinge on Unsplash
Originally blogged on [Blogger](https://bitsmonkey.blogspot.com/2019/01/how-to-run-two-net-core-apps-with.html)
How to reset your forgotten password in PostgreSQL
Tags: postgres
Published: 2019-01-12 14:53:58

---
title: "How to reset your forgotten password in PostgreSQL"
published: true
description: "Did you forget your password? Don't worry!"
tags: PostgreSQL
---

## The moment you realize the problem

It's a good practice even for your local DB server to provide a password for each user. PostgreSQL's default user (who is also an admin) is `postgres`. 

A standard method to get access to our DB is using `psql` command via terminal (I'm running [Manjaro Linux](https://manjaro.org/)). So, we type: 

```bash
psql -U postgres
```
We enter our password and we get the message

![Password Authentication Failed](https://thepracticaldev.s3.amazonaws.com/i/tom079uyk6500equycf8.png)

## Don't Panic!

First of all, we must find the "PostgreSQL Client Authentication Configuration File", which has the name `pg_hba.conf`. In Manjaro, it lives in path `/var/lib/postgres/data/pg_hba.conf`. Be careful that it is required to have root permissions.

```bash
sudo nano /var/lib/postgres/data/pg_hba.conf
```

![PostgreSQL Client Authentication Configuration File](https://thepracticaldev.s3.amazonaws.com/i/zyf18jps8uev8r69pdnm.png)

We change the `md5` authentication in "local" connection to `trust`

```
local   all             all                                     trust
```

and we restart our server

```bash
sudo systemctl restart postgresql
```

Now PostgreSQL doesn't ask a password and we are allowed to connent with user `postgres`

![Trusted Connection](https://thepracticaldev.s3.amazonaws.com/i/ng888uq5914ne97cxsts.png)

Next step is to reset the password

![Reset Password](https://thepracticaldev.s3.amazonaws.com/i/rjxha9c0gucjsk8reprp.png)

We exit `psql`, we turn back `pg_hba.conf` to it's previous state (`md5` authentication) and we restart the server. We are able to connent using our new password for user `postgres`.

![Successful Authentication](https://thepracticaldev.s3.amazonaws.com/i/espqwgzst3yrwbtap4hu.png)

---

*Originally published at https://www.codingnotebook.eu/postgresql-reset-password/*
DSPPGM: Display Program
Tags: ibm, as400
Published: 2019-01-12 14:47:57

---
title: "DSPPGM: Display Program"
published: true
description: "How to find the PGM's source code location in AS/400"
tags: IBM, AS400
---

## A little bit encyclopedic intro

IBM's iSeries operating system (formely AS/400) is a legacy computer system which is mainly used in Financial Services industry (Banking, Insurance). It supports application development in many programming languages, yet the most famous are COBOL, RPG, CL.

In Feb 1993, IBM first introduced ILE (Integrated Language Environment) for ILE C and in May 1994 COBOL, RPG, CL join the party. ILE is anenvironment in which code from many languages can be compiled, bound together, and run.

So we can see PGMs with attributes CBL (for COBOL/400) and also with CBLLE (for ILE COBOL).

![WRKOBJ_EMPCBL](https://thepracticaldev.s3.amazonaws.com/i/hsail4rq0p79sdy92gre.png)

![WRKOBJ_EF1MAIN](https://thepracticaldev.s3.amazonaws.com/i/0w4hgutalgjsyxlwio66.png)

COBOL/400 is the standard COBOL adopted by IBM for the AS/400 system. It differentiates in the sense that the file handling for reports and subfiles, indicator usage and any other feature specific to AS/400 have been incorporated in it.

## The problem

You, as a developer, often have to find the source code from which a pgm object was compiled. Someone tells you: "Try the DSPOBJD (Display Object Description) command". Let's do it! Go to command line, write `DSPOBJD`, press **F4** button, fill in the required fields and press **ENTER**.

![DSPOBJD_EMPCBL](https://thepracticaldev.s3.amazonaws.com/i/15uslmeuc69v32e1ml0g.png)

Select option **8** and notice the displayed information.

![DSPOBJD_EMPCBL_basic](https://thepracticaldev.s3.amazonaws.com/i/g00dthvi5vqw009xlhq4.png)

![DSPOBJD_EMPCBL_service](https://thepracticaldev.s3.amazonaws.com/i/1s6vrejy3fswgngldapl.png)

Voilà! The source code is in Library **USER04441**, in Source file **MYFILE**, in member **EMPCBL**. Our problem is solved! Now let's find **EF1MAIN**'s source code. Following the same process:

![DSPOBJD_EF1MAIN_service](https://thepracticaldev.s3.amazonaws.com/i/09riqbje6gzcur0dxr4b.png)

Wait! What's going on? Where is our information? We have to remember that **EF1MAIN** is a CBLLE program. When it was compiled it didn't produced directly the executable object, but an intermediate **MODULE** and from this the **PGM** was created.

## The Solution

There is another command which is more generic: `DSPPGM` (Display Program). The Display Program Information for a CBLLE program has a lot of screen, so we have to press **ENTER** until we see:

![DSPPGM_EF1MAIN_inf1](https://thepracticaldev.s3.amazonaws.com/i/fdpxuanmhfocvzksy7o3.png)

With **5** option we get:

![DSPPGM_EF1MAIN_inf2](https://thepracticaldev.s3.amazonaws.com/i/u4xybi8s013a8hc0c79h.png)

The source code is in Library **USER04441**, in Source file **SUSANA**, in member **EF1MAIN**.

Now, we really solved our problem!

---

*Originally published at https://www.codingnotebook.eu/dsppgm/*
What is the difference between mywebsite.com and www.mywebsite.com?
Tags: domain, dns, devops, webdev
Published: 2019-01-12 14:37:27

---
title: What is the difference between mywebsite.com and www.mywebsite.com?
published: true
description: The real difference between "naked" domains and subdomains.
tags: domain, DNS, devops, webdev
---

So the other day a friend asked me "What is the difference between the domains mywebsite.com and www.mywebsite.com"?

The differences are mainly technical but important.

The 2 basic differences in very simple terms are relevant to cookies and the ability to change the "destination" that a domain "maps" to in the DNS level.

###So regarding cookies...

The core difference for cookies is that a "naked" domain (like mywebsite.com) send the cookies belonging to them to the subdomains they have if the site in the naked domain uses resources from them (or simply requests data from them). As you may understand, this may cause a waste of bandwidth because most of the subdomains (if not all) have no reason to be aware of the cookies of the main site. In contrast, subdomains do not send cookies to other subdomains (unless explicitly stated in the Set-Cookie header of an HTTP response header)


###Regarding DNS and CNAME records
Naked domains can only be associated with "A" DNS records. A records only allow the domain to be associated with a specific IP Address. However, subdomains (like www.mywebsite.com) support "CNAME" records that allow associating a subdomain with another domains or subdomain (such as server2.mywebsite.com). This is very helpful in situations where you may need to manage and move traffic from one server to another (you can do it by simply changing the domains/subdomains that a subdomains "maps" to in the CNAME record).

I hope you find it enlightening and helpful!

If you have any comments Let me know!
Plume: Federated Blogs with Rust
Tags: githunt, rust, opensource
Published: 2019-01-12 13:21:16

---
title: Plume: Federated Blogs with Rust
published: true
cover_image: https://thepracticaldev.s3.amazonaws.com/i/vokf080vfn5uogean5ph.jpg
description: 
tags: githunt, rust, opensource
---

Plume is a federated blogging platform. It's kind of like Medium, in the same way that Mastodon is kind of like Twitter.

{% github Plume-org/Plume %}

I'm really interested in Plume because I want to learn more about Rust and see how it performs as a web development language. The project seems like a great opportunity to jump into Rust development head first.
I would like to create Docker based PaaS. How do you think?
Tags: docker, startup, discuss, devops
Published: 2019-01-12 13:11:39

---
title: I would like to create Docker based PaaS. How do you think?
published: true
description: 
tags: docker, startup, discuss, devops
---

# What is this

It is said that "Sell Before You Build", so I would like to hear you about my prototype.

This is just a demo image, but you can find what the point is.

![image](https://thepracticaldev.s3.amazonaws.com/i/8ts8dhg4dobhoekyrr3u.gif)

# docker-run.com

https://docker-run.com

docker-run.com enables you to run your Docker Containers in production. All you have to do is fill the url of your Docker image.

# Why

We all know Docker in production environment is great. Stateless deployment, shared environment in both development and production, and more. However, we have to do a lot of work when we manage our containers in production, such as Blue-Green deployment, Containers health check, and learn Kubernates. Do you imagine if we can run Docker Containers just by telling the url of your Docker image?

- No need to create Fargate instance
- No need to learn Kubernates
- No need to write deploy script
- No need to care about scalability
- No need to set up your certificates

Yes, docker-run.com is here: A new and better way to run Docker containers in production.

Possible alternatives:

- https://zeit.co/now
- https://quay.io

# How to use

As you can see the above demo, all you have to do is input your docker image url. docker-run.com creates an unique domain for your application.

Deploy? It is quite easy, no need to install any tools:

```
curl -XPOST -H 'Authorization: YOUR_TOKEN' -d HOST/IMAGE:VERSION https://docker-run.com/APP_ID/renew
```

And the Docker container will be renew without downtime.

# Further information

https://github.com/acro5piano/docker-run.com

Currently docker-run.com is alpha. We will launch beta version by April 2019, so please watch us.