teleren/devto huggingface dataset:
Ploi.io - Server Management Tool
Tags: php, laravel, sql, management
Published: 2019-04-26 12:57:36

I am someone who loves to try out new tools, I think I’ve seen so much panels (Plesk, DirectAdmin, cPanel, VestaCP and much more) that I might have tried them all. Sadly, fact was that I was never satisfied with any of these.

Developing in PHP is what I love to do, I use Laravel all the time and I’m a big fan. So trying to find a way to easily deploy my Laravel apps for my customers was not that easy, I was getting tired of all the manual terminal work I had to do.

I started thinking; “What if I combine everything that I need, in just 1 tool?”

**Enters the concept**

This is where Ploi started with just 1 question. I’ve started development in 2017 may but quickly gave up, it was just too much work to encapsulate in a brief time. Half year goes by in which I did some basic things to the application, but never was it ready for usage.

Then in February 2018, I noticed a colleague-programmer had built something similar, which motivated me a lot. (And this tool he built was really tiny, basically what it did was setup a webhosting environment on a server and you we’re able to upload with FTP or 1-click install WordPress on it).

I then re-started development on Ploi (this is where the name also was made up, its leading from ‘Deploy’) with a lot of motivation. So much motivation that the first beta launched march 2018, 2 other colleague-programmers helped me get started which just gave me a boost more to keep on going.

This is currently how Ploi’s dashboard looks like;

![Dashboard](https://ploi.io/images/screenshots/panel-impression/panel-1.png)


What I personally underestimated was the importance of testing, testing and testing. Provisioning someone’s server is a responsible job and has to be executed correctly, this led to some headaches sometimes.

To encapsulate what Ploi actually does;

Ploi makes it really easy to provision a server for your websites and applications. You can install a server with; DigitalOcean, Vultr, Linode or Custom VPS (with your favorite vendor, make sure you choose Ubuntu 18.04). All servers that are being created with DigitalOcean, Vultr or Linode are provisioned with Ubuntu 18.04. This is because I have the most knowledge of this OS to fully understand and support it.

You can create website’s and install your Github, Bitbucket or Gitlab repository. You can also 1-click install WordPress or upload your website with SFTP.

Packages that are installed by default;

- Nginx
- NodeJS
- MySQL 5.7
- PHP 7.1 (upgrade-able to 7.x through server panel)
- Redis
- Supervisor
- UFW (Uncomplicated firewall)
And much more to handle small things

Once you’ve provisioned a server you’re ready to go🚀

![Site](https://ploi.io/images/screenshots/panel-impression/panel-3.png)

As you can see in the image above, just enter your website domain and add it, instantly you have a online website (you have to point your DNS records to your server ofcourse)

For more information check out https://ploi.io
Modbus Scanner. How to parse Modbus messages
Tags: modbus, comport, serialport, protocol
Published: 2019-04-26 12:13:31

---
title: Modbus Scanner. How to parse Modbus messages
published: true
description: Modbus Scanner TUTORIAL covers that advanced  ASCII and RTU Parser computer programme can facilitate your analyse Modbus messages within the simplest.
tags: modbus, com port, serial port, protocol
---
Gone are the times once centralized industrial systems used Brobdingnagian cupboards with instrumentation connecting by kilometers of thick cables to sensors and actuators. Today, within the overwhelming majority of cases, it's rather more profitable to put in many native controllers, united in a very single network and causing information to the servers via economical communication protocols like Modbus. this permits saving on installation, testing, and maintenance of business instrumentation compared to centralized systems.

[In this article](https://www.virtual-serial-port.org/article/modbus-scanner/), we’ll tell you why Modbus communication protocol is that the high selection for industrial networks and that advanced COM port program computer code can facilitate your scan Modbus messages within the simplest and most convenient means.
Automate start of React Native Debugger when starting Android emulator or iOS simulator
Tags: reactnative, productivity, redux, reactdevtools
Published: 2019-04-26 12:08:01

---
title: Automate start of React Native Debugger when starting Android emulator or iOS simulator
published: true
description: 
tags: reactnative, productivity, redux, reactdevtools, 
---

I always forget to run my [React Native Debugger](https://github.com/jhen0409/react-native-debugger) (great tool btw!) so "Debug JS Remotely" will open a new tab on my Chrome.

I've created this script to automate the process of starting the debugger whenever I will start development. 

Worry not it will check if another instance is already running. It also detects if you have not yet installed the app on your macos.

Please check it out: 

https://gist.github.com/mjmaix/78eff86bd891925fd00b4e4f10fb9a7b
Tips to Choose the Perfect Domain Name for Your Business
Tags: domain, website, domainname
Published: 2019-04-26 11:50:15

---
title: Tips to Choose the Perfect Domain Name for Your Business
published: true
description: 
tags: domain, website, domain name,
---
![Choose the Perfect Domain](https://thepracticaldev.s3.amazonaws.com/i/gkoylz0y9p6bh3x1ttqb.jpg)

Any website needs a domain name. Without one, your site or blog can not exist. This element can make or break your business. Thus, you need to choose a domain name that is easy to find and promote, fits your niche, and reflects your brand. Currently, there are over 150 million domain names in use. If you want to stand out, you need one that is unique and catchy.

Follow these steps to choose the perfect domain name for your website or blog:

- Choose the Right Extension
Even though you can use any extension, it’s recommended to go for a dot-com domain name. Many clients see this as an indicator of the credibility of your business. The dot-com extension is the most popular and inspires trust. Depending on your niche, you can also opt for dot-co, dot-info, dot-net, dot-org, or dot-biz extensions.

- Make It Relevant
Think of your domain name as a marketing tool. It needs to be short, concise, and easy to remember. The right domain name can help you create buzz and promote your brand to the target audience. Ideally, choose one that includes your company’s name or other meaningful words with mass appeal. Branded domains aid in word of mouth marketing and help build credibility.

- Use Keywords
If possible, use keywords that describe your brand and the services you offer. For instance, you provide SEO services online. Although keyword-targeted domains are not as important as they used to be, they still help. Try to find a memorable, brand-related domain name that clients can easily associate with your business.

- Keep It Short and Simple
The perfect domain name should be short, concise, and memorable. If you pick one that is too long, you risk customers misspelling or mistyping it. This can also make it harder for prospects to find your site on search results. As a rule of thumb, look for domains that contain one to three words. Shorter is always better.

- Target Your Area
Local business owners should include their city or state in the domain name. This will make it easier to local clients to find your company online.

- Avoid Hyphens and Numbers
Most customers forget the dash when typing a domain name. If your website has a hyphened domain, this can affect sales. The same goes for numbers. Stay away from them at all costs.

- Think Long-Term
Do not include years or trends in your domain unless you’re planning to use it only for a short time. Keep searching until you find a classic name that is not tied down to a trend. Avoid obscure terms, slang, and niche-specific words that customers might not be familiar with.

- Consider the Price
Compare prices online before you register a new domain name. Most companies offer service for $11 to $13. Some web hosting plans include one or more free domains, so it’s worth shopping around.
What is your iOS Swift Project Structure??
Tags: swift, ios, help
Published: 2019-04-26 11:25:55

---
title: What is your iOS Swift Project Structure??
published: true
description: 

tags:  Swift, iOS, help
---

Hello,
I want to know what is the best structure for creating a swift project.

I am using MVVM and Coordinator patterns, for the API calls I am using RxSwift.

Can you guys share your experience and maybe your XCode directories structure ( In Project Navigation )?
Prioritize the important things
Tags: priority, habbits, productivity
Published: 2019-04-26 11:04:02

---
title: Prioritize the important things
published: true
description: "Do what is important and not what is urgent"
tags: priority, habbits, productivity
---

**"Do what is important and not what is urgent"**,  this sentence is incredible, unfortunately I don't know who the author is. This may seem a little clichéd, mainly because I know that during the day things don't go as we want, often the train got off the rails and we just became another passenger of our own life, I understand you.

**Is what we think important really important?**

My decision was painful (I swear), but I removed all channels from youtube, most of the newsletter, greatly reduced the time of social media (almost zero). All this to get time for what I really love to do or where I want to go. Taking care of myself has become **PRIORITY**.

**"Productivity is not about doing many things, but doing things right"**
Why the Accenture/Hertz affair is no news to me
Tags: enterprise, accenture
Published: 2019-04-26 10:53:10

---
title: Why the Accenture/Hertz affair is no news to me
published: true
description: Hertz VS Accenture
tags: enterprise,accenture 
---

**The news is pretty amazing**. Everybody in the IT field knows what goes on with these kind of companies, but seeing this spreading in the news it's really funny and gives me the chance to write a blog post, which is always nice.

Let's start from the beginning: [Accenture was sued over website redesign by Hertz](https://www.theregister.co.uk/2019/04/23/hertz_accenture_lawsuit/)

[Hertz](https://www.hertz.com), the car rental giant, is suing for the $32M it paid Accenture in fees to get to that aborted stage, and it wants more millions to cover the cost of fixing the mess. 

"Accenture never delivered a functional website or mobile app" Hertz claimed.

Let's recap:

* The US corporation hired monster management consultancy firm Accenture in August 2016 to completely revamp its online presence. 
* The new site was due to go live in December 2017. But a failure to get on top of things led to a delay to January 2018, and then a second delay to April 2018 which was then also missed, we're told. 
* As Hertz endured the delays, it found itself immersed in a nightmare: a product and design that apparently didn't do half of what was specified and still wasn't finished. 
* "By that point, Hertz no longer had any confidence that Accenture was capable of completing the project, and Hertz terminated Accenture," the car rental company complained in a lawsuit lodged against Accenture in New York this month.

And now the funny part: **why this is no news to me?** I'm in the IT field since a while, and I've seen some sh*t.

This story, if you think about it, is crazy. According to Hertz Accenture asked 32M to make a website that a team of a dozen very senior people, let's say 20 with PMs, designers, whatever can easily do in one year, with opensource technologies.

**Come on. It's a car rental website with and Android and iOS app that you have to hook up to a backend software**. Completely doable, even if the backend is a 30 years old AS400 behemoth.

**Let's oversimplify costs**. Let's pay these 20 people 200k a year (which is a huge salary) to do it. Let's add a full year of delays, because we know things can go wrong.

### The entire cost? 8 millions. 

Let's put 2 millions of related costs, and still we have **10 millions**

One third of the cost Hertz claimed to have paid. And at the end you'll have a team that made you everything from scratch, with open technologies and without licenses to be paid, if not minimally.

Accenture is exposed today, but she's not alone. Many companies bill millions delivering nothing to enterprise customers.

**Can't we really do anything to push out these old crooks out of the market?**

**P.s.**
You can read some more details here: [https://twitter.com/allafarce/status/1121174850226147328](https://twitter.com/allafarce/status/1121174850226147328)

*This post originally appeared on https://coding.napolux.com, but was brought to dev.to for your reading pleasure ❤*
Things I Enjoy in Rust: Impl
Published: 2019-04-30 10:36:00

---
title: Things I Enjoy in Rust: Impl
published: true
tags: 
canonical_url: http://blog.jonstodle.com/things-i-enjoy-in-rust-impl/
---

 **Things I enjoy in Rust:**

1. [Enums](https://dev.to/jonstodle/things-i-enjoy-in-rust-enums-4cdl)
2. [Error Handling](https://dev.to/jonstodle/things-i-enjoy-in-rust-error-handling-2jkh)
3. [Immutability](https://dev.to/jonstodle/things-i-enjoy-in-rust-immutability-b9g)
4. **Impl**
5. [Macros](https://dev.to/jonstodle/things-i-enjoy-in-rust-macros-21fp)

Rust doesn’t have classes or methods. Instead it uses structs and associated functions. To associate a function with a struct you use the `impl` keyword:

```
struct Point {
    x: isize,
    y: isize,
}

impl Point {
    fn new(x: isize, y: isize) -> Point {
        Point { x, y }
    }

    fn move_laterally(&mut self, amount: isize) {
        self.x + amount;
    }
}

```

The two functions are implemented for `Point` and they are now considered associated functions of `Point`.

The first function, `new`, creates a new instance of a `Point` by taking an `x` and a `y` coordinate. This function is much like a `static` method or class function in other languages. You use it like this:

```
let point = Point::new(0, 0);

```

The second function, `move_laterally`, has reference to `self`, which means it can be used as a method on an instance of `Point`. This is much like instance methods in other languages:

```
let mut point = Point::new(0, 0);
point.move_laterally(10);

```

What I really like about `impl` is the fact that anyone can implement function for a struct - even for structs not defined in the same project. Want to make a helper function to reverse strings?

```
impl String {
    fn reverse(&self) -> String {
        self.chars().into_iter()
            .rev()
            .collect()
    }
}

let text: String = "Allonsy".to_string();
let reverse = text.reverse(); // "ysnollA"

```

`String` is defined in the standard library, but you are still able to extend it with your own functionality. Neat!

You’re even able to implement _traits_ (Rust’s near equivalent to _interface_ in languages like C#, Java or Typescript) for structs not defined in your project. Even neater!

This flexibility of `impl` is something I enjoy.
On Glitch This Week
Tags: glitch, glitchthisweek, showdev
Published: 2019-04-26 09:09:16

---
title: On Glitch This Week
published: true
canonical_url: https://glitch.com/@glitch/glitch-this-week-april-24-2019
series: Glitch This Week
cover_image: https://cdn.glitch.com/2bdfb3f8-05ef-4035-a06e-2043962a3a13%2FtwogDevBanner.png?1556228293284
description: Just a few projects that caught our eye this week on Glitch (April 24, 2019).
tags: glitch,glitchthisweek,showdev
---

Glitch This Week is a regular series, in which we round-up just some of the amazing projects that fantastic creators have made on [Glitch](https://glitch.com/). Here are a few projects that caught our eye this week.

## [Svelte 3 Starter](https://glitch.com/~svelte-v3)

Svelte is a component framework, like React or Vue, that compiles to vanilla JS. This week saw the [release of version 3](https://svelte.dev/blog/svelte-3-rethinking-reactivity), which packed in a significant overhaul. The result is great performance, smaller bundles, as well as the built-in style encapsulation and declarative transitions. If you're excited to try it out, then check out [Tom Wilson](https://glitch.com/@twilson63)'s "[svelte-v3](https://glitch.com/~svelte-v3)" - a quickstart project that will get you up and running with Svelte 3 quickly - remix the project and start editing `src/App.html`.

{% user twilson63 %}

{% glitch svelte-v3 app %}


## [Humor Detecting AI](https://glitch.com/~humboto-humor-ai)

Next up we have "[humboto-humor-ai](https://glitch.com/~humboto-humor-ai)" by [Tanya Brassie](https://glitch.com/@itstanyalol). Using next-generation technologies, the app has "endowed Hümbōto Ai with a brain capable of recognizing humor". Upload an image and see what humor rating it gets. Then try viewing the source to understand the true depth of this AI tech ;) 

{% glitch humboto-humor-ai app %}

## [Model-Viewer Tester](https://glitch.com/~model-viewer-tester)

"[model-viewer-tester](https://glitch.com/~model-viewer-tester)" is a handy app by [Mr.doob](https://glitch.com/@mrdoob) that enables you to easily test how your models look like in model-viewer, a web component for rendering interactive 3d models on the web and in AR. Drag and drop a GLB or embedded GLTF file to check it out.

{% glitch model-viewer-tester app %}

Ooh, and a bonus app! While Glitch is primarily focused on Node.js, other back-ends do work. So I thought I'd throw in this great Python project "[datasette-csvs](https://glitch.com/~datasette-csvs)" by [Simon Willison](https://glitch.com/@simonw). He got [Datasette](https://github.com/simonw/datasette), his tool for exploring and publishing data, up and running on Glitch. As Simon writes in [this blog post](https://simonwillison.net/2019/Apr/23/datasette-glitch/), the result is you can "drag-and-drop in a CSV file and watch it get served by Datasette on Glitch just a few seconds later," making it easy to turn CSV files into a browseable interface and JSON API.

Check out the other featured projects in [this week's round-up on Glitch](https://glitch.com/@glitch/glitch-this-week-april-24-2019).
Shells: How To Use A Modified Environment In Commands
Tags: shell, fish, bash, commandline
Published: 2019-04-26 08:34:52

---
title: Shells: How To Use A Modified Environment In Commands
published: true
description: How to run commands with a modified environment in fish / bash / ksh / tcsh / zsh
tags: shell, fish, bash, command line
---

### Introduction

I love [fish 🐟](https://fishshell.com/) shell because of its convenient auto suggestions and excellent performance.

I had, however, a slightly serious problem on switching from [bash](https://www.gnu.org/software/bash/).
I didn't know how to use a modified environment in commands.

For example, I was in search for how to change the names of home subdirectories, and found the bash solution like this 🤔:

```shell
LANG=C xdg-user-dirs-gtk-update
```

This means running the `xdg-user-dirs-gtk-update` command with setting "C" for the `LANG` environment.
Running the same command failed in fish shell...🥴

I, however, didn't feel like always using an additional step such as the `bash` command or `set`.

I wrote this post so as to demonstrate how to solve it.

\* Besides: Just today, I found fish prints the great error message. Holy mackerel! :

> fish: Unsupported use of '='. To run 'xdg-user-dirs-gtk-update' with a modified environment, please use 'env LANG=C xdg-user-dirs-gtk-update…'

### Body

In order to set a modified environment, it's possible in bash by using the `SOME_ENV=value` format at the top:

```shell
EDITOR=vi git commit
```

It's also the same about [ksh](http://www.kornshell.org/) / [zsh](https://www.zsh.org/).

But not about fish!

There isn't any solution? Yes. [It's possible](https://fishshell.com/docs/current/faq.html#faq-single-env) if we use [`env`](https://en.wikipedia.org/wiki/Env) command 😊:

> _`SOME_VAR=1 command` produces an error: `Unknown command "SOME_VAR=1"`._
> Use the `env` command.
> `env SOME_VAR=1 command`
> You can also declare a local variable in a block:

The `env SOME_ENV=value` format works nicely!!

```shell
env SOME_ENV=vi git commit
```

It's the same about [tcsh](http://www.tcsh.org/).

### Conclusion

<table>
<thead>
<tr><th>Shell</th><th>Version</th><th>Grammar</th></tr>
</thead>
<tbody>
<tr><td><strong>bash</strong></td><td>5.0.2</td><td rowspan="3"><p><code>SOME_ENV=value command</code></p><p><i><small>*Note: It seems ignored if <code>env </code> is added to the top of commands.</small></i></p></td></tr>
<tr><td><strong>ksh</strong></td><td>5.2.14</td></tr>
<tr><td><strong>zsh</strong></td><td>5.7.1</td></tr>
<tr><td><strong>fish</strong></td><td>3.0.2</td><td rowspan="2"><code><strong>env</strong> SOME_ENV=value command</code></td></tr>
<tr><td><strong>tsch</strong></td><td>6.20.0</td></tr>
</tbody>
</table>

### References And My Thanks To

- https://fishshell.com/docs/current/faq.html#faq-single-env
- http://hyperpolyglot.org/unix-shells

Happy operating 🐈
An awesome terminal.
Tags: fun
Published: 2019-04-26 08:13:06

---
title: An awesome terminal.
published: true
description: eDEX-UI terminal.
tags: #fun
---

![screenshot](https://thepracticaldev.s3.amazonaws.com/i/vk3q6f2xbl61yeg4qki0.png)

Today, I saw this project. It is so cool!

{% github GitSquared/edex-ui %}
Completely move GIT from one provider to another.
Tags: github, bitbucket, gitlab, git
Published: 2019-04-26 06:43:29

---
title: Completely move GIT from one provider to another.
published: true
description: Moving GIT repo around
tags: github,bitbucket,gitlab,git
---

I googled around a lot to see how to move git repository from one remote host to another.

In cloning, my goal is to

- Make sure that all branches on source remote is cloned
- Make sure that all tags on source remote is cloned

Then after cloning, my goal is to

- Push all branches to another remote host
- Push all tags to another remote host

The way to do this is simple. I've done this with over 20 of my repositories.

- Bitbucket -> Github
- Bitbucket -> another bitbucket
- Github -> Bitbucket
- Github -> another github
- Github -> Gitlab
- Bitbucket -> Gitlab

Let's get started

- Note:
- `TEMP_REPO_FOLDERNAME` is just a folder name. Any name is ok.
- `SOURCE_REMOTE_URL` is a source (original) git repository url. It can be http or ssh.
- example: `https://github.com/SaKKo/SKTipAlertView.git`
- `NEW_REMOTE_URL` is where you want to move your repository to. (must be blank repo).
- example: `https://sakko@bitbucket.org/sakko/SKTipAlertView.git`

Let's begin (replace `TEMP_REPO_FOLDERNAME` `SOURCE_REMOTE_URL` `NEW_REMOTE_URL` with what you want then just run the code).

```
mkdir TEMP_REPO_FOLDERNAME # create a new folder
cd TEMP_REPO_FOLDERNAME
git init --bare .git # create a bare repo
git remote add origin SOURCE_REMOTE_URL # add a remote
git fetch origin refs/heads/*:refs/heads/* # fetch heads
git fetch origin refs/tags/*:refs/tags/* # fetch tags
git init # reinit work tree
git checkout master # checkout a branch
git remote rm origin # remove remote repo
git remote add origin NEW_REMOTE_URL # new remote url
git push -u origin master # now push master
git push --all # now push all other branches
```

Done!
Hope you find this useful :D