Astro is a fresh but familiar approach to building websites. Astro combines decades of proven performance best practices with the DX improvements of the component-oriented era. Use your favorite JavaScript framework and automatically ship the bare-minimum amount of JavaScript—by default.
Most of the JS based JAMStack solutions you know do let you produce optimized, pre-generated HTML files, but as they're usually based on a UI framework, there's a core JS Framework runtime - React for Gatsby, Vue for Gridsome, Angular for Scully, that always ships! It's part of the core experience and is expected to be always needed. Even if you have pages that might not need any interactivity or behavioral code, the runtime gets downloaded and interpreted. It's a precious time wasted, on a non-essential job, from a static page perspective.
So, why do we prefer a #js based SSG solution in the first place?
- Mostly probably because of one of the following reasons -
- Hand-crafting is hard
- Interactivity is almost always required (or we think it is)
- Familiarity with a UI Framework is a top priority
- A familiar tooling, DX, quick/instant feedback loop go a long way, in making tech X a better choice than tech Y
- A rich ecosystem, CMS integrations(like Gatsby) greatly simplify the content authoring pipeline
- The JS/Non-JS tools you knew are wickedly fast, but only produce static HTML (Eleventy, Hugo, etc.) by default. You manage browser-side behaviour the conventional way.
Wouldn't it be good if you can still build SSG sites, without giving up on many of the above benefits(except the ecosystem probably for now) - interactivity, tooling, familiar UI framework, DX, while being more mindful towards the site, and every page served?. No/Less JS by default, and all the client-side JS, loaded precisely when necessary - with the framework itself exposing constructs to orchestrate the JS load and initialization behavior in a fine-tuned way.
If you like how this sounds, Astro is for you!
https://github.com/snowpackjs/astro
Most of the JS based JAMStack solutions you know do let you produce optimized, pre-generated HTML files, but as they're usually based on a UI framework, there's a core JS Framework runtime - React for Gatsby, Vue for Gridsome, Angular for Scully, that always ships! It's part of the core experience and is expected to be always needed. Even if you have pages that might not need any interactivity or behavioral code, the runtime gets downloaded and interpreted. It's a precious time wasted, on a non-essential job, from a static page perspective.
So, why do we prefer a #js based SSG solution in the first place?
- Mostly probably because of one of the following reasons -
- Hand-crafting is hard
- Interactivity is almost always required (or we think it is)
- Familiarity with a UI Framework is a top priority
- A familiar tooling, DX, quick/instant feedback loop go a long way, in making tech X a better choice than tech Y
- A rich ecosystem, CMS integrations(like Gatsby) greatly simplify the content authoring pipeline
- The JS/Non-JS tools you knew are wickedly fast, but only produce static HTML (Eleventy, Hugo, etc.) by default. You manage browser-side behaviour the conventional way.
Wouldn't it be good if you can still build SSG sites, without giving up on many of the above benefits(except the ecosystem probably for now) - interactivity, tooling, familiar UI framework, DX, while being more mindful towards the site, and every page served?. No/Less JS by default, and all the client-side JS, loaded precisely when necessary - with the framework itself exposing constructs to orchestrate the JS load and initialization behavior in a fine-tuned way.
If you like how this sounds, Astro is for you!
https://github.com/snowpackjs/astro
YouTube
Astro in 100 Seconds
Astro is an open-source tool that can build static HTML websites using popular frontend JavaScript frameworks (React, Vue, Svelte), while loading fully interactive components as needed https://github.com/snowpackjs/astro
#webdev #js #100SecondsOfCode
This…
#webdev #js #100SecondsOfCode
This…
cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help remind unix system administrators of options for commands that they use frequently, but not frequently enough to remember.
https://github.com/cheat/cheat
#go #shell
https://github.com/cheat/cheat
#go #shell
Twitter
GitHub
View cheat sheets on the command line with 𝚌𝚑𝚎𝚊𝚝: github.com/cheat/cheat 📑 Very helpful to remember options for commands that you use frequently, but not frequently enough to remember.
⚡️Breaking news!
PostgreSQL 14 Released!
PostgreSQL 14 brings a variety of features that help developers and administrators deploy their data-backed applications. PostgreSQL continues to add innovations on complex data types, including more convenient access for JSON and support for noncontiguous ranges of data. This latest release adds to PostgreSQL's trend on improving high performance and distributed data workloads, with advances in connection concurrency, high-write workloads, query parallelism and logical replication.
Features:
- JSON Conveniences and Multiranges:
- Performance Improvements for Heavy Workloads
- Enhancements for Distributed Workloads
- Administration and Observability
- SQL Performance, Conformance, and Convenience
https://www.postgresql.org/about/news/postgresql-14-released-2318/
PostgreSQL 14 Released!
PostgreSQL 14 brings a variety of features that help developers and administrators deploy their data-backed applications. PostgreSQL continues to add innovations on complex data types, including more convenient access for JSON and support for noncontiguous ranges of data. This latest release adds to PostgreSQL's trend on improving high performance and distributed data workloads, with advances in connection concurrency, high-write workloads, query parallelism and logical replication.
Features:
- JSON Conveniences and Multiranges:
SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; now works.- Performance Improvements for Heavy Workloads
- Enhancements for Distributed Workloads
- Administration and Observability
- SQL Performance, Conformance, and Convenience
https://www.postgresql.org/about/news/postgresql-14-released-2318/
PostgreSQL News
PostgreSQL 14 Released!
The PostgreSQL Global Development Group today announced the release of [PostgreSQL 14](https://www.postgresql.org/docs/14/release-14.html), the latest version of the world’s [most advanced …
Interactive Redis: A Terminal Client for Redis with AutoCompletion and Syntax Highlighting.
IRedis is a terminal client for redis with auto-completion and syntax highlighting. IRedis lets you type Redis commands smoothly, and displays results in a user-friendly format.
IRedis is an alternative for redis-cli. In most cases, IRedis behaves exactly the same as redis-cli. Besides, it is safer to use IRedis on production servers than redis-cli: IRedis will prevent accidentally running dangerous commands, like
Has many other awesome features!
https://github.com/laixintao/iredis
#python
IRedis is a terminal client for redis with auto-completion and syntax highlighting. IRedis lets you type Redis commands smoothly, and displays results in a user-friendly format.
IRedis is an alternative for redis-cli. In most cases, IRedis behaves exactly the same as redis-cli. Besides, it is safer to use IRedis on production servers than redis-cli: IRedis will prevent accidentally running dangerous commands, like
KEYS *Has many other awesome features!
https://github.com/laixintao/iredis
#python
⏲ Periodic reminder.
You can support this project (and all other open-source projects I am working on):
- Monetarily on GitHub Sponsors: https://github.com/sponsors/wemake-services
- Morally by following me on GitHub: https://github.com/sobolevn
This helps me to find and post quality content here and stay ad-free (sorry, crypto startups, not today).
You can support this project (and all other open-source projects I am working on):
- Monetarily on GitHub Sponsors: https://github.com/sponsors/wemake-services
- Morally by following me on GitHub: https://github.com/sobolevn
This helps me to find and post quality content here and stay ad-free (sorry, crypto startups, not today).
GitHub
Sponsor @wemake-services on GitHub Sponsors
wemake.services is a group of technology evangelists and simply those who love to write beautiful code. We are dedicated to deliver products of high quality basing on best practices, broad experien...
⚡️ Breaking news!
Python3.10 was released several hours ago (not so breaking news, right?). One of the main new features is pattern matching.
Today, I am releasing
Cool, isn't it? Today Python made one more giant step for better functional programming support. And no doubt, that
Check out our:
- Docs: https://returns.readthedocs.io/en/latest/pages/result.html#pattern-matching
- Release notes: https://github.com/dry-python/returns/releases/tag/0.17.0
- Python3.10 release notes: https://docs.python.org/3.10/whatsnew/3.10.html
Soon we will be adding pattern matching support for mypy as well. So, it would be type checked correctly.
Big day for #python!
Python3.10 was released several hours ago (not so breaking news, right?). One of the main new features is pattern matching.
Today, I am releasing
dry-python/returns@0.17.0 with full pattern matching support. Here's an example of how you can use it together with Result type:from returns.result import Failure, Success, safe
@safe
def div(first_number: int, second_number: int) -> int:
return first_number // second_number
match div(1, 0):
# Matches if the result stored inside `Success` is `10`
case Success(10):
print('Result is "10"')
# Matches any `Success` instance and binds its value to the `value` variable
case Success(value):
print('Result is "{0}"'.format(value))
# Matches if the result stored inside `Failure` is `ZeroDivisionError`
case Failure(ZeroDivisionError):
print('"ZeroDivisionError" was raised')
# Matches any `Failure` instance
case Failure(_):
print('The division was a failure')
Cool, isn't it? Today Python made one more giant step for better functional programming support. And no doubt, that
dry-python is the first one to officially support it.Check out our:
- Docs: https://returns.readthedocs.io/en/latest/pages/result.html#pattern-matching
- Release notes: https://github.com/dry-python/returns/releases/tag/0.17.0
- Python3.10 release notes: https://docs.python.org/3.10/whatsnew/3.10.html
Soon we will be adding pattern matching support for mypy as well. So, it would be type checked correctly.
Big day for #python!
Prevent Kubernetes misconfigurations from reaching production (again 😤 )! Datree is a CLI tool to ensure K8s manifests and Helm charts follow best practices as well as your organization’s policies.
It’s far more effective than manual processes, such as sending an email to a slew of developers, begging them to set various limits, which likely falls on deaf ears because developers are already overwhelmed.
The CLI integration provides a policy enforcement solution for Kubernetes to run automatic checks on every code change for rule violations and misconfigurations. When rule violations are found, Datree produces an alert which guides the developer to fix the issue inside the CI process — or even earlier as a pre-commit hook — while explaining the reason behind the rule.
Right now, there are 30 battle-tested rules for you to choose from.
https://github.com/datreeio/datree
#k8s #devops #go
It’s far more effective than manual processes, such as sending an email to a slew of developers, begging them to set various limits, which likely falls on deaf ears because developers are already overwhelmed.
The CLI integration provides a policy enforcement solution for Kubernetes to run automatic checks on every code change for rule violations and misconfigurations. When rule violations are found, Datree produces an alert which guides the developer to fix the issue inside the CI process — or even earlier as a pre-commit hook — while explaining the reason behind the rule.
Right now, there are 30 battle-tested rules for you to choose from.
https://github.com/datreeio/datree
#k8s #devops #go
kbar is a simple plug-n-play React component to add a fast, portable, and extensible command+k interface to your site.
Command+k interfaces are used to create a web experience where any type of action users would be able to do via clicking can be done through a command menu.
With macOS's Spotlight and Linear's command+k experience in mind, kbar aims to be a simple abstraction to add a fast and extensible command+k menu to your site.
Features:
- Built in animations and fully customizable components
- Keyboard navigation support; e.g. ctrl n / ctrl p for the navigation wizards
- Keyboard shortcuts support for registering keystrokes to specific actions; e.g. hit t for Twitter
- Nested actions enable creation of rich navigation experiences; e.g. hit backspace to navigate to the previous action
- A simple data structure which enables anyone to easily build their own custom components
https://github.com/timc1/kbar
#react #js #ts
Command+k interfaces are used to create a web experience where any type of action users would be able to do via clicking can be done through a command menu.
With macOS's Spotlight and Linear's command+k experience in mind, kbar aims to be a simple abstraction to add a fast and extensible command+k menu to your site.
Features:
- Built in animations and fully customizable components
- Keyboard navigation support; e.g. ctrl n / ctrl p for the navigation wizards
- Keyboard shortcuts support for registering keystrokes to specific actions; e.g. hit t for Twitter
- Nested actions enable creation of rich navigation experiences; e.g. hit backspace to navigate to the previous action
- A simple data structure which enables anyone to easily build their own custom components
https://github.com/timc1/kbar
#react #js #ts
👍1
Open-source platform that brings an Airtable experience for your database and allows you to build any automation or cloud functions for your product.
Manage Firestore data in a spreadsheet-like UI, write Cloud Functions effortlessly in the browser, and connect to your favorite third party platforms such as SendGrid, Twilio, Algolia, Slack and more.
Features:
- Powerful spreadsheet interface for Firestore
- Supercharge your database with cloud functions and ready made extension: use APIs or NPM modules
- Rich and flexible data fields: more that 30 different types
- Collaborate with your team
https://github.com/rowyio/rowy
#ts
Manage Firestore data in a spreadsheet-like UI, write Cloud Functions effortlessly in the browser, and connect to your favorite third party platforms such as SendGrid, Twilio, Algolia, Slack and more.
Features:
- Powerful spreadsheet interface for Firestore
- Supercharge your database with cloud functions and ready made extension: use APIs or NPM modules
- Rich and flexible data fields: more that 30 different types
- Collaborate with your team
https://github.com/rowyio/rowy
#ts
The backlash to modern front end development is gaining steam, with good reason: single-page apps have ruined the web. Can we rescue it without going backwards? In this talk, Rich Harris presents a way to do just that. Rich Harris is a graphics editor at the New York Times, where he builds JavaScript apps to help explain the news. He is also the creator of Rollup, the JavaScript module bundler, and Svelte, the front end framework.
What’s wrong with Single-Page apps? There are a lot of critiques. A non-exhaustive list of terrible things about single-page apps include:
You’ll need a bloated JavaScript framework and performance will suffer
It comes with complex tooling and is less resilient, since it won’t work without JavaScript
It will be buggy and accessibility issues
JavaScript failing is a fact of life. So what’s a developer to do? SPAs solve problems to the traditional approach, but are still problematic. Rich presents a new framework for thinking about how we can get the best of both the MPA and SPA worlds: transitional apps.
What’s a transitional app? Transitional apps samples elements from both traditional and modern architecture. The term is borrowed from interior design’s framing of “transitional design.” Transitional apps are, like multi-page apps, server-side rendered for fast initial loads, resilient since they work without JS by default, and provide a consistent experience with accessibility features built in. But like a single-page application, they also have a single codebase, fast navigation, persistent elements, and client-side state management.
Learn more about transitional apps, and how to get the best of both worlds in Rich’s talk.
#js #svelte
What’s wrong with Single-Page apps? There are a lot of critiques. A non-exhaustive list of terrible things about single-page apps include:
You’ll need a bloated JavaScript framework and performance will suffer
It comes with complex tooling and is less resilient, since it won’t work without JavaScript
It will be buggy and accessibility issues
JavaScript failing is a fact of life. So what’s a developer to do? SPAs solve problems to the traditional approach, but are still problematic. Rich presents a new framework for thinking about how we can get the best of both the MPA and SPA worlds: transitional apps.
What’s a transitional app? Transitional apps samples elements from both traditional and modern architecture. The term is borrowed from interior design’s framing of “transitional design.” Transitional apps are, like multi-page apps, server-side rendered for fast initial loads, resilient since they work without JS by default, and provide a consistent experience with accessibility features built in. But like a single-page application, they also have a single codebase, fast navigation, persistent elements, and client-side state management.
Learn more about transitional apps, and how to get the best of both worlds in Rich’s talk.
#js #svelte
YouTube
Have Single-Page Apps Ruined the Web? | Transitional Apps with Rich Harris, NYTimes
The backlash to modern front end development is gaining steam, with good reason: single-page apps have ruined the web. Can we rescue it without going backwards? In this talk, Rich Harris presents a way to do just that. Rich Harris is a graphics editor at…
SQLFluff is a dialect-flexible and configurable SQL linter. Designed with ELT applications in mind, SQLFluff also works with Jinja templating and dbt. SQLFluff will auto-fix most linting errors, allowing you to focus your time on what matters.
Although SQL is reasonably consistent in its implementations, there are several different dialects available with variations of syntax and grammar. SQLFluff currently supports the following SQL dialects (though perhaps not in full):
- ANSI SQL - this is the base version and on occasion may not strictly follow the ANSI/ISO SQL definition
- BigQuery
- Exasol
- Hive
- MySQL
- PostgreSQL (aka Postgres)
- Snowflake
- SQLite
- Teradata
- Transact-SQL (aka T-SQL)
https://github.com/sqlfluff/sqlfluff
#python
Although SQL is reasonably consistent in its implementations, there are several different dialects available with variations of syntax and grammar. SQLFluff currently supports the following SQL dialects (though perhaps not in full):
- ANSI SQL - this is the base version and on occasion may not strictly follow the ANSI/ISO SQL definition
- BigQuery
- Exasol
- Hive
- MySQL
- PostgreSQL (aka Postgres)
- Snowflake
- SQLite
- Teradata
- Transact-SQL (aka T-SQL)
https://github.com/sqlfluff/sqlfluff
#python
A #rust graphical tool to visualize binary data.
It colorizes bytes according to different rules and renders them as pixels in a rectangular grid. This allows users to identify interesting parts in large files and to reveal image-like regions.
The program allows you to control various parameters like the offset into the file, the stride, the width of the rectangular grid as well as the way in which (groups of) bytes are colorized.
https://github.com/sharkdp/binocle
It colorizes bytes according to different rules and renders them as pixels in a rectangular grid. This allows users to identify interesting parts in large files and to reveal image-like regions.
The program allows you to control various parameters like the offset into the file, the stride, the width of the rectangular grid as well as the way in which (groups of) bytes are colorized.
https://github.com/sharkdp/binocle
Kubegres is a #k8s operator allowing to deploy one or many clusters of postgresql instances and manage databases replication, failover and backup.
Features:
- It can manage one or many clusters of Postgres instances. Each cluster of Postgres instances is created using a YAML of "kind: Kubegres". Each cluster is self-contained and is identified by its unique name and namespace.
- It creates a cluster of PostgreSql servers with Streaming Replication enabled: it creates a Primary PostgreSql pod and a number of Replica PostgreSql pods and replicates primary's database in real-time to Replica pods.
- It manages fail-over: if a Primary PostgreSql crashes, it automatically promotes a Replica PostgreSql as a Primary.
- It has a data backup option allowing to dump PostgreSql data regularly in a given volume.
- It provides a very simple YAML with properties specialised for PostgreSql.
https://github.com/reactive-tech/kubegres
#go #devops
Features:
- It can manage one or many clusters of Postgres instances. Each cluster of Postgres instances is created using a YAML of "kind: Kubegres". Each cluster is self-contained and is identified by its unique name and namespace.
- It creates a cluster of PostgreSql servers with Streaming Replication enabled: it creates a Primary PostgreSql pod and a number of Replica PostgreSql pods and replicates primary's database in real-time to Replica pods.
- It manages fail-over: if a Primary PostgreSql crashes, it automatically promotes a Replica PostgreSql as a Primary.
- It has a data backup option allowing to dump PostgreSql data regularly in a given volume.
- It provides a very simple YAML with properties specialised for PostgreSql.
https://github.com/reactive-tech/kubegres
#go #devops
KubeLinter is a static analysis tool that checks Kubernetes YAML files and Helm charts to ensure the applications represented in them adhere to best practices.
KubeLinter runs sensible default checks, designed to give you useful information about your Kubernetes YAML files and Helm charts. This is to help teams check early and often for security misconfigurations and DevOps best practices. Some common examples of these include running containers as a non-root user, enforcing least privilege, and storing sensitive information only in secrets.
KubeLinter is configurable, so you can enable and disable checks, as well as create your own custom checks, depending on the policies you want to follow within your organization.
When a lint check fails, KubeLinter reports recommendations for how to resolve any potential issues and returns a non-zero exit code.
https://github.com/stackrox/kube-linter
#go #k8s #devops
KubeLinter runs sensible default checks, designed to give you useful information about your Kubernetes YAML files and Helm charts. This is to help teams check early and often for security misconfigurations and DevOps best practices. Some common examples of these include running containers as a non-root user, enforcing least privilege, and storing sensitive information only in secrets.
KubeLinter is configurable, so you can enable and disable checks, as well as create your own custom checks, depending on the policies you want to follow within your organization.
When a lint check fails, KubeLinter reports recommendations for how to resolve any potential issues and returns a non-zero exit code.
https://github.com/stackrox/kube-linter
#go #k8s #devops
👍1
High-performance load testing tool, written in #go.
Features:
- Protocol Agnostic - Currently supporting HTTP, HTTPS, HTTP/2. Other protocols are on the way.
- Scenario-Based - Create your flow in a JSON file. Without a line of code!
- Different Load Types - Test your system's limits across different load types.
https://github.com/ddosify/ddosify
Features:
- Protocol Agnostic - Currently supporting HTTP, HTTPS, HTTP/2. Other protocols are on the way.
- Scenario-Based - Create your flow in a JSON file. Without a line of code!
- Different Load Types - Test your system's limits across different load types.
https://github.com/ddosify/ddosify
I have great news! We are going to have another GitHub meetup with awesome guests:
- Yuri Selivanov, CPython core dev, asyncio co-author
- Mike McQuaid, brew (talk will be translated 🇺🇸 -> 🇷🇺)
- Nikita Sobolev (dry-python and mypy core) (it's me!)
We are going to speak about open-source and everything around it.
Join us! We invite everyone, but the content will be in 🇷🇺 only 🙂
Tuesday, February 22, 2022 (Today)
5:00 PM to 6:00 PM MSK
https://www.meetup.com/github-planeta/events/281817625/
- Yuri Selivanov, CPython core dev, asyncio co-author
- Mike McQuaid, brew (talk will be translated 🇺🇸 -> 🇷🇺)
- Nikita Sobolev (dry-python and mypy core) (it's me!)
We are going to speak about open-source and everything around it.
Join us! We invite everyone, but the content will be in 🇷🇺 only 🙂
Tuesday, February 22, 2022 (Today)
5:00 PM to 6:00 PM MSK
https://www.meetup.com/github-planeta/events/281817625/
Meetup
GitHub Planeta: по-русски Open Source Edition, вт, 22 февр. 2022 г., 17:00 | Meetup
Тема : Open-Source Software, его поддержка, устойчивость и GitHub.
Наша встреча состоится 22 Февраля с 17:00 по московскому времени. Наши ведущие хабберы расскажут вам о но
Наша встреча состоится 22 Февраля с 17:00 по московскому времени. Наши ведущие хабберы расскажут вам о но
❤1
Subscribe to the official GitHub telegram community in Russia: https://xn--r1a.website/githubplaneta 🚀
We will share future events there.
We will share future events there.
Telegram
GitHub Планета
Наши встречи будут проходить каждый третий вторник каждого месяца в 19:00 по Москве. Митап страница https://www.meetup.com/ru-RU/github-planeta
We are starting a free course about typing in Python!
We will cover:
- Runtime implementation of
- How to write mypy plugins?
- How to write type-safe code in Python using advanced techniques, such as: type level programming, dependent types, monads, phantom types and many more!
3 lectures + optional homework.
11 oct - 31 oct 2022
Language: ru
Register, while we still have open seats left!
https://education.borshev.com/python-typing
We will cover:
- Runtime implementation of
typing.py and when it can be helpful- How to write mypy plugins?
- How to write type-safe code in Python using advanced techniques, such as: type level programming, dependent types, monads, phantom types and many more!
3 lectures + optional homework.
11 oct - 31 oct 2022
Language: ru
Register, while we still have open seats left!
https://education.borshev.com/python-typing
tough-dev.school
Типизация в Python
Hi 👋
We continue our tradition of creating inspiring and content-heavy courses for Python developers.
This time we decided to focus on testing. We all know that sometimes people struggle with tests, because there are so many things to get right:
- Frameworks
- Mocking
- Data generation
- Flakyness
- Speed
- Different levels and kinds of tests
Sounds hard? We are here to help!
We will start with just one free webinar, where we will cover the most essential part. But, we will have more coming soon, stay tuned!
We even created a rather big project to be tested as a part of the homework for the later parts of this course. Check it out: https://github.com/tough-dev-school/python-testing-homework
Date: 01.03.2023
Time: 18:00 GMT+3
Language: ru
Register via our telegram bot to get a translation link: @tough_dev_bot
And prepare your questions :)
See you!
We continue our tradition of creating inspiring and content-heavy courses for Python developers.
This time we decided to focus on testing. We all know that sometimes people struggle with tests, because there are so many things to get right:
- Frameworks
- Mocking
- Data generation
- Flakyness
- Speed
- Different levels and kinds of tests
Sounds hard? We are here to help!
We will start with just one free webinar, where we will cover the most essential part. But, we will have more coming soon, stay tuned!
We even created a rather big project to be tested as a part of the homework for the later parts of this course. Check it out: https://github.com/tough-dev-school/python-testing-homework
Date: 01.03.2023
Time: 18:00 GMT+3
Language: ru
Register via our telegram bot to get a translation link: @tough_dev_bot
And prepare your questions :)
See you!
GitHub
GitHub - tough-dev-school/python-testing-homework: Homework for our "Testing" course
Homework for our "Testing" course. Contribute to tough-dev-school/python-testing-homework development by creating an account on GitHub.
👍1