DEV Community

Cover image for Potherca's Weekly Github Stars - 2020 Week 24
Ben Peachey
Ben Peachey

Posted on • Updated on

Potherca's Weekly Github Stars - 2020 Week 24

Week 24

Alt Text

This week's Github Stars overview is a couple of days late. I was so busy, it was hard to find the time to sit down and write it all out.

What has been taking up all my time you ask?

Besides preparing my Grant for the Web application, I started on a new project that will keep me busy in the coming months: Solid-Nextcloud.

I am joining some brave folks in an attempt to create an app that turns a Nextcloud server into a fully functional Solid server. I'll be sure to write about it here, so you can keep track of our progress.

And, if that wasn't enough, I am also building a Roblox game in the evening with my son.

Pfew. Let's see what repos that made me stars!

Last week's starred repos

theryangeary/choose

GitHub logo theryangeary / choose

A human-friendly and fast alternative to cut and (sometimes) awk

Choose

This is choose, a human-friendly and fast alternative to cut and (sometimes) awk

choose demo

Features

  • terse field selection syntax similar to Python's list slices
  • negative indexing from end of line
  • optional start/end index
  • zero-indexed
  • reverse ranges
  • slightly faster than cut for sufficiently long inputs, much faster than awk
  • regular expression field separators using Rust's regex syntax

Rationale

The AWK programming language is designed for text processing and is extremely capable in this endeavor. However, the awk command is not ideal for rapid shell use, with its requisite quoting of a line wrapped in curly braces, even for the simplest of programs:

awk '{print $1}'
Enter fullscreen mode Exit fullscreen mode

Likewise, cut is far from ideal for rapid shell use, because of its confusing syntax. Field separators and ranges are just plain difficult to get right on the first try.

It is for these reasons that I present to you choose. It…

This is the only non-themed discovery this week.

If you spend a lot of time on the CLI, you've probably encountered situations where you want to grab some fields from a set of data. The go-to tools are
usually awk, cut, or grep. Although powerful, they require a lot of knowledge and have some weird quirks and shortcomings.

Written in Rust, choose offers an easier and more intuitive alternative.

To give you an example, let's say we have a data.txt that contains lines of data separated by an :. We want the first, third, and last item from a line. To make it more excited, the amount of fields is flexible.

How would that look with choose?

choose -f ':' 0 3 -1
Enter fullscreen mode Exit fullscreen mode

Now compare that with cut:

cat ./data.txt | cut -d ':' -f "1,3,$(cat ./data.txt | tr -cd ':' | wc -c)-"
Enter fullscreen mode Exit fullscreen mode

Or awk:

awk -F ':'  '{print $1 $3 $NF}'  ./data.txt
Enter fullscreen mode Exit fullscreen mode

And you'll understand why this repo got a star!

Awesome Lists

As there wasn't one, I created an Awesome List for Solid. There were some tools I found useful along the way.

GitHub logo dar5hak / generator-awesome-list

😎 Yeoman generator for GitHub awesome lists

generator-awesome-list

Yeoman generator for GitHub awesome lists 😎

build npm version license

Usage

npm install -g yo generator-awesome-list
yo awesome-list
Enter fullscreen mode Exit fullscreen mode

Using Docker

Build the Docker image

docker build . -t generator-awesome-list
Enter fullscreen mode Exit fullscreen mode

Create and run the container based on above image

The following does the same as the non-container command yo awesome-list.

docker run --rm -it -v ${PWD}:/app  generator-awesome-list
Enter fullscreen mode Exit fullscreen mode

What's included?

This stuff is heavily stolen from Sindre Sorhus's lists.

  • readme.md skeleton
  • contributing.md skeleton
  • code-of-conduct.md based on Contributor Covenant
  • a simple .gitattributes to make contributing easier

Screenshot of generator running

The Yeoman generator is really helpful to get started creating an Awesome List.

It is just a simple thing, but it saves you from having to research what rules an Awesome List should adhere to. It generates a readme.md, license, code-of-conduct.md, and skeleton contributing.md file.

Everything you need to get up and running!

GitHub logo sindresorhus / awesome-lint

Linter for Awesome lists


awesome-lint


Linter for Awesome lists

Intended to make it easier to create and maintain Awesome lists.

Includes a bunch of general Markdown rules and some Awesome specific rules.

CLI

Usage

The CLI requires Node.js and Git.

Type the command npx awesome-lint followed by the URL of the repo you want to check:

❯ npx awesome-lint https://github.com/sindresorhus/awesome-something

  readme.md:1:1
  ✖    1:1  Missing Awesome badge after the main heading      awesome-badge
  ✖   12:1  Marker style should be -                          unordered-list-marker-style
  ✖  199:3  Remove trailing slash (https://sindresorhus.com)  trailing-slash

  3 errors

Special comments

You can enable, disable, and ignore rules using special comments. This is based on remark-message-control.

By default, all rules are turned on. For example, 4 errors (2 of no-dead-urls and 2 of awesome-list-item) will be generated for following code snippets.

- [foo](https://foo.com) - an invalid description.
- [foo](https://foo.com) - invalid description.
Enter fullscreen mode Exit fullscreen mode
disable

If you create an Awesome List, you want it to be Awesome. The Linter helps do just that. It checks for all sorts of things and tells you what you need to fix.

As it is written in NodeJS, it can be added to your package.json and be run using npm test:

    {
      "devDependencies": {
        "awesome-lint": "^0.13.0"
      },
      "scripts": {
        "test": "awesome-lint"
      }
    }
Enter fullscreen mode Exit fullscreen mode

This also makes it trivial to add a GitHub action for it, for any future merge-requests your awesome list is bound to get 😏

GitHub logo sdras / awesome-actions

A curated list of awesome actions to use on GitHub



Awesome Actions Awesome GitHub Actions status | sdras/awesome-actions

A curated list of awesome things related to GitHub Actions.

Actions are triggered by GitHub platform events directly in a repo and run on-demand workflows either on Linux, Windows or macOS virtual machines or inside a container in response. With GitHub Actions you can automate your workflow from idea to production.

Contents

Official Resources

Workflow Examples

Official Actions

Workflow Tool Actions

Tool actions for your workflow.

Looking into GitHub actions for my own Awesome List, I came across an Awesome List for GitHub action. So, yeah, I starred it further research.

NextCloud

GitHub logo nextcloud / server

☁️ Nextcloud server, a safe home for all your data

Nextcloud Server ☁

Scrutinizer Code Quality codecov CII Best Practices Design

A safe home for all your data.

Why is this so awesome? 🤩

  • 📁 Access your Data You can store your files, contacts, calendars, and more on a server of your choosing.
  • 🔄 Sync your Data You keep your files, contacts, calendars, and more synchronized amongst your devices.
  • 🙌 Share your Data …by giving others access to the stuff you want them to see or to collaborate with.
  • 🚀 Expandable with hundreds of Apps ...like Calendar, Contacts, Mail, Video Chat and all those you can discover in our App Store
  • 🔒 Security with our encryption mechanisms, HackerOne bounty program and two-factor authentication.

Do you want to learn more about how you can use Nextcloud to access, share, and protect your files, calendars, contacts, communication & more at home and in your organization? Learn about all our Features.

Get your Nextcloud 🚚

In case you are not familiar with it, Nextcloud is a self-hosted productivity platform. Think of it as a simpler version of Dropbox, Google Calendar, Microsoft Office 365, and Trello all rolled into one.

If that isn't something worth starring, I don't know what is!

GitHub logo andreasjacobsen93 / awesome-nextcloud

List of awesome tools for NextCloud and OwnCloud

awesome-nextcloud

Warning: Many of these might be outdated or deprecated.

List of awesome tools for NextCloud and OwnCloud

We encourage looking at some of the tools that are still under development or have been deprecated and consider forking

Apps

Unofficial

As Nextcloud is awesome there is an Awesome List for it, of course.

A good place to get some ideas about how the already awesome Nextcloud can be made even more so!

GitHub logo nextcloud / docker

⛴ Docker image of Nextcloud

What is Nextcloud?

GitHub CI build status badge update.sh build status badge amd64 build status badge arm32v5 build status badge arm32v6 build status badge arm32v7 build status badge arm64v8 build status badge i386 build status badge mips64le build status badge ppc64le build status badge s390x build status badge

A safe home for all your data. Access & share your files, calendars, contacts, mail & more from any device, on your terms.

logo

This Docker micro-service image is developed and maintained by the Nextcloud community. Nextcloud GmbH does not offer support for this Docker image. When you are looking to get professional support, you can become an enterprise customer or use Nextcloud All-in-One docker image - as the name suggests, Nextcloud All-in-One provides easy deployment and maintenance of Nextcloud Hub included in this one Nextcloud instance.

How to use this image

This image is designed to be used in a micro-service environment. There are two versions of the image you can choose from.

The apache tag contains a full Nextcloud installation including an apache web server. It is designed to be easy to use and gets you running pretty fast. This is also the default for the…

Developing something for Nexcloud, I will obviously need to have a running Nextcloud server. So, besides starring the main NextCloud repo, I also gave a star to this official Docker images repo.

GitHub logo nextcloud / coding-standard

Nextcloud coding standards for php cs fixer

Nextcloud Coding Standard

Nextcloud coding standards for the php cs fixer.

Installation

Add the package to your dev dependencies

composer require --dev nextcloud/coding-standard
Enter fullscreen mode Exit fullscreen mode

and create a .php-cs-fixer.dist.php like

<?php

declare(strict_types=1);

require_once './vendor/autoload.php';

use Nextcloud\CodingStandard\Config;

$config = new Config();
$config
    ->getFinder()
    ->ignoreVCSIgnored(true)
    ->notPath('build')
    ->notPath('l10n')
    ->notPath('src')
    ->notPath('vendor')
    ->in(__DIR__);
return $config;
Enter fullscreen mode Exit fullscreen mode

To run the fixer you first have to install it. Then you can run php-cs-fixer fix to apply all automated fixes.

For convenience you may add it to the scripts section of your composer.json:

{
    "scripts": {
        "cs:check": "php-cs-fixer fix --dry-run --diff",
        "cs:fix": "php-cs-fixer fix"
    }
}
Enter fullscreen mode Exit fullscreen mode

Note: Don't forget to exclude .php_cs.dist

Any code I'll be creating for Nextcloud will have to adhere to the Nextcloud coding standard. This repo helps do that.

When in Rome...

Solid

GitHub logo solid / solid

Solid - Re-decentralizing the web (project directory)

Solid

Solid Logo

Re-decentralizing the Web

Solid is a proposed set of standards and tools for building decentralized Web applications based on Linked Data principles.

Read more on solidproject.org.




Solid is an exciting new idea (and set of specifications to go along with it). It is part of the distributed web movement, aimed at data portability and identity/authentication.

Check out https://solidproject.org for all the details.

This repo is where the magic happens, so starred it is!

GitHub logo joinsolid / joinsolid.org

website for joinsolid.org




Although no longer maintained, I liked the idea of https://joinsolid.org.
From a marketing perspective, having an easily identifiable domain with a one-click join button is rather appealing, so I starred it for future reference.

GitHub logo linkeddata / ldphp

Linked Data server for PHP

ldphp

About

Linked Data Store for PHP

Installation

  • Check the apache conf files and change paths to your own system

  • Requires librdf for php ( sudo apt-get install php5-librdf )

  • Directories should automatically be generated in /data/ you may wish to check permissions

  • To enable WebID authentication, install mod_authn_webid on your Apache2 server

License

MIT




Solid works with linked data. Nextcloud is written in PHP. As we are building an app to turn Nextcloud into a Solid server, any Linked Data server is of interest to me. Even if the last commit is from 2018

GitHub logo michielbdejong / solid-app-kit

A server that includes both a pod server and an app

solid-app-kit

A server that includes both a pod server and an app

See https://github.com/michielbdejong/solid-app-kit/blob/master/src/cli.ts for an example.

On localhost

Previously there were several ways to test https-based systems on localhost but in the last few years, browsers have tightened that up a lot, meaning you want to steer clear of using 'localhost' or '127.0.0.1' as the hostname Even if you use something like chrome://flags/#allow-insecure-localhost to make https://localhost work in your browser, the Solid IDP that's built into Solid App Kit would reject its own localhost domain name as a redirect URI.

So instead, you can use a domain name which you point to 127.0.0.1 in your /etc/hosts. I personally like to use https://lolcathost.de/ which is a domain name that exists but is pointed to 127.0.0.1 in DNS. Long story short, you'll need to generate a CA root certificate, and import it into your browser, then sign a cert for the…

Solid servers can also run apps. To give you an idea of what that looks like, solid-app-kit contains both a server and an app.

GitHub logo solidpayorg / docs

documentation for solidpay

description
Version 0.1 draft - work in progress

Solid Pay

Solid Pay!

This guide is an early draft and should be considered a work in progress.

Solid Pay is about making payments between two people on the Web. It builds heavily on the Solid framework and the webcredits specification.

Instantaneous, zero cost transactions, that scale to millions per second

Solid Pay is not a crypto currency it is a higher layer technology that lives above existing currencies. However, Solid Pay, itself, is currency agnostic and any currency is usable with it.

Being a higher layer protocol it is capable of thousands or even millions of transactions per second, instantaneously and at zero cost. The aim is that this will facilitate new use cases and business models.

Why not use a block chain?

While block chains are a great technology, solid pay builds on top of existing networks. For example, the bitcoin block…

Doing some research for Solid, I came across SolidPay.

Solid Pay is about making payments between two people on the Web. It builds heavily on the Solid framework and the webcredits specification.

As I am also working on Web Monetization, I found this quite interesting. It is mostly an idea at the moment, but I'll definitely be keeping tabs on the implementation! ⭐

GitHub logo pdsinterop / awesome-solid

⬣ Awesome list of Solid (Social Linked Data) tools, libraries, resources, and shiny things.

Awesome Solid Awesome

⬣ Awesome list of Solid (social linked data) tools, libraries, resources, and shiny things.

Solid (Social Linked Data) is a web decentralization project led by Tim Berners-Lee, developed collaboratively at the Massachusetts Institute of Technology (MIT).

Contents

Applications

Apps build on top of/using Solid

On the Solid Project there is an overview of more Solid Apps.

Articles and Blog Posts

Things written about Solid.

Community

Places to talk to others, ask for help, and generally socialize.

https://pdsinterop.org/awesome-solid/

If you haven't noticed yet, Solid is awesome! But, as it turns out, there wasn't an Awesome List for it yet... so I created one!

Naturally, I also starred it. 🤗

Roblox

What can I say? I love awesome lists and this curated list of ROBLOX resources, plugins, and frameworks looks good enough to star!.

GitHub logo JodeRBX / awesome-roblox

A curated list of awesome libraries, plugins, and resources for Roblox game development.

Awesome Roblox

A curated list of awesome libraries, plugins, and resources for Roblox scripting and game development.

(TODO: Table of Contents)


Scripts

Libraries and Frameworks

##Plugins

Building tools


A curated list of awesome libraries, plugins, and resources for Roblox game development.

GitHub logo RobloxAPI / ref

Roblox Lua API Reference Pages

Although the official API documentation is nice, it is also rather verbose.

For beginners that is good but for more seasoned developers it can be rather distracting. The Roblox Lua API Reference Pages offer a non-thrills, quick-access overview of the Roblox Lua API.

Visit it at https://robloxapi.github.io/ref/

Monetization

GitHub logo WICG / webmonetization

Proposed Web Monetization standard

Web Monetization

This repo is the code behind webmonetization.org

It is the home of the proposed Web Monetization standard currently incubating at the WICG.

You can read the docs, or read the proposed spec.

Contribute

This website is built with Starlight, a documentation framework based on Astro.

Local Development

We are using Bun in this repository, but you could theoretically use the package manager of your choice. To install Bun, run

curl -fsSL https://bun.sh/install | bash
Enter fullscreen mode Exit fullscreen mode
  1. Make sure all the dependencies for the website are installed:
# Install dependencies
cd webmonetization
bun install
Enter fullscreen mode Exit fullscreen mode
  1. Run your dev server:
# Start the site
bun run start
Enter fullscreen mode Exit fullscreen mode
  1. Build the site:
# Build the site into the .dist folder
bun run build
Enter fullscreen mode Exit fullscreen mode

Specification Development

The source file for the specification document is at src/pages/specification/specification-respec.html. This is the raw ReSpec version that editors should make changes and updates to…

If you haven't yet, check out https://webmonetization.org That's okay. I'll wait...

Are you blown away? You should be! I expect big things from this.

This repo contains the proposed standard that underpins Web Monetization.

It may be a bit dry to read but it will change the internet!

GitHub logo interledgerjs / minute

Using Interledger, support content creators

Minute

Support content creators with ILP

Quick Start

Before you use this module, install and run Moneyd Make sure you start moneyd with the --unsafe-allow-extensions flag, which will permit this chrome extension to access the local port.

git clone https://github.com/sharafian/minute.git
cd minute
npm install
npm run build
Enter fullscreen mode Exit fullscreen mode

Now go to chrome://extensions, select "Load unpacked extension", and nagivate to the folder where you cloned this repository.

Enable your Site

Add the following tag to your site's body:

<script>
  if (window.monetize) {
    monetize({
      receiver: /* Put your SPSP payment pointer here */
    }).then(() => {
      // Make sure to thank the user!
    })
  }
</script>
Enter fullscreen mode Exit fullscreen mode

Now any user who navigates to your site and has Minute (or another extension that enables Web Monetization) enabled will stream payments…

If you do anything with Web Monetization, you'll need a Web Monetization Provider. Currently, the only one out there is Coil.

With this library, you don't need Coil as you can connect with Wallets directly, using the Internet Ledger Protocol .

If you want to understand a bit more about how all of this work, read the code.

It'll be worth your investment!

Closing notes

As you can see, I've been keeping busy. This week's stars reflect that.

No doubt, the coming weeks will bring you more Nextcloud, Solid, Roblox, and Web Monetisation repos.

What else will be on the list? Tune in next week to find out!

#weekly

#github

"Where the world builds software"

#stars


Top comments (0)