teleren/devto huggingface dataset:
Breakpoints to the rescue
Tags: testing, html, react
Published: 2020-11-16 01:53:17

I have come to respect the breakpoints that you can set in Chrome DevTools when inspecting the DOM. It is especially handy when you are trying to find an element that disappears as soon as you click outside the window.

I was interacting with a drop-down menu of a React app, where the list of items would disappear as soon as I moved the cursor elsewhere.

## Set a breakpoint

### Step 1

Find the container element in the DOM and highlight it. Then click on the ... to bring up the secondary menu. ![](https://dev-to-uploads.s3.amazonaws.com/i/nrevngci48v9h077apwl.png)

### Step 2

Set a breakpoint on subtree changes.
![](https://dev-to-uploads.s3.amazonaws.com/i/m0ohuvu7cvuhwghlt5up.png)

### Step 3

Confirm that you see that blue dot next to the selected line.
![](https://dev-to-uploads.s3.amazonaws.com/i/cikdvgwupo5wwgwqkian.png)
 
## Make a move

Now that the breakpoint is set, you can interact with the application. You may need to resume the application a few times to get to the desired state. When you are there, just switch back to the *Elements* tab and find the element that you are looking for.

## Remove the breakpoint

When you no longer need it, remove it. You can do this the same way you set the breakpoint.
React Native - Clean Architecture
Tags: architecture, react, reactnative
Published: 2020-11-16 01:48:25

Hi everyone the last time that I worked in a startup with React Native I found a lot of problems with the scalability and encapsulation of different modules and layers.

## The problem

React Native is a framework that you can use to development hybrid mobile applications, so as we know we need a API maybe.. and if this is your case and you have the experience working with this framework. I'm sure that you found problems like this:

![crash style](https://dev-to-uploads.s3.amazonaws.com/i/lrsh7fpv9ccecr6d3h6k.png)

This is a nightmare in big applications because is really difficult to debug, the only way is find in all the code where is the object property that is (undefined | null | any not compatible with the component or styles).

Or in this other case:

![crash text](https://dev-to-uploads.s3.amazonaws.com/i/zmndkw0l39p4mv1bg0rr.png)

The problem here maybe was a render without the correct data, or some change in the API contract.

## The proposed solution

I study how apply something like Clean Architecture to a react native project and started to build a boilerplate to share with the community.

But this apply to different cases.

1. If you have a stable backend | api maybe you wanna keep the frontend more easier or lightweight I use something like that:

![basic architecture](https://dev-to-uploads.s3.amazonaws.com/i/qz4uupspkzgv3h248jrj.png)

2. If you wanna get a stable application, with hard safety layers, testeable and easy to scale but a bigger cost in time.

![Clean architecture](https://dev-to-uploads.s3.amazonaws.com/i/vhqghx55gcdvcakk4oom.png)

![data-flow](https://raw.githubusercontent.com/G33N/rn-clean-architecture/master/doc/architecture.png)

https://github.com/G33N/rn-clean-architecture

3. For a really big application I recommended separate the app in independiente modules or small applications, like chat, feed, stories... This is more efficient in bigger teams +2 squads or +10 developers. This help to the organization to give more autonomy and as plus more velocity.

Something like that: https://github.com/G33N/rn-mma-app repo in progress Sorry! 

Main resources:
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

Thanks for reading! all comments all welcome and help me to build betters things to share with you, so pls leave me your comment!
SVELTE의 개선해야 할 점
Tags: javascript, svelte, discuss, korean
Published: 2020-11-16 01:16:42

The plain english of this article for non-korean users:

- The Cons of SVELTE
  - Proprietary(Closed) community
  - No Compiler Extension for customization of SVELTE
  - Hard to hydrate(SSR)
- But I like SVELTE and I hope to grow up this ecosystem.


## 1. 닫혀 있는 커뮤니티

스벨트는 내가 생각했던 것보다 상당히 닫혀 있는 커뮤니티인 점에 놀랐다. 이슈가 올라와도 컨트리뷰터의 결정에 따라 이슈가 순식간에 닫힌다.
물론 스벨트도 스벨트 나름대로 기준이 있고, 그 기준에서 벗어나려 하면 스벨트 자체 생명주기에 지장이 생길 수는 있다.
가뜩이나 커뮤니티 규모도 작고 한정적인데, 리액트와 뷰의 부족함을 스벨트로 채우려 하면... 열에 아홉은 그냥 컨트리뷰터에 의해 반려된다고 보면 된다.

## 2. 컴파일러 확장의 부재

스벨트의 매력은 바로 컴포넌트를 트랜스파일로 하여금 성능과 메모리 관리 효율을 최대한 이끌어낸다에 있다. 이건 리액트와 뷰에서 차별화할 수 있는 부정할 수 없는 사실이다. 하지만 이를 통해 잃은 게 뭐냐, 바로 UMD의 부재다. UMD의 부재는 이미 스벨트 참여자들도 인지는 하고 있지만, 우선순위는 낮다고 한다.
그렇다면, 스벨트가 확장성이 높다고는 하지만 정작 중요한 확장성이 없다.
바로 스벨트를 컴파일러하는 모듈의 확장이 없다는 것이다.
이걸 격하게 느낀 게 바로 `use` 속성, 즉 액션이다.
스벨트는 컴포넌트의 스크립트적 확장을 위해 액션을 지원하고, 간결하며 강력하다. 심플의 미학을 선호하는 나에게 이 구문은 신선했다... 하지만 그것도 잠시. 멀티 액션을 지원하지 않는다. 아무도 이슈를 제기하지 않았다. 내가 이슈를 제기하려고 했지만 마땅한 대안이 떠오르지 않는다. 왜냐? 스벨트 만진 지 얼마나 됐고, 게다가 내가 내세울 수 있는 게 뭐가 있을까... 다.
그래도 일단 최대한 어필은 해야 하니, 컴포넌트 내 액션 멀티 사용을 이슈에 제안은 해볼 생각이다.
하지만 내 궁극적인 이슈는 바로 컴파일 확장의 부재다. 어쩌면 개인적인 문제일 수도 있겠지만, 사실 리액트와 뷰는 있는데 스벨트에게 가지지 않은 문제점이 있다면 바로 Custom directive가 없다는 것. 이걸 해결하려면 결국 컴파일러를 건드려야 하는 상황이다. 하지만 스벨트 해킹 말고는 답이 없다. 확장을 제공해주지 않기 때문이다. 사용자는 결국 스벨트 자체를 fork 하여 어렵게 해결해야 한다. 프로젝트는 급한데 보증없는 영역에 누가 끼어들려고 할까? 나는 그럴 시간이 없기에 결국 스벨트를 잠시 뒤로했다. 내게 필요한 이슈만이라도 해결할 때까지는.

## 3. 미약한 SSR

위 문제 때문에 그들이 만든 Sapper 에서 한계가 너무 여실히 드러난다.
기능이 상당히 제한적이고, 게다가 스코프도 너무 애매하다. 단도직입적으로 말하자면? next.js 어설프게 따라하다 만 느낌이다. 그나마 뷰의 nuxt.js 는 대놓고 패러디성에 next.js 갖다 배꼈다는 느낌을 지울 수는 없지만, Vue 공식 프로젝트 답게 Vue 생태계 특성을 잘 살려낸 모방이 창조의 어머니라 불릴 만하기 때문이다. 게다가 오픈소스니 누가 태클을 걸까? 오픈소스가 원래 이렇게 크는건데.
물론 클라이언트 접근은 `OnMount` 같은 이벤트를 등록하면 된다지만,
정작 
내가 Sapper 프로젝트를 시도해봤는데, SSR에 한해서는 결국 next.js로 넘어갔다.
리액트가 좋아서? 아니, next.js가 좋아서다. 짬밥은 무시할 수도 없거나와 Vercel(구 `zeit`)이 구축해놓은 프론트엔드 생태계 영향을 아무리 해도 무시할 수 없기 때문에. (그건 뷰도 인정한 바, 리액트 따라한 것도 있고, 반대 케이스도 있다.)
일단 이번달에 진행한 스벨트 웨비나에서 Sapper 를 걷어낸다고 공언한 바 있다. (1.0은 영영 못본다). 대신, 새로운 SSR 프로젝트를 개발한다고 한다. 이른바 SVELTE Kit. 통합 패키지로 갈 생각인가 보다. 물론 소스도 오픈되어 있으나, 아직 문서가 없고 지켜볼 단계이지만, 태클을 걸지 않으면 발전이 없을 것 같다는 생각이 안들래야 안들 수가 없는 것 같다. 프로젝트 환경이.

## 마치며

마칠 것도 없다. 하지만 난 스벨트가 커졌으면 좋겠다. 그들이 제시한 방향성은 나도 공감이 큰 바이며, 스벨트를 포기할 생각은 없다. 단지, 상용 프로젝트에서는 요구되는 구조 상 안맞아 당장 도입이 힘들다는게 내 생각이다.

잠시 Blazor Server 프로젝트로 갈까 했는데, 기성 닷넷 개발자들이 의외로 강력하게 반대했다. 왜냐고? 지금은 자바하고, 닷넷의 안좋은 기억만 굳어졌기 때문에.
닷넷 코어 이후 닷넷은 아예 환골탈태를 했다지만, 이미 무너져버려 근본없는 프레임워크 취급받는 한국의 찬밥 신세를 어떻게 뎁힐 것인가? 마소 코리아가 직접 나서야 할 것 같지만, 이미 나델라는 이런 건 커뮤니티가 나서야 할 일이라 공언한 사항이기 때문에, 아마 한 번 떠난 닷넷을 다시 되돌리기엔 너무 빡셀 것만 같다.

잠시 만져봤는데, 강력한 웹폼의 경량화 모델을 충실히 구현했던 게 마음에 든다. 하지만 문제는 종속성 주입이 더럽게 불편하다. 모델 자체는 스프링보다 더 혁신적이지만, 여전히 프로젝트 자체는 개발자들에게 상당히 불친절하다. 초창기 node.js 웹 서버 프로젝트 따라간 티를 벗어날 생각이 없었던 걸까... 마소는 그거 개선할 생각 없다고 하니 나 참... 할 말이 없다. Autofac 쓰던가 해야 하는 상황...

끗.
HTML5 details element: equally great and disappointing 
Tags: html, webdev
Published: 2020-11-16 01:15:05

I love making websites that work without JS. That's why I also love all web standards that make it easier.

HTML5 `<details>` element promises to make collapsible blocks and tree views first class entities in web pages. All in all it feels like a great success—with a few frustrating shortcomings when it comes to styling.

## Compatibility and graceful degradation

It works in every browser released in [2017 and later](https://caniuse.com/details).

Since web browsers simply ignore unknown elements, it also degrades gracefully: the content of `<details`> is just shown by default.

## Styling

One issue is that people who aren't well-familiar with this element often don't realize that the element is clickable and that the triangle is a part of the "button".

It's not surprising, since that element breaks the desktop  convention. You can alleviate it with a bit of CSS though.

```css
summary { cursor: pointer; }
```
However, I'm still surprised why it's not the default.


### Styling the button itself

What's more surprising is that there's no easy, or even standard way to style the "expand" button itself.

This feels especially weird. If HTML form elements can be styled in arbitrary ways, why should `<summary>` be an exception?

In any case, the standard doesn't define that, and different browsers do it differently.

In Firefox, you can easily style the button with `list-style-type` or `list-style-image` properties. Sadly, this _only_ works in Firefox.

In Chrome and Edge you can only disable that button with this pseudo-element rule:

```css
summary::-webkit-details-marker { display: none; }
```

Then you can insert a symbol or an image with a `::before` selector.

So, the only somewhat cross-browser way is to disable its display with `list-style-type: none` (for Firefox) and with above rule for Chrome, then insert your own "button" one way or another.

Still even that won't work in Opera and Safari.


## Accessibility

That's the frequently overlooked part! There are some impressive hacks that emulate collapsible elements with heavily-styled radio buttons and CSS, but it's a nightmare for screen reader users because the semantics of it all are opaque.

With `<details>` and `<summary>`, user agents know what it is and can present it in an appropriate way in each medium.
My Final Thoughts on General Assembly
Published: 2020-11-16 00:44:23

Coming to the end of my time at General Assembly is a crazy feeling. I must admit that I haven't been the best student during my time here - I'm still not sure if I'll pass or not - but I'm glad I've done this.

I came in to this course looking to flesh out my understanding of Python and learn a little about Data Science on the way. I've come out inundated with knowledge of Data Science and a Python toolset geared around that knowledge. I've dipped my toes into neural nets, Flask, HTML, SQL and more. 

I've pushed myself further than I expected to, and my mental health has taken a toll (Math is not my forte). I look forward to having a few days off after this class.

It's been a long and difficult 12 weeks but we're almost on the other side of it. I'm about to write up another post about my capstone project- Using a neural net to make Cocktail recipes! Stay tuned :)
CSS Unit: em
Tags: css, beginners, todayilearned, codenewbie
Published: 2020-11-16 00:35:00

Hello Fellow Codenewbies 👋,

If you've read my previous [post](https://dev.to/adiatiayu/css-units-m76), you've also learned that `em` can cause problems since it creates *cascading effect*.
That's why we preferably avoid using it for `font-size`.

So when or where can we use `em`?

---

## An Example

Let's create:
- An `h1` and a `p` tag inside a `container`.
- Set the `font-size` of the `h1` to `3rem`
- Give `margin-bottom` of `1em` to the `h1`.

We will not set anything to the `p` tag because we only want to focus on the `margin-bottom` where we apply the `em` unit. 

{% codepen https://codepen.io/adiati/pen/qBNJZPo %}

Click on the CSS button on Codepen to see the code.

## Let's tweak it

Now change the `font-size` to `5rem`.

```css
h1 {
  font-size: 5rem;
  margin-bottom: 1em;
}
```

{% codepen https://codepen.io/adiati/pen/GRxapLp %}

When you see the rendered page, do you notice that the size of `margin-bottom` is the same as the size of  `h1`'s `font-size`?

But we've set the `margin-bottom` to `1em`. So the size should be 16px since we don't declare `font-size` anywhere except the `h1`, right?

## 💡 The Answer

Beside inheriting size from its parents, another thing to know about `em` is that it is ***relative to the `font-size` of its element***. 
Say we set a `font-size` for an element. And then set the value of `margin` or `padding` for the same element in `em`. This `margin` or  `padding` will be relative to the `font-size` *of the element*.

## Summary

When we do responsiveness, the use of `em` in `margin` or `padding` would be convenient. 
That's because we don't need to change the size of the `margin` or `padding` whenever we change the `font-size`.

---

Thank you for reading!
Last, you can find me on [Twitter](https://twitter.com/@AdiatiAyu). Let's connect! 😊
How do you deal with burnout?
Tags: discuss, watercooler
Published: 2020-11-16 00:29:09

Thanks to DEV, I have found a lot of great articles about new features, tools, and libraries, as well as questions about life aspects of a developer, which helps me to become a sharper dev and better professional every day.

Today, I want to publish my first article after I began my career almost five years ago with a situation that may have happened to many of you (even before this time of pandemic).
This year I started learning new things to improve my toolbox as front-end. But in recent months, I didn't have time to apply them because I have had other things to do in my free time (chores, work overtime), and like someone who often challenges himself, I started to feel sad and overwhelmed.

Nowadays, I have found a way to reach a balance with my demands. First, I list all my goals, dividing them into small tasks, and doing one or two a day, so I can focus on what I want and have a balance with my life.

Do you experience this feeling often?
If you do, what do you do to achieve that balance?
How to get the index or position of a specific element in an array in JavaScript?
Tags: javascript
Published: 2020-11-16 00:00:00

---
  title: How to get the index or position of a specific element in an array in JavaScript?
  published: true
  tags: JavaScript
  date: Mon Nov 16 2020 05:30:00 GMT+0530 (India Standard Time)
  canonical_url: https://melvingeorge.me/blog/get-index-of-an-element-in-array-javascript
  cover_image: https://melvingeorge.me/_next/static/images/main-56f91cbc4df6b38f9729f20e17c38cac.jpg
  ---
  [Originally posted here!](https://melvingeorge.me/blog/get-index-of-an-element-in-array-javascript)
  
To get the index or position of a specific element in an array, you can use the `indexOf()` array method in JavaScript.

Consider this array of numbers,

```js
// numbers array
const numsArr = [23, 456, 65, 34];
```

Let's get the index or position of number `65` in the array.
It can be done using the `indexOf()` method and passing `65` as an argument to the method like this,

```js
// numbers array
const numsArr = [23, 456, 65, 34];

// get the position or index
// of 65 in the array
// by passing 65 as an
// argument to the method
const index = numsArr.indexOf(65);

console.log(index); // 2
```

- The method returns the index number of the element if it is found and returns `-1` if it is not found.

See this example live in [JSBin](https://jsbin.com/kowimahojo/2/edit?js,console).

You can also tell the method of the position you want to start searching in the array by passing the index as the second argument to the method.

Suppose I want to start searching in the array from index `1`. I can define it like this,

```js
// numbers array
const numsArr = [23, 456, 65, 34];

// get the position or index
// of 65 in the array
// by passing 65 as an
// argument to the method
// but start searching from index 1
const index = numsArr.indexOf(65, 1);

console.log(index); // 2
```

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

---
A wrong question: Is a Square a Rectangle?
Published: 2020-11-19 01:05:51

---
title: A wrong question: Is a Square a Rectangle?
published: true
date: 2020-11-16 00:00:00 UTC
tags: 
canonical_url: https://dannypsnl.github.io/blog/2020/11/16/cs/is-an-oop-square-ra-rectangle/
---

Overview

1. what is Subtyping?
2. what is Liskov Substitution Principle?
3. what's the problem?
4. how to solve this mistake of type system

### What is Subtyping?

A common misunderstanding is OOP must have **subtyping** and **generic** at the same time, but they are independent features, **generic** is just a type-level function with takes a type, generates a type. **Subtyping** is a relationship between type, when we say `A <: B`, which means `A` is a subtype of `B`. In Java, we use concrete syntax `extends` or `implements`.

### What is Liskov Substitution Principle(LSP)?

**LSP** said

> if S is a subtype of T, then objects of type T in a program may be replaced with objects of type S without altering the program

### What's the problem

Square is a special Rectangle where all four sides are equal in length. Thus we might write down:

```java
public class Rectangle {
    double x, y;
    Rectangle(double initX, double initY) { x = initX; y = initY; }

    public void setX(double x) { this.x = x; }
    public void setY(double y) { this.y = y; }
}

class Square extends Rectangle {
    Square(double initX, double initY) throws SquareException {
        super(initX, initY);
        if (initX != initY) {
            throw new SquareException(initX, initY);
        }
    }
}
```

Ok, so we can have following program:

```java
Square s = new Square(2, 2);
Rectangle r = s;
r.setX(10);
```

Oops, `s` is not a square anymore, this correctly follows **LSP** but incorrect generally.

### Solution

Here is a solution: refinement type. By using refinement type, we can claim `type Square = Rectangle when (x = y)`. Then problem solved, when programming if we can't proof `x = y` this predicate then compiler won't think that is a `Square` but a `Rectangle`. Since `Square` is a `Rectangle`, method in `Rectangle` still can be using by `Square`, thus we didn't lose our power. However, program like `s.setX(v)`, would need to prove `v = y`, to prove it is a `Square`. Here we have two choices:

1. change `s` type to `Rectangle`, the problem of this solution is if we write `r = s; r.setX(v)`, compiler might not work for this(this is also why I'm designing [controllable-refinement](https://github.com/dannypsnl/controllable-refinement)), mutable semantic always needs more effort.
2. throw compile error that `Square` constraint was broke by the statement.

Choose one and work with it, that's all, have a nice day.
The Tools For Programming Languages
Tags: misc
Published: 2020-11-16 08:08:43

---
title: The Tools For Programming Languages
published: true
date: 2020-11-15 23:51:00 UTC
tags: Misc
canonical_url: http://coderscat.com/tools-for-programming-languages/
---

I'm always interested in all kinds of programming languages. 

There are common kinds of tools used by different programming languages, they are mostly in several common categories: version managers, packagers managers, testing framework, web framework, etc.

We will always need to use them when begin to work this a programming language. So keep in mind, try to find out these similar things when you starting learning a new programming language. You will [master any programming language](https://coderscat.com/learn-programming-languages/) in this way.

![The Hardest Programming Languages](http://coderscat.com/images/hardest-programming-language.png)



----------------

Let's summarize it as a check-sheet:

| Programming Language Name | Version Manager | Package Manager |
| :-----------------------: | :-------------: | :-------------: |
| JavaScript                | [nvm](https://github.com/nvm-sh/nvm) | [npm](https://www.npmjs.com/get-npm) |
| Java                  | [jenv](https://github.com/jenv/jenv) | [maven](https://maven.apache.org/), [gradle](https://gradle.org/) |
| C++ | [update-alternatives](https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-20-04-lts-focal-fossa) | [C++: vcpkg](https://docs.microsoft.com/en-us/cpp/build/vcpkg?view=msvc-160) |
| C#                   | [VisualStudio or manully config it](https://docs.microsoft.com/en-us/dotnet/core/versions/selection) | [NuGet](https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio) |
|  Python                 | [pyenv](https://github.com/pyenv/pyenv) | [pip](https://pypi.org/project/pip/) |
| Golang|  [gvm](https://github.com/moovweb/gvm) |   [Go Modules](https://github.com/golang/go/wiki/Modules)|
| Ruby | [rvm](https://rvm.io/) | [gem](https://github.com/rubygems/rubygems) |
| PHP | [phpenv](https://github.com/phpenv/phpenv) | [Composer](https://getcomposer.org/) |
| Rust | [rustup](https://github.com/rust-lang/rustup) | [cargo](https://doc.rust-lang.org/cargo/) |
| OCaml | [opam](https://opam.ocaml.org/) | [opam](https://opam.ocaml.org/) |
| Lua | [luaver](https://github.com/DhavalKapil/luaver) | [luarocks](https://luarocks.org/) |

There is another CLI tool named [asdf](https://github.com/asdf-vm/asdf), you can use it to manage multiple runtime versions.
Actualizar Visual Studio para usar .NET 5
Tags: csharp, fsharp, dotnet, beginners
Published: 2020-11-15 23:45:40

El pasado 10 de noviembre, Microsoft ha lanzado la nueva versión .NET 5, para ello organizó un [evento online.](https://www.youtube.com/playlist?list=PLdo4fOcmZ0oVWop1HEOml2OdqbDs6IlcI) En la que se presentaron las novedades como C#9, F#5, Blazor en .Net 5, etc.

Para poder usar esas últimas características hay que actualizar Visual Studio a la versión 16.9.0, para ello arrancamos Visual Studio Installer y comprobaremos como está esa nueva actualización disponible.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/87t9gmj0lfi2zicgab9i.JPG)

También tenemos que tener instalado el [SDK versión 5](https://dotnet.microsoft.com/download/dotnet/5.0) tanto el SDK para poder construir aplicaciones como el Runtime para poder ejecutarlas. Marcadas en amarillo están las opciones para windows de 64 bits.

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

En el [blog de Microsoft](https://devblogs.microsoft.com/dotnet/announcing-net-5-0/) podemos ver todas las novedades que trae esta nueva versión.

Ahora para comprobar si está todo instalado vamos a crear un proyecto de consola
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/b9mp34qiehvtrwysau1p.JPG)

Y aunque por defecto el proyecto se crea como .net core 3.1, si vamos a las propiedades del proyecto vemos como podemos elegir la versión 5.0
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/dq8axnizgf28bcbl4n1f.JPG)

Vamos a aprovechar el proyecto de consola que hemos creado para probar una nueva característica de C#9 y comprobar que podemos ejecutarla.  Vamos a crear una clase con la nueva forma de instanciarla, la ejecutamos y vemos como funciona perfectamente.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/6lbrv42v22rtxh2fwnnw.JPG)

Espero que esta pequeña guía les ayude para empezar a probar todo lo nuevo que trae esta versión .NET 5.
Working in Singapore
Tags: discuss, career, watercooler, singapore
Published: 2020-11-15 23:30:49

https://theindependent.sg/new-tech-pass-will-create-a-flywheel-effect-chan-chun-sing/

Recently, the Singapore Government has plans to for a new work visa, tech.pass.

Personally, as a Singaporean, I do have some opinions on this. 

Was hoping to hear what others in the community is going to view this. Also, if you are in a developed country in a stable job, will you be willing to take this offer up to work in Singapore? 

Happy to see your views and opinions in the comments below.