teleren/devto huggingface dataset:
Welcome to the club: Solana, Terra, Arbitrum joined GetBlock’s ecosystem
Tags: blockchain, solana, cryptocurrency, web3
Published: 2022-05-12 09:01:55

Team of [GetBlock](https://getblock.io/), a top-tier blockchain nodes provider, is thrilled to celebrate the most impressive addition to its offerings stack in recent months. Over Q1, 2022, a number of mainstream smart contracts platforms was added to its toolkit including the likes of Solana, Terra, and Arbitrum.

Solana (SOL) and Terra (LUNA) are two largest smart contract environments outside of the Ethereum (ETH) scene. Arbitrum is a low-cost Ethereum-based L2 scalability solution based on Optimistic Rollups.

For all three newcomers, our team rolled out shared and dedicated nodes; the blockchains can be accessed through JSON RPC, REST API and WebSockets methods. All APIs for Solana, Terra, and Arbitrum are now available with 98-99 percent uptime.

By adding these solutions, GetBlock accomplishes a crucial milestone on its way to building a multi-network, decentralized future of Web3. Having integrated different blockchains into one stack, it is able to offer its new and existing clients Web3 solutions with unmatched levels of flexibility and interoperability. 
GetBlock offers one-stop solution for all top-tier DeFi platforms

Invented by Anatoly Yakovenko in 2017, Solana (SOL), with its unique Proof-of-History (PoH) consensus promotes itself as a most eccentric and powerful Ethereum (ETH) killer. Its peak bandwidth eclipses 70,000 TPS, as per the team’s estimations.

Terra (LUNA) gained huge popularity in 2021;  its aggregated TVL jumped by 1,000 per cent while LUNA price rocketed 100x. Largely, this popularity should be attributed to the amazing APY offered by its flagship DeFi Anchor Protocol (ANC) on TerraUSD (UST) staking.

Arbitrum is a second-layer solution for Ethereum (ETH) scalability. It reduces the transactional pressure on Ethereum (ETH) mainnet by sending ‘compressed’ information through Optimistic Rollups mechanism. Its activation gave Ethereum (ETH) throughput a 300x boost whilst transactional fees in Arbitrum remain among the lowest in the industry.

GetBlock offers reliable and resource-efficient connection to shared and dedicated nodes of 40+ blockchains. Also, GetBlock creates node clusters and customized explorers for decentralized systems of all types.
TERMINAL KOMANDALAR / PART 3
Published: 2022-05-12 08:41:59

**`## alias nickname= ''`**



> bu komandalar takroriy ishlatiladigan komandalar uchun yangi nickname ( taxallus) beradi.
   

**`## g ++ main.cpp - o dastur && ./ dastur.`**


> main.cpp nomli faylni compilatsiya qiladi va birdaniga ishga tushiradi.

**`## nano`**

> faylni terminalda ochadi.

**`##  ./..a.out`**


> birdaniga bitta oldingi papkaga kirib, uning ichidagi ma'lumotlarni chiqaradi.


**`## include
`**
> kerakli kutubxonani chaqiradi.
Masalan " iostream " (input / output)

**`## terminal = council std`**

> standart namespace

**`## cout`**

> std: cout, std namecpace.ni boshqalaridan ajratib turish uchun.

**`## int main
`**
> dasturga kirish uchun funksiya (usiz dastur ishlamaydi).

**`## return 0`**

> dastur muvaffaqqiyatli bajarilganligini aniqlash maqsadida ishlatiladi.

**`## &&`**

> kolandalarni bir vaqtda birin-ketin bajarilishinni ta'minlaydi.

**`## // (ctrl+ /)`**

> // c++ dasturida izoh qoldirishda foydalaniladi.

**`## \n`**

> new line = endl. Sonlar bilan ishlamaydi.

> \ backslash -- escape characters.
Common Ninja Platform News: Payments | New E-Commerce APIs
Tags: ecommerce, develop, javascript, webdev
Published: 2022-05-12 08:41:01

We are very excited to share with you recent news and updates related to our developer platform. We are planning on posting these updates once a month, so stay tuned!

Just to remind you, the [Common Ninja Developer Platform](https://www.commoninja.com/developers) allows you to **build & monetize** apps for e-commerce platforms very easily. With our single e-commerce API you can build your app once, and integrate it with multiple platforms like **Shopify**, **BigCommerce**, **Wix**, **WooCommerce**, and more. There's no need to rebuild the app and make it work on every platform individually.

---

🎉 What’s New:

- Payments
- API updates
  - Products
  - Orders
  - Customers

---

![Payments in Common Ninja](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n91b72c7jd6yci5h3ygs.png)

## Payments

We are proud to present the brand new **payments capabilities** — that includes a simple interface that allows you to create payment plans for your app, connect them to popular payment providers like Stripe, PayPal, and Shopify app payment APIs, and dynamically create checkout URLs for your app’s users 🚀

Learn more about how it works in the [docs](https://docs.commoninja.com/).

---

## API Updates

We’ve added 3 new e-commerce APIs:

- **Products** - a new set of API endpoints for managing the store’s products resource.
- **Orders** - with the new orders API you can create, update, and see store’s orders.
- **Customers** - a simple API to consume a list of store’s customers.

You may learn more about all of the supported APIs [here](https://docs.commoninja.com/apis/e-commerce).

---

More exciting updates will be released soon so stay tuned!
The Expenses App
Tags: appwritehack
Published: 2022-05-12 08:34:06

### Overview of My Submission
I have built a mobile app to record expenses using Appwrite and Flutter. Appwrite's features used include Database, Auth & Users, Storage and Realtime.  
Since this is my first time using Appwrite and it's been years since I last built an app with Flutter, the [tutorial](https://blog.logrocket.com/appwrite-flutter-tutorial-with-examples/) on LogRocket has been very helpful in getting me started.   

### Submission Category: 

Mobile Moguls


### Link to Code

{% embed https://github.com/kit-t/appwrite-devhackathon2022 %}


### Additional Resources / Info

#### References
- [Using Appwrite with Flutter: A tutorial with examples](https://blog.logrocket.com/appwrite-flutter-tutorial-with-examples/)
OPERATORS #C++
Published: 2022-05-12 08:13:39

> **Binary**

-operator deb 2 ta obyektni qabul qiluvchi operatorga aytiladi?

  -Masalan :

>  + 
operatory 2 ta obyekt ustida ishlatiladi.

> **Unary**

- operator deb 1 ta obyekt qabul qiluvchi operatorga aytiladi.
 
  -Masalan : 

> !
  operatori 1 ta obyekt ustida ishlatiladi ! true.

> **Moduls**

-_A % B_ is calculate the remainder of _A/B.
_
Arifmetik operatorlar
-/ amalini bajarayotganda, ma'lumotni turi muhim bo'lib ,kasr son kasr songa, butun son butun songa bo'linayotganini bilish kerak, yo'qsa misolni javobida o'zgarish bo'ladi.
 - _moduls faqat butun sonlar ustida amallarni bajaradi. 
 - amallar matematika bilan bir xil ketma-ketlikda bajariladi
_
Enjoy Programming-Themed Humor? Here's today's daily developer joke!
Tags: jokes, dailydeveloperjokes
Published: 2022-05-12 08:00:27

---
title: "Enjoy Programming-Themed Humor? Here's today's daily developer joke!"
description: "Check out today's daily developer joke! (a project by Fred Adams at xtrp.io)"
series: "Daily Developer Jokes"
published: true
tags: #jokes, #dailydeveloperjokes
---

Hi there! Here's today's Daily Developer Joke. We hope you enjoy it; it's a good one.

![Joke Image](https://private.xtrp.io/projects/DailyDeveloperJokes/public_image_server/images/5e12594a73e61.png)

---

For more jokes, and to submit your own joke to get featured, check out the [Daily Developer Jokes Website](https://dailydeveloperjokes.github.io/). We're also open sourced, so feel free to view [our GitHub Profile](https://github.com/dailydeveloperjokes).

### Leave this post a ❤️ if you liked today's joke, and stay tuned for tomorrow's joke too!

_This joke comes from [Dad-Jokes GitHub Repo by Wes Bos](https://github.com/wesbos/dad-jokes) (thank you!), whose owner has given me permission to use this joke with credit._

<!--
Joke text:
___Q:___ Why did the document store go out of business?

___A:___ It had NoSQL.
 -->
What is Dockerizing
Published: 2022-05-12 07:58:57

Dockerizing(도커라이징)은 Docker 컨테이너를 사용하여 애플리케이션을 패키징, 배포 및 실행 하는 과정입니다.

여기서 Docker란 애플리케이션에 필요한 모든 기능을 하나의 패키지로 제공하는 오픈 소스 도구입니다.

도커 컨테이너에서 내가 만든 애플리케이션이 실행되도록 하려면 어떻게 해야 할까요? 바로 Docker Image를 만들면 됩니다!

Docker Image를 만들기 위해 우선 Dockerfile을 작성해야합니다.
```
$ touch Dockerfile
```
생성된 Dockerfile에 가장 먼저 어떤 Node 버전을 사용할지 작성하여야 합니다. 이 글에서는 16.15.0 버전을 사용할 예정입니다. ([Docker Hub node image](https://hub.docker.com/_/node)) ([Docker Image Variants](https://dev.to/hyeonjun/docker-node-image-variants-46e6))
```
#FROM node:<version>
FROM node:16.15.0
```
이미지 안에 애플리케이션 코드를 넣기 위한 폴더 생성 및 Working Directory 설정
```
# dir 생성 및 working dir 설정
RUN mkdir -p /app
WORKDIR /app
```
생성한 app directory에 source code copy (!주의 Dockerfile의 path를 확인해주세요.)
```
COPY ./ /app
```
app directory에 dependecy install 및 source code build
```
RUN yarn install
RUN yarn run tsc
```
Docker demon에 바인딩할 포트 선택 및 서버 실행 CMD 입력 (!주의 CMD는 package.json에 실행 script에 따라 달라질 수 있습니다.)
```
# Docker demon에 바인딩할 포트 선택
EXPOSE 3000

# 서버 실행
CMD ["yarn", "start"]
```
node_modules, yarn-error.log 모듈 및 파일은 복사되지 않도록 .dockerignore 파일 생성(Dockerfile과 같은 경로에 생성!)

Docker Image 빌드
```
docker build -t <username>/<원하는 docker image명><:tag명> .
```
위 명령어를 사용해 빌드된 이미지들 리스트를 아래 명령어로 확인 가능!
```
docker image ls
```

Docker Image 실행하기
```
docker run -p 3000:3000 -d <username>/<docker image명>
```
위 명령어를 통해 build한 Docker Image를 실행할 수 있고 [Docker Desktop](https://www.docker.com/products/docker-desktop/)을 통해 logging 및 관리를 할 수 있다! (CMD로도 가능하다.)
Quick Sort
Tags: javascript, programming, algorithms
Published: 2022-05-12 07:52:57

What do we understand about Quick Sort?
 - Usually implemented recursively
 - Mutates the original Array
 - Similar mental model to reversing a Binary Tree
 - Similar to Merge Sort
 - It is a Divide & Conquer algorithm
 - It comprises of 2 functions
    - Main function recursively splits the Array into left and right halves
    - Left and right half is determined via Array index
 - 2nd helper function does the swap and returns the new pivot index
    - by convention, last value is the pivot value to be compared with
    - if current loop index's value is less than pivot value
    - increment
    - smaller to the left of the pivot
    - bigger to the right of the pivot
    - lastly, return the pivot point
 - Best video explanation I found online:
    - [NeetCode - LEETCODE 912 (JAVASCRIPT) | SORT AN ARRAY (QUICK SORT)](https://www.youtube.com/watch?v=GfM5z7_WGQE&ab_channel=AndyGala)
 - Time Complexity:
    - Best   : O(nlogn)
    - Average: O(nlogn)
    - Worst  : O(n^2)
 - Space Complexity:
    - O(logn)

```js
// 27, 18, 6, 21, 26, 24
// |
// i
// |
// pivotIndex
//                    |
//                    pivotValue

function getPivotPoint(arr, start, end) {
    // by convention we always pick the last element as pivot
    let pivotValue = arr[end];
    // pivot index should at the end hold the larger value compared to pivot
    let pivotIndex = start;

    for (let i = start; i < end; i++) {
        // as loing as values on the left of the pivot is smaller in value,
        // we swap the index with the latest updated pivot index
        if (arr[i] < pivotValue) {
            if (i !== pivotIndex) {
                [arr[i], arr[pivotIndex]] = [arr[pivotIndex], arr[i]];
            }
            pivotIndex++;
        }
    }

    // swap the latest updated pivot index with the pivot value itself
    // everything on the right is now larger value than the pivot value
    [arr[end], arr[pivotIndex]] = [arr[pivotIndex], arr[end]];

    // return new pivot point
    return pivotIndex;
}
function QuickSort(arr, start = 0, end = arr.length - 1) {
    // base case
    if (end > start) {
        const pivot = getPivotPoint(arr, start, end);
        QuickSort(arr, start, pivot - 1);   // do the pivot swap on the left
        QuickSort(arr, pivot + 1, end);     // do the pivot swap on the right
    }
    return arr;
}
```
Are you struggling to sign into Heroku? Here's why.
Published: 2022-05-12 07:51:51

Recently Heroku stopped the integration with GitHub due to a vulnerability. See my article on this below:
{% link https://dev.to/lukeecart/herokus-github-integration-has-been-stopped-a7c %}

So why can you not login to Heroku now?

Other than the obvious question of, are you sure you are using the correct password? Are you sure? Okay, I believe you because Heroku wants ALL users to reset their passwords.

## So what do you need to do?
Click on the forgotten password link on the login page and reset it. This will tighten security for all heroku accounts. Also I believe they are rolling out Multi factor authentication for all accounts too.

This is great for security and reduces the likelihood of the security incident to happen again.

Thank you for listening. If this has helped you, please like this post or comment below.
New Things Added - Laravel 9.12 Released
Tags: php, laravel, weeklyretro, programming
Published: 2022-05-12 07:51:46

Let's get started quickly I found new things in Laravel 9.12 Released I wanted to share with you.

- Throw If HTTP Client Method
https://github.com/laravel/framework/pull/42260

method to the HTTP client that will throw an exception if the condition evaluates to true
```php
// Throws RequestException
return Http::baseUrl('https://foo.bar')
       ->throwIf(true)
       ->get('not-found');
 
// Doesn't throw
return Http::baseUrl('https://foo.bar')
       ->throwIf(false)
       ->get('not-found');
```

- Delaying Notifications Per Channel
https://github.com/laravel/framework/pull/42239

You can pass an array to the delay method to specify the delay amount for specific channels
```php
$user->notify((new InvoicePaid($invoice))->delay([
    'mail' => now()->addMinutes(5),
    'sms' => now()->addMinutes(10),
]));
```
You can also define a withDelay method on the notification class
```php
/**
 * Determine the notification's delivery delay.
 *
 * @param  mixed  $notifiable
 * @return array
 */
public function withDelay($notifiable)
{
    return [
        'mail' => now()->addMinutes(5),
        'sms' => now()->addMinutes(10),
    ];
}
```

- Add whereNotMorphedTo, orWhereNotMorphedTo
https://github.com/laravel/framework/pull/42264


I hope you enjoyed with me and to learn more about this release visit the sources and search more. I adore you who search for everything new.
Source :- https://laravel-news.com/laravel-9-12-0
Source :- https://www.youtube.com/watch?v=NyI9GNI8MlI
React, Vue and Svelte: Comparing Multi Select Binding
Tags: javascript, react, vue, svelte
Published: 2022-05-12 07:35:02


## Multi Select Binding in...
Woo ! This is it. The end of this series. We've seen a lot of concepts to compare between these frameworks. Hope it helped people!

Check it out 🚀

### React
[Live Example](https://stackblitz.com/edit/vitejs-vite-yv2j69?file=src/App.tsx)

```jsx
const [multiSelected, setMultiSelected] = useState<string[]>([
    'Frontend Developer',
]);
const handleMultiSelected = (options: any) => {
let selectedOptions = [...options]
    .map((option) => option.value)
    .reduce((prev, current) => [prev, ', ', current]);

setMultiSelected(selectedOptions);
};

<section>
    <h2>Multi Select</h2>
    <select multiple style={{ width: '100px' }} onChange={(e)=> handleMultiSelected(e.target.selectedOptions)}
        >
        <option>Frontend Developer</option>
        <option>Backend Developer</option>
        <option>Fullstack Developer</option>
    </select>
    <p>Selected: {multiSelected}</p>
</section>

```

### Vue
[Live Example](https://stackblitz.com/edit/vitejs-vite-govvdw?file=src/App.vue)

```jsx
const multiSelected = ref(['Frontend']);

<section>
    <h2>Multi Select</h2>
    <select v-model="multiSelected" multiple style="width: 100px">
        <option>Frontend Developer</option>
        <option>Backend Developer</option>
        <option>Fullstack Developer</option>
    </select>
    <p>Selected: {{ multiSelected }}</p>
</section>

```

### Svelte
[Live Example](https://stackblitz.com/edit/vitejs-vite-lwojq6?file=src/App.svelte)

```jsx
let multiSelected: string[] = ['Frontend Developer'];

<section>
    <h2>Multi Select</h2>
    <select bind:value={multiSelected} multiple style="width: 100px">
        <option>Frontend Developer</option>
        <option>Backend Developer</option>
        <option>Fullstack Developer</option>
    </select>
    <p>Selected: {multiSelected}</p>
</section>

```
Watch Pinia store getters or state in Nuxt3/Vue3 inside setup method
Tags: nuxt, pinia, vue, tips
Published: 2022-05-12 07:15:05

```Vue
<script lang="ts" setup>
import { storeToRefs } from 'pinia'
import { useSomeStore } from '~~/store/some'

const some = useSomeStore()

// This will also create refs for properties added by plugins
// but skip any action or non reactive (non ref/reactive) property
const { someGetter, someStateVar } = storeToRefs(some)

watch(someGetter, () => {
  console.log('some changed', someGetter)
})

watch(someStateVar, () => {
  console.log('some state var changed', someStateVar)
})
</script>
```

Read more about using pinia store at https://pinia.vuejs.org/core-concepts/#using-the-store
How to contact Amazon kindle support
Published: 2022-05-12 07:11:32

The most popular online book reading gadget, the Kindle, is portable and wireless. It is produced by Amazon, a well-known American company. The original Kindle was introduced in 2007. The Amazon Kindle has become the world's most known and celebrated e-reading platform since its release.

The following are some frequent Kindle issues and solutions:

Connection problems with Wi-Fi
The battery is quickly draining.
Update problems on the Kindle
The freezing of the Kindle device
Update on the Kindle Fire
Firmware update for the Kindle

Read more at:[](https://crawlinfo.com/services/how-to-reach-kindle-support-number/
)
Android 開發 RecognizerIntent 的陷阱
Tags: android
Published: 2022-05-12 06:46:37

Android App 中要進行語音辨識, 也就是 speech to text 的功能, 必須仰賴 [SpeechRecognizer](https://developer.android.com/reference/android/speech/SpeechRecognizer) 類別, 並搭配 [RecognizerIntent](https://developer.android.com/reference/android/speech/RecognizerIntent) 指定相關的設定, 其中有一項設定是 [EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS](https://developer.android.com/reference/android/speech/RecognizerIntent#EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS), 根據文件的說明, 它的作用是在辨識出文字後, 要等多少靜默的時間才當成是辨識結束, 不過這個設定原本似乎一直無效, 至少在我測試的以下手機中如此：

|手機型號|系統版本|語音相關 App 版本|
|------|--------|----|
|OPPO A31|Android 9|Google 10.84.19.21.arm64|
|OPPO A31|Android 9|Google 13.4.19.23.arm64|
|Real me C3|Android 10|Google 10.84.19.21.arm64|
|小米 A1|Android 9|Google 10.84.19.21.arm64|
|Pixel 4a|Android 12|Speech Services by Google<br/>googletts.google-speech-apk_20210729.00_p0.387528199.tnt|

事實上, 在 Android 官方的[文件](https://developer.android.com/reference/android/speech/RecognizerIntent#EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS)中, 有以下這樣的說明：

> Depending on the recognizer implementation, these values may have no effect.

所以沒有效用也算是正常的。但是如果把上述語音相關 App 更新到新的版本, 變成以下這樣 (實際變化的版本我不確定)：

|手機型號|系統版本|語音相關 App 版本|
|------|--------|----|
|OPPO A31|Android 9|Google 13.17.13.23.arm64|
|Real me C3|Android 10|Google 13.17.13.23.arm64|
|小米 A1|Android 9|Google 13.17.13.23.arm64|
|Pixel 4a|Android 12|Speech Services by Google<br/>版本 googletts.google-speech-apk_20220404.02_p1.440604258|

剛剛提到的 `EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS` 它就生效了, 如果有設定這個選項, 而且時間設定比較長, 就可能會導致一直無法持續靜默足夠的時間, 導致語音辨識時只會引發 `onPartialResults`, 不會引發 `onResults`, 無法正確取得辨識結果了。
JavaScript Technical Interview Questions 1
Tags: javascript, beginners, wecoded, codenewbie
Published: 2022-05-12 06:31:01

Q. Inside the HTML document, where do you place your JavaScript code?

`Inside the <head> element`
`In the <footer> element`
`Inside the <script> element`
`Inside the <link> element`

Answer - `Inside the <script> element`

Q. What operator is used to assign a value to a declared variable?

`Colon (:)`
`Equal sign (=)`
`Question mark (?)`
`Double-equal (==)`

Answer - `Equal sign (=)`

Q. What are the six primitive data types in JavaScript?

- string, number, boolean, bigInt, symbol, undefined
- sentence, float, data, bigInt, symbol, undefined
- string, num, falsy, bigInt, symbol, undefined
- sentence, int, truthy, bigInt, symbol, undefined

Answer - `string, number, boolean, bigInt, symbol, undefined

Q. What is the difference between && and ||?

```
The logical operator && returns true if none of the expressions are true while the logical operator || returns true if one expression or the other returns true.
```

```
The logical operator && returns true if both expressions are true while the logical operator || returns true if one expression or the other returns true.
```

```
The logical operator && returns true if one expression is true while the logical operator || returns true if both expressions return true.
```

```
The logical operator && returns true if both expressions are true while the logical operator || returns false if one expression or the other returns true.
```
Answer - 
```
The logical operator && returns true if both expressions are true while the logical operator || returns true if one expression or the other returns true.
```

Q. How do we declare a conditional statement in JavaScript?

`for loop`
`while loop`
`if...else`
`difference...between`

Answer -
`if...else`

Q. From the given array which index is the letter 'b' on? ['a', 'b', 'c', 'd']

0
3
2
1

Answer - 1

Q. How do we stop a loop from from repeating indefinitely?

- We have to explicitly end the loop with the break keyword.
- A loop will stop executing when the condition is true.
- A loop will stop executing when the condition is false.
- When we have iterated through half of the condition.

Answer - `A loop will stop executing when the condition is false.`
What I am ???
Tags: existensialcrisis, newbie, developer, help
Published: 2022-05-12 06:24:07

Hello everyone,
I'm glad to joint this amazing community.
I am a web designer, graphic designer, front end developer (html,css,js) for past 5 years or so but to be honest I'm feeling like a noob here. (image for context 😅).
I seriously don't know where I stand in this field after this long time. If I consider myself a designer then besides photoshop, illustrator, css I know nothing. As for considering myself a developer I only have a knowledge of html css , bit of js (so that makes me a ultranoob).
When I look at other designers or devs I feel so overwhelmed like whoa they know so much and I'm nowhere near them. Sometimes its so depressing for me. I seriously don't know what should I do.
Have any of guys been through same ! kindly let me know. Any advice / help will be appreciated 🙂
Thanks and looking forward to this journey on dev 👍🏻
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lsz7nq6mpdc3x1lt8cq2.jpg)
Quick tip: stub requests to unix sockets
Tags: ruby, testing, rspec
Published: 2022-05-12 06:05:26

Sometimes, an application communicates with an external service not via Internet sockets, but via unix sockets:

```ruby
Excon.get("unix:///ping", socket: "/tmp/unicorn.sock")
```

To stub requests like this in tests, use Webmock:
```ruby
stub_request(:get, "http://unix/ping").to_return(status: 200)
```
TypeScript ValidityState
Tags: help, typescript, beginners
Published: 2022-05-12 06:17:59

```
const input: HTMLElement = e.target
const validity: ValidityState = input.validity
setValidity(validity.valid)
```

I'm just getting into typescript and having a problem with the ValidityState API: the second line gets a red squiggly underline with `Unsafe assignment of an 'any' value`.

What's the proper course of action here?