Week 24
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
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
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 thanawk
- 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}'
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
Now compare that with cut
:
cat ./data.txt | cut -d ':' -f "1,3,$(cat ./data.txt | tr -cd ':' | wc -c)-"
Or awk
:
awk -F ':' '{print $1 $3 $NF}' ./data.txt
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.
dar5hak / generator-awesome-list
😎 Yeoman generator for GitHub awesome lists
generator-awesome-list
Yeoman generator for GitHub awesome lists 😎
Usage
npm install -g yo generator-awesome-list
yo awesome-list
Using Docker
Build the Docker image
docker build . -t generator-awesome-list
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
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
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!
sindresorhus / awesome-lint
Linter for Awesome lists
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.
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"
}
}
This also makes it trivial to add a GitHub action for it, for any future merge-requests your awesome list is bound to get 😏
sdras / awesome-actions
A curated list of awesome actions to use on GitHub
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
- Official Site
- Official Documentation
-
Official Actions organization
- actions/virtual-environments - GitHub Actions virtual environments.
- actions/runner - The Runner for GitHub Actions.
- GitHub Blog Announcement
Workflow Examples
- actions/starter-workflows - Starter workflow management.
- actions/example-services - Example workflows using service containers.
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
Nextcloud Server ☁
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 🚚
- ☑️ Simply…
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!
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
- Afterlogic-nextcloud-connector - Intergration with Afterlogic webmail
- Face-Recognition - Face recognition software for NC
- nextcloud-keeweb - A KeePass password manager in NC
- nextcloud-paper - Instapaper clone for NC (deprecated)
- nextcloud-terminal - Xterm compatible terminal for NC (pre-alpha)
- nextcloudTaskToMap - Display a map with the locations from tasks
- ocr - OCR processing for images and PDF in NC
- PhoneTrack - Uses tracking sessions to display phones position in real time and export activity to gpx for NC
- quicknotes - Notes app for NC
- Roundcube-Plugin-nextCloud - Open nextcloud from Roundcub
- searchlight - Fuzzy search for NC
- timetracker - A time tracker for nextcloud
- vinecellar - A simple vine downloader…
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!
What is Nextcloud?
A safe home for all your data. Access & share your files, calendars, contacts, mail & more from any device, on your terms.
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.
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
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;
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"
}
}
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
Solid
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!
joinsolid / joinsolid.org
website for joinsolid.org
helloworld
hello world for Solid apps
Running live here: https://melvincarvalho.github.io/helloworld/
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.
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
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
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.
solidpayorg / docs
documentation for solidpay
description |
---|
Version 0.1 draft - work in progress |
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! ⭐
pdsinterop / awesome-solid
⬣ Awesome list of Solid (Social Linked Data) tools, libraries, resources, and shiny things.
Awesome Solid
⬣ 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
- Articles and Blog Posts
- Community
- Development
- Examples and Prototypes
- Plugins, Products, Projects, and Services
- Specifications, Manuals, and other documentation
Applications
Apps build on top of/using Solid
- Solid Add Friend - Add a friend on Solid (blog) (repo).
On the Solid Project there is an overview of more Solid Apps.
Articles and Blog Posts
Things written about Solid.
- One Small Step for the Web… - (2018) Tim Berners-Lee's introduction of Solid.
Community
Places to talk to others, ask for help, and generally socialize.
- Gitter chat for Solid - Gitter community about Solid.
- Forum for Solid Community - (Official) Solid Community…
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
elevenpassin / awesome-roblox
A curated list of ROBLOX resources, plugins and frameworks!
Awesome ROBLOX
A curated list of open source ROBLOX projects & resources
Contents
- Frameworks & Libraries
- Tools
- Plugins
- Bots
- Learning Resources
- Discord Servers
- Other
- Twitter Accounts To Follow
- ROBLOX Game Studios
Frameworks
Handy frameworks and libraries to build your ROBLOX games on top of!
- ROBLOX Core Scripts
- Nevermore Engine
- Freya
- Valkyrie
- Aero Game Framework
- Roact
- Rodux
- Roact Material
- Knit
- Proton
Tools
Tools to augument your game development experience
- wally
- Cmdr
- ROBLOX Studio Tools
- Rojo
- roblox-ts
- Pixel Terrain
- ROBLOX Studio Mod Manager
- Group Auto Ranker
- Entity Component System
- ROBLOX Lua Promise
- Rbx2Source
- Dungeon Generator
- Lemur
- Luanoid
- Radial SpriteSheet Generator
- Foreman
- Janitor
- Maid
- Signal
- RotatedRegion3
- TopbarPlus
- ZonePlus
- Dynablox Opencloud
- Rbx Gravity Controller
Plugins
Plugins to help you build levels fast!
Level Design plugins
What can I say? I love awesome lists and this curated list of ROBLOX resources, plugins, and frameworks looks good enough to star!.
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
- Google Analytics Model - Tracks visits and Lua errors via Google Analytics
- Online Studio - GUI implementations of the explorer and properties windows
- Fragmentation System - Divides parts into fragments when they are hit with an explosion
Libraries and Frameworks
- Underscore.lua - A Ruby-like utility library for dealing with iterators, tables, arrays, and functions
- 30log - A minimal OOP framework that supports classes, inheritance, and mixins in only 30 lines
- EncodeInstance - Highly-compressed instance serialization
- BitBuffer Module - Bitwise data storage
- Bitwise Operations Module - Blazing-fast pure-Lua bitwise operations library
- PlayerDataStore Module - Wrapper API around DataStores for saving per-player data
- CFrameInterpolator Module - Easily interpolate between two CFrames
- gloo - A GUI library
##Plugins
Building tools
- F3X's Building Tools - Simple and powerful building tools
- qCmdUtl -…
A curated list of awesome libraries, plugins, and resources for Roblox game development.
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
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
- Make sure all the dependencies for the website are installed:
# Install dependencies
cd webmonetization
bun install
- Run your dev server:
# Start the site
bun run start
- Build the site:
# Build the site into the .dist folder
bun run build
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!
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
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>
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!
Latest comments (0)