teleren/devto huggingface dataset:
We're migrating Unmock to Meeshkan
Tags: news, opensource
Published: 2020-01-28 09:54:15

---
title: We're migrating Unmock to Meeshkan
published: true
description: A short announcement and story of open-source resilience.
canonical_url: https://meeshkan.com/blog/migrating-unmock-to-meeshkan/
tags: news, opensource
---

Like most open-source projects, we had lofty goals when we started building [Unmock](https://www.unmock.io/) in November 2018. 

⭐️ Thousands of stars
🌎 Hundreds of contributors from around the globe
🔖 New issues filed every day 
💻 Fuzz testing for everyone! 

But (again, like most open-source projects) it didn't happen. That's ok, but it does mean that we need to rethink how we position Unmock to the community.

That's why we've decided to merge Unmock into the Meeshkan brand. Unmock didn't take off in the cross-company, community-based way we imagined, so it doesn't make sense to keep it under a separate project. 

We're going to devote some time to figure out _why_ that didn't work, as well. We want to engage with the community better as an organization and not repeat the same mistakes in future open-source endeavors. This includes getting earlier feedback to learn which of our ideas would be best to open source and what direction development should take once it is.

This whole process will also give us the opportunity to archive unused resources, clean up abandoned experiments and better integrate Unmock with our other open-source projects ([hint hint](https://github.com/meeshkan/meeshkan)).

Throughout the next couple of weeks, we'll be migrating:
* [GitHub repositories](https://github.com/unmock/)
* [DEV article](https://dev.to/unmock/)
* [Twitter account](https://twitter.com/unmock_io)
* [YouTube channel](https://www.youtube.com/channel/UCBe00CDjCEe3LAhv3-TXIAw)

...and anything else I'm forgetting at the moment 😅

So please be patient with us as we move things around. Also if you have any feedback related to Unmock or you'd be interested in giving feedback to some of our other early-stage projects, comment below or reach out to us: contact@meeshkan.com

Let's see what happens next 🤷‍♀️
Hobby Project: Save Dev Articles
Tags: api, devto
Published: 2020-01-28 02:02:54

I was able to put together a basic save of dev articles. The main focus here is defining what the data storage will look like, and it still isn't final.

https://gitlab.com/jessephillips/devarticlator/compare/v0.0.2...v0.0.3

Since the intent is to allow article creation, the stored data should match what creation wants. However the data is pulled in with a different structure specification. This has resulted in me defining three structures and a need to transition between them.

Interestingly this has some relevance to an [improvement proposal](https://github.com/JesseKPhillips/DIPs/blob/serialize/attribute/DIPs/1NNN-jkp.md) I'm working on.

-------

```dlang 
auto structureArticles(Range)(Range articles) if (isInputRange!Range
                                            && is(ElementType!Range == ArticleMe)) {
    return articles.map!(x => Article(ArticleMeta(x), x.body_markdown));
}
```

Since I want to keep meta data separate, I want to extract the markdown body but keep it with the meta data.

With this defined internal representation I can turn to using it to write out the data.

```dlang
void saveArticles(Range)(Range articles, string folder) if(is(ElementType!Range == Article))
in(folder.exists, "Create direcorty before calling to save articles.")
{
    void saveArticle(Article article) {
        import std.file;
        import std.path;

        auto filename = article.meta.title;
        assert(isValidFilename(filename), "Article Name Conflicts with valid file name.");

        write(folder.buildPath(filename.setExtension("md")), article.content);
        write(folder.buildPath(filename.setExtension("json")), article.meta.serializeToPrettyJson);
    }

    articles.each!saveArticle;
}
```

I broke this up into two methods, the outer method is just applying the inner method to each article. A lambda could have been used, I just felt this had a little more structure. 

I decided for this first attempt I would just use the article title for the file name. This will be a big issue for Windows, so sanitizing will be needed. 

```dlang
in(folder.exists, "Create direcorty before calling to save articles.")
```

This method is not going to manage folders, so I'm setting an expectation the directory will already exist. 

-------

I did build this out by first writing the method signature then a unittest. I removed the test for writing the files because it was not testing anything and I hate filesystem dependency.
Express.js boilerplate cheatsheet
Tags: express, node, starter, cheatsheet
Published: 2020-01-28 09:34:12

This is the bare minimum cheatsheet to get express.js up and running. 

* Download and install node.js from https://nodejs.org/en/download/
* Open terminal or commandline
* Creat a project directory and change to it 
* Run terminal command: **npm init** (accept all defaults by pressing enter)
  * This will create package.json file, which has basic project configuration
* Run terminal command: **npm i express**
  * This installs express.js
* Run terminal command: **npm i -g nodemon**
  * Installs node monitor, which will make sure server is restared on file saves 
* Create new file **index.js** (which is referenced in the package.json file created above)
* Add the following starter code to index.js, which is the bare minimum to get it going:
``` javascript
    const express = require('express')
    const app = express()
    const port = 3000

    app.get('/', (req, res) => res.send('Hello World!'))

    app.listen(port, () => console.log(`Example app listening on port ${port}!`))
```
* Run terminal command: **node index.js** to run it
* or run terminal command: **nodemon index.js** to run it via nodemon - this will ensure that server is restarted automatically whenever there is a file change
* Open **localhost:3000** to view in browser - should show: **Hello World!**
Circular Linked List Data Structure and operations
Tags: computerscience, data, structure
Published: 2020-01-28 08:48:37


## Circular Linked List 

A Circular Linked Data Structure will have nodes that have:

1. Data 
2. Address which points to the **next** node
3. The last node in turn points to the starting node, therefore forming a chain

## Circular Linked List in C++

```
struct Node 
{ 
    int data; 
    struct Node *next; 
};
```
Containerize your PHP application (Docker 101)
Tags: docker, container, php, dockerfile
Published: 2020-01-28 08:45:05

---
title: Containerize your PHP application (Docker 101)
published: true
description: How to implement docker into your work as a PHP developer
tags:  Docker, Container, Php, Dockerfile 
cover_image: https://anastasionico.uk/img/blog/containerize-your-php-application-docker-basics.jpg
---
It's 2020,

things have changed quickly in the last few years,

We used to work with local web servers such as MAMP and XAMPP or send files to virtual machines on the live server.

Now there is a much faster and slimmer solution, 

It is called Docker and in this post, I'll show you what you need to know to put your step into the world of containers.

Docker has changed the way you can use software and write code,



**Do you need to work with PHP? **

just download the version you prefer and start work with it.

**Want a Redis database?**

one command and you are good to go.

**Creating a NodeJs-Golang-Mongo microservice application?**

Containers are the ways





[READ THE FULL ARTICLE HERE](https://anastasionico.uk/blog/containerize-your-php-application-docker-basics)
glitch, jexia and zeit serverless services
Tags: serverless, discuss
Published: 2020-01-28 08:29:08

is there too much choice in the serverless space ! i am so confused now ! 

at first glance
* [Glitch](https://glitch.com/) looks good for simple projects
* [fly](https://fly.io/) docker containers on the edge
* [Jexia](https://www.jexia.com/en/examples/) documentation looks amazing
* [Zeit Now](https://zeit.co/dashboard) looks complex but good for heavyweight use (and a 3 line config file is NOT zero config to me)

which one do you use ?
What's in a Makefile?
Tags: make, tooling
Published: 2020-01-28 08:26:36

---
title: What's in a Makefile?
published: true
description: A gentle introduction to Make and Makefiles
tags: make, tooling
---

Rules like this:

```
  target: [prerequisite] [...]
      shell command
      another shell \
         command on multiple lines
```

The target is the name of a file that can be built by those shell commands. If you run `make target` and the target is older than any of the prerequisite files, or doesn't exist, Make runs the shell commands. The prerequisites are also file names; Make will look for rules to build them too, recursively. If all of them are up to date, Make will say *`target' is up to date* and exit without running any commands.

Some things that might trip you up at first:

- Those shell commands **must** be indented by a proper tab character.

- Each line of shell commands is $-expanded by Make **before** being passed to the shell. Make expands `$(NAME)` and `${NAME}` but `$NAME` would work like `${N}AME`.

- Each logical shell command is run in a separate shell. The example above would result in something like the following:
  <code>
    $(SHELL) -c 'shell command' &&
      $(SHELL) -c 'another shell command on multiple lines'
  </code>
  This means that *shell* variables and functions are not passed from one
  command to the next.

- Execution stops at the first failure.

If the symbols in a Makefile look weird, check the [GNU `make` Quick Reference](https://www.gnu.org/software/make/manual/html_node/Quick-Reference.html). For convenience here are a few that are more common:

| Symbol  | What it means                                                                     |
|---------|-----------------------------------------------------------------------------------|
| `$@`    | The file name of the target.                                                      |
| `$<`    | The name of the first prerequisite.                                               |
| `$^`    | The names of all the prerequisites.                                               |
| `$(@D)` | The directory part of `$@.`                                                       |
| `$(@F)` | The file-within-directory (`basename`) part of `$@`.                              |
| `$$`    | A literal dollar sign. Useful when you really need to reference a shell variable. |

Make also has variables, recipes, functions, and conditional evaluation, for example, but everything is based around rules like the one at the top. Check out the [GNU `make` manual](https://www.gnu.org/software/make/manual/html_node/index.html#Top) to learn more. There are other variants of Make, but GNU `make` seems to be prevalent. Its manual calls out where behaviour is specific to GNU so it's a decent starting point for whatever variant you're working with.

Good luck!
TDD without realizing it!
Tags: tdd, typescript, javascript
Published: 2020-01-28 08:21:47

In the spirit of *get it up and running first (the Prototype). Then reactoring and perfecting later*.  I create components with mock data in the Prototype itself. Then I mark up the css, and code up just what's specified and no more. 

The data for the Prototype is created in the same manner as an automated test would use; aiming to test all boundaries, (such as min, max, min+1, min-1, max+1, max-1), as well as incorrect data type injection. Additionally; the mock data reflect permutations to simulate a bad workflow.

The Jasmine tests are not a focus yet, other than they simply create a component.

When I'm ready to check it in, I notify my lead, that the first demo is ready. He pulls the master branch takes a look and provides feedback. The first iteration completed with feedback.

From there, the code is delivered to the dev. server which allow BSAs, Designers, Product Owners and QA folks to add more feedback. Because the community gets to view the demo at the earliest point, the feedback reflects the differences between intentions and reality. 

As things progress and we hook up the back end, all the mock data injection moves to our Jasmine tests.

New Tasks are made based on feedback and are now visible to the team. Each subsequent checkin requires an attached task. All BSAs and Leads need to do is guide on the order to be worked.

This process is Test Driven in that everyone else sees the results as soon as possible and are included in the feedback process.  I have never once yet found that Project Managers, Product Owners, Team Leads, or even the customer's not really like this concept of getting involved early.

JWP2020
I'm a veteran UI developer, AMA!
Tags: discuss, watercooler, ama
Published: 2020-01-28 08:15:57

So, I've been in development my whole career (nearly 20 years) starting with backend, C#, and in recent years moving over to front end. I code in JavaScript, mainly using React. 

I've worked in large scale organisations (NHS) and small start ups, as well as running my own marketing agency.

Although usually found on Reddit, I thought this Ask Me Anything (AMA) format might be interesting for Dev as I've not seen it pop up before and there are certainly lots of developers starting out that might have questions I can hopefully answer.

You got questions, I got answers: fire away!
Validate Javascript project with Typescript
Tags: javascript, typescript
Published: 2020-01-28 08:14:50

Interface or contract is important to define the boundary between modules. Typescript helps to validate your code with contract automatically. Changing the whole project from Javascript to Typescript may not be feasible, but you can provide only Typescript definitions.

Let's say I have a project like this.

src/note-service.js

```js
const uuid = require('uuid/v4');

async function addNote(note) {
  // return a string as id
  return uuid();
}

module.exports = {
  addNote,
};
```

src/main.js

```js
const NoteService = require('./note-service');

async function main() {
  const noteId = await NoteService.addNote({
    content: 'hello world',
  });
  console.log(`note id: ${noteId}`);
}

main();
```

We can simply add a definition to our Note service. The file name should match the Javascript code file.

src/note-service.d.ts

```ts
export type Uuid = string;

export function addNote(note: Note): Promise<Uuid>;

export interface Note {
  content: string,
}

```

We also need to add Typescript configuration file.

tsconfig.json

```json
{
  "compilerOptions": {
    "outDir": "./built",
    "target": "ES2018",
    "moduleResolution": "node",
    "module": "CommonJS",
    "allowJs": true,
    "checkJs": true
  },
  "include": [
    "./src/**/*"
  ],
  "exclude": [
    "node_modules"
  ]
}

```

So now we can simply use `tsc --noEmit` to validate our project.
The Identity Platform For The People 
Tags: reason, codingwithkamo, privacy, tutorial
Published: 2020-01-28 08:13:03

<p>As I wait for my team to switch the VM back on so that I can get back to work, I decided to hack together a quick login page, for a coding challenge I accepted to do last week. <i>(in the spirit of being apart of a coding community, never been apart of one before)</i>.</p>

In my years of programming, there are a few good practices, I neglected, one of the most important ones was creating a repo. (I have lost many a code due to this neglect)

So here is the codebase of the <a href="https://github.com/devUniversity/indentity">"Identity Platform For The People"</a> (I just had to build it for the people it's a thing now)


This is more of an intro and my official acceptance to the <a href="https://twitter.com/hashtag/CodingWithKamo?src=hashtag_click">#CodingWithKamo</a> challenge

I have been yearning to learn a new language, and I decided to to take on any new challenge I find on the internet with <a href="https://reasonml.github.io/">reasonml</a> <i>Who does not love a challenge</i>


###Let us begin
####The challenge was to create a login page, here is how I went about it

<a href="https://github.com/devUniversity/indentity">"Identity Platform For The People"</a>
_After cloning the project below I run the modified script below from [reasonML docs](https://reasonml.github.io/reason-react/docs/en/installation.html)_

replacing "-my-react-app" with  "." so it can generate the project within the cloned project and not create a new folder
 
<code>
npm install --global bs-platform@6.2.1
bsb -init . -theme react-hooks
npm install && npm start
</code>

<code>
<i>in another tab</i>
npm run server
</code>

With that done I created a folder named _components_ inside of /src

/src/components

Input.re
```
[@react.component]
let make = (~name) =>{
 

  <input id={name} placeholder={name} type_="text"></input>;


};
```
/src/Login
Login.re
```
[@react.component]
let make = (~name) =>{
 

<div>
<Input name="username"/>
<Input name="password"/>
<button type_="submit">{ReasonReact.string(name)}</button>
</div>


};

```
/src
Index.re
```
// Entry point

[@bs.val] external document: Js.t({..}) = "document";

ReactDOMRe.renderToElementWithId(<Login name="Login" />, "login");

```

and for all those that have used react, are used to having a _div element with a _login id_  within the _index.html_ page

/
index.html

```
//
<body>

  <div id="login"></div>
//
</body>

```

This is my submission to the first [#CodingWithKamo](https://twitter.com/hashtag/CodingWithKamo?src=hashtag_click)


##Learning Points 

_type_ is reserved withing reason, using type_="" allows the use of it within input elements



##Coming Up

This is the first of many, there is still a lot that needs to be done, the first thing is styling.
ms chrome edge is truely open
Tags: browser, opensource, news
Published: 2020-01-28 07:49:30

the ms edge chrome switch is a true two way open collaboration

https://www.windowslatest.com/2020/01/26/microsoft-is-porting-chromium-edges-feature-to-chrome/amp/

*In the latest move, Microsoft has accepted Google’s offer to port Chromium Edge feature to Chrome browser. In this case, the feature is Chromium Edge’s ‘Move to new Window’, which allows users to open a particular tab in a new window.*
AOL Desktop Gold Download Windows | Install & Update
Tags: aolgolddownload, downloadaolgolddesktop, aoldownloadinstall
Published: 2020-01-28 07:32:43

AOL Desktop gold is one of the most popular software that provide security features, automatic update, enhanced protection and more.

That's why users want to download AOL desktop gold on Windows and MAC systems. But they trouble by some download problems such as 104 error, download stopping, install error and more.

So, before downloading AOL gold, you need to remember some things like-

- Your Internet connection should be good.
- Compatibility between software and system.
- Enough space in your system to download.
- If your system has a virus or malware program then remove them.

Now, try to install desktop gold on your Windows system.

For more info,on download visit this https://desktop-software.com/
Once upon a time, installing Ubuntu + Windows dual boot on Legion Y530
Tags: ubuntu, dualossetup, dev, lenovolegiony530
Published: 2020-01-28 07:29:57


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

This will be a long story for those who find themselves in a situation when dual boot Ubuntu + Windows doesn’t work as expected.
So let’s get started. I recently got a new laptop Lenovo legion Y530 for software development. Since I love Linux OS due to its features and usability when it comes to Software development, I thought to install Ubuntu 18.04 along with Windows will be a cakewalk.

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

### As it turned out it was a nightmare, reasons:

Legion laptop has preinstalled Windows with an Nvidia graphics card.
Tech specs like 32GB RAM, i7core8th gen processor. Less battery life since it is a gaming laptop.

I came to know from many articles that with this laptop you need to take extra care in terms of how you set up the Linux distro along with Win10.
So I went ahead and installed Linux along with Windows with all partitions in place.

But two days later the system started behaving weirdly. I used to get into the login loop in Ubuntu meaning when I tried to log in with the correct password it does not log me in but it again comes back to the login screen without any error which pissed me off.


Then I found online some ways to mitigate this issue but some worked for a short duration like changing the password etc.


### Important things to remember

<i>You need to download all the necessary drivers so that Linux works smoothly.
Setup in a way so that you can remove Ubuntu easily later from the machine.
Though in the past I had installed Ubuntu along with windows many times this situation was kind of weird and challenging for me.</i>

After successful installation, I had started installed all the required software tools for development which worked for at least 3 days until the apocalypse arrived ☺

As a backup, I had windows running alongside. Due to inconsistent performance, I had to go back to Windows only ways of working 😢

Long story short it was hell a lot of learning.

I would encourage you to get your hands dirty with Ubuntu + Windows setup and get some experience with how things work and why so.
Keep learning.
Merek
Published: 2020-01-28 07:14:55

Seseorang tidak dapat mengabaikan keuntungan dari branding dan cara cek merek karena memiliki dampak positif secara keseluruhan pada perusahaan. dgip desain industri Ini mengubah <a href="https://patendo.com/cara-perpanjangan-merek-dan-pengalihan-hak-merek/">syarat perpanjangan merek</a> cara target pasar memandang produk, memberinya identitas yang dapat dikenali, membantu dalam mengarahkan bisnis baru, dan memuji strategi pemasaran.

Memberikan Identitas Terhadap Produk
Tujuan utama branding adalah untuk memberi nama produk, menetapkan atribut (logo, warna, suara, dll.) Dan surat pengalihan hak merek mengembangkan kepribadian yang memiliki identitas berbeda. Branding mengubah produk generik menjadi sesuatu yang mudah dikenali dan mudah diingat dgip desain industri.

Membedakan Produk Dari Kompetisi
Merek yang berbeda memiliki identitas syarat perpanjangan merek yang berbeda pula. Branding <a href="https://patendo.com/dgip-cek-merek/">dgip desain industri</a>  membantu membedakan produk dari yang lain dan memposisikannya dengan cara yang diinginkan perusahaan. Hal ini dilakukan dengan mengembangkan pandangan berbeda dengan merek bekerja pada identitas merek, pesan merek, dan nada suara merek dan cara cek merek.

Meningkatkan Recall
Karena branding memberikan atribut yang dapat dikenali pada produk, branding meningkatkan daya ingatnya. Ini menambah kemampuan untuk memberikan pengalaman atau karakteristik pada merek sebelum <a href="https://patendo.com/cara-perpanjangan-merek-dan-pengalihan-hak-merek/">surat pengalihan hak merek</a>  dan setelah penjualan terjadi.

Menciptakan Kepercayaan
Karena cara merek memberikan identitas yang dapat syarat perpanjangan merek dikenali pada produk, itu meningkatkan kepercayaan pelanggan karena merek mereka sekarang dapat mengidentifikasi cek siapa yang harus disalahkan atau dipromosikan sesuai dengan pengalaman mereka dengannya surat hak .

Branding meningkatkan kepercayaan karena pelanggan mendapatkan identitas untuk menuntut jika janji tidak terpenuhi pengalihan.
Meningkatkan Nilai Pasar Keseluruhan
Merek desain memiliki nilai sendiri syarat sebagai aset terpisah (disebut ekuitas merek). Ekuitas merek adalah peningkatan surat pengalihan hak merek nilai suatu produk hanya karena perpanjangan  nama merek dikaitkan dengannya. Selain itu, sebuah merek juga dapat dijual sebagai aset terpisah dgip.

Menarik Pelanggan Baru
Merek yang kuat menarik lebih banyak pelanggan seperti magnet. Branding yang kuat berarti ada kesan positif perusahaan industri di benak pelanggan <a href="https://patendo.com/dgip-cek-merek/">cara cek merek</a> . Ini memicu syarat perpanjangan merek rujukan sukarela melalui mulut ke mulut dan pemasaran viral.