A Terraform module for hosting your own runner for CI/CD on Digital Ocean to run jobs in your GitHub Actions workflows.
Doact is a Terraform module to automate the deployment and hosting process of your own runners on Digital Ocean cloud to run jobs in your GitHub Actions workflows. It makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub.
Doact sets up a self-hosted runner on the cloud. Self-hosted runners offer more control of hardware, operating system, and software tools than GitHub-hosted runners provide. With self-hosted runners, you can choose to create a custom hardware configuration with more processing power or memory to run larger jobs, install software available on your local network, and choose an operating system not offered by GitHub-hosted runners.
https://github.com/itsksaurabh/doact
#devops #hcl
Doact is a Terraform module to automate the deployment and hosting process of your own runners on Digital Ocean cloud to run jobs in your GitHub Actions workflows. It makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub.
Doact sets up a self-hosted runner on the cloud. Self-hosted runners offer more control of hardware, operating system, and software tools than GitHub-hosted runners provide. With self-hosted runners, you can choose to create a custom hardware configuration with more processing power or memory to run larger jobs, install software available on your local network, and choose an operating system not offered by GitHub-hosted runners.
https://github.com/itsksaurabh/doact
#devops #hcl
GitHub
GitHub - itsksaurabh/doact: A Terraform module for hosting your own runner for CI/CD on Digital Ocean to run jobs in your GitHub…
A Terraform module for hosting your own runner for CI/CD on Digital Ocean to run jobs in your GitHub Actions workflows. 🚀 - itsksaurabh/doact
Today I want to talk about our #django template: https://github.com/wemake-services/wemake-django-template
It is the strictest and the most advanced django project template there is.
Features:
- Always up-to-date with the help of dependabot
- Supports latest python3.7+
- poetry for managing dependencies
- mypy and django-stubs for static typing
- pytest and hypothesis for unit tests
- flake8 and wemake-python-styleguide for linting
- docker for development, testing, and production
- sphinx for documentation
- Gitlab CI with full build, test, and deploy pipeline configured by default
- Caddy with https and http/2 turned on by default
- Great docs
And many more! Featured products built with it:
- Backend for https://apps.apple.com/app/apple-store/id1506209462
My close friend made an app that helps you find new cool and interesting facts every day. No ads, 100% free. They parse multiple sources to get just the pure content without any noise.
- Internal services for https://github.com/roskomsvoboda a company who tracks different law-related incidents in the Russian internet
- And more than 590 public projects on github: https://github.com/search?q=wemake-django-template&type=Code
- Our own private projects for the largest Russian corporations
- Are you using it too? Drop me a line privately or add your company in this list: https://github.com/wemake-services/wemake-django-template/wiki/Who-is-using-this-template
Totally worth it! #python
It is the strictest and the most advanced django project template there is.
Features:
- Always up-to-date with the help of dependabot
- Supports latest python3.7+
- poetry for managing dependencies
- mypy and django-stubs for static typing
- pytest and hypothesis for unit tests
- flake8 and wemake-python-styleguide for linting
- docker for development, testing, and production
- sphinx for documentation
- Gitlab CI with full build, test, and deploy pipeline configured by default
- Caddy with https and http/2 turned on by default
- Great docs
And many more! Featured products built with it:
- Backend for https://apps.apple.com/app/apple-store/id1506209462
My close friend made an app that helps you find new cool and interesting facts every day. No ads, 100% free. They parse multiple sources to get just the pure content without any noise.
- Internal services for https://github.com/roskomsvoboda a company who tracks different law-related incidents in the Russian internet
- And more than 590 public projects on github: https://github.com/search?q=wemake-django-template&type=Code
- Our own private projects for the largest Russian corporations
- Are you using it too? Drop me a line privately or add your company in this list: https://github.com/wemake-services/wemake-django-template/wiki/Who-is-using-this-template
Totally worth it! #python
Toml sorting library. Simple autoformatter and linter.
Features:
- Sort tables and Arrays of Tables (AoT)
- Option to sort non-tables / non-AoT's, or not
- Preserve inline comments
- Option to preserve top-level document comments, or not
- Standardize whitespace and indentation
https://github.com/pappasam/toml-sort
#python
Features:
- Sort tables and Arrays of Tables (AoT)
- Option to sort non-tables / non-AoT's, or not
- Preserve inline comments
- Option to preserve top-level document comments, or not
- Standardize whitespace and indentation
https://github.com/pappasam/toml-sort
#python
GitHub
GitHub - pappasam/toml-sort: Toml sorting library
Toml sorting library. Contribute to pappasam/toml-sort development by creating an account on GitHub.
> The only people entitled to say how open source 'ought' to work are people who run projects, and the scope of their entitlement extends only to their own projects.
> Just because someone open sources something does not imply they owe the world a change in their status, focus and effort, e.g. from inventor to community manager.
A very good piece from Rich Hickey (#clojure author) about how open-source really works vs how users of open-source think it works.
#rant
> Just because someone open sources something does not imply they owe the world a change in their status, focus and effort, e.g. from inventor to community manager.
A very good piece from Rich Hickey (#clojure author) about how open-source really works vs how users of open-source think it works.
#rant
icl is a user-friendly, interactive cheat sheet for your UNIX terminal.
Have your favorite one-liners always at your fingertips.
https://github.com/plainas/icl
#python
Have your favorite one-liners always at your fingertips.
https://github.com/plainas/icl
#python
Treebeard is a notebook-based continuous integration framework. Use it to mechanise your data science.
A low-config continuous integration framework for data science teams using Jupyter Notebooks. Works either through our pypi package or GitHub Actions.
Features:
- Automatically installs dependencies for binder-ready repos using repo2docker (which can use conda, pip, or pipenv)
- Runs notebooks in the repo (using papermill)
- On failure, flags all imports which cannot be resolved
- Supports notebook build scripts. treebeard/postinstall.ipynb can manually install dependencies and treebeard/containersetup.ipynb can install credential files.
https://github.com/treebeardtech/treebeard
#python
A low-config continuous integration framework for data science teams using Jupyter Notebooks. Works either through our pypi package or GitHub Actions.
Features:
- Automatically installs dependencies for binder-ready repos using repo2docker (which can use conda, pip, or pipenv)
- Runs notebooks in the repo (using papermill)
- On failure, flags all imports which cannot be resolved
- Supports notebook build scripts. treebeard/postinstall.ipynb can manually install dependencies and treebeard/containersetup.ipynb can install credential files.
https://github.com/treebeardtech/treebeard
#python
git-fame: pretty-print git repository collaborators sorted by contributions.
https://github.com/casperdcl/git-fame
#python
https://github.com/casperdcl/git-fame
#python
Fast #python event-sourcing library using Redis and Mongo.
Jamboree Library Is Split In Two Parts:
1. Jamboree Event Sourcing
2. Object Handler
The Jamboree object is rather simple. It only saves, reads, and deletes records in both redis and mongodb. Redis to give it fast read times, mongodb as backup to the data. Handlers have very explicit storage procedures that interact with the Jamboree object. A good example is the code below.
The idea is straightforward:
1. We create a Jamboree object. The Jamboree object manages connections to databases at a high speed and low latency.
2. After we create the Handler object, and set the limit (max number of records we want to look at), we start adding records until we stop. At the end, we get the amount of time it took to push the records.
3. Periodically, we do a small calculation to older information prior to adding a record.
https://github.com/kivo360/jamboree
Jamboree Library Is Split In Two Parts:
1. Jamboree Event Sourcing
2. Object Handler
The Jamboree object is rather simple. It only saves, reads, and deletes records in both redis and mongodb. Redis to give it fast read times, mongodb as backup to the data. Handlers have very explicit storage procedures that interact with the Jamboree object. A good example is the code below.
The idea is straightforward:
1. We create a Jamboree object. The Jamboree object manages connections to databases at a high speed and low latency.
2. After we create the Handler object, and set the limit (max number of records we want to look at), we start adding records until we stop. At the end, we get the amount of time it took to push the records.
3. Periodically, we do a small calculation to older information prior to adding a record.
https://github.com/kivo360/jamboree
Domo is an #elixir library to model a business domain with type-safe structs and composable tagged tuples.
It's a library to define what piece of data is what and make a dialyzer and run-time type verification to cover one's back, reminding about taken definitions.
The library aims for two goals:
-to allow a business domain entity's valid states with a struct of fields of generic and tagged types
- to automatically verify that the construction of the entity's struct leads to one of the allowed valid states only
The validation of the incoming data is on the author of the concrete application. The library can only ensure the consistent assembly of that valid data into structs according to given definitions throughout the app.
https://github.com/IvanRublev/Domo
Both ids for User and Order structs are of the integer type. How to ensure that we don't mix them up throughout the various execution paths in the application? One way to do that is to attach an appropriate tag to each of the ids with tagged tuple like the following:
It's a library to define what piece of data is what and make a dialyzer and run-time type verification to cover one's back, reminding about taken definitions.
The library aims for two goals:
-to allow a business domain entity's valid states with a struct of fields of generic and tagged types
- to automatically verify that the construction of the entity's struct leads to one of the allowed valid states only
The validation of the incoming data is on the author of the concrete application. The library can only ensure the consistent assembly of that valid data into structs according to given definitions throughout the app.
https://github.com/IvanRublev/Domo
Both ids for User and Order structs are of the integer type. How to ensure that we don't mix them up throughout the various execution paths in the application? One way to do that is to attach an appropriate tag to each of the ids with tagged tuple like the following:
This #zsh plugin provides functionality similar to Vim's abbreviation expansion.
https://github.com/momo-lab/zsh-abbrev-alias
#shell
https://github.com/momo-lab/zsh-abbrev-alias
#shell
A wrapper around the #php Laravel Pipeline class with a few additional niceties
After using Laravel Pipelines to handle complex data flows in our projects we saw a few patterns emerge:
- Database transactions
- Pipe interface
- Responses and exception handling
This package adds niceties on top of the Laravel Pipeline and consolidates them into a single reusable location.
Looks very close to what we have in
https://github.com/zaengle/pipeline
A pipeline is a common pattern for breaking data, logic, and response/exceptions into three distinct elements. Zaengle Pipeline abstracts these parts into helpful classes and gives some structure to the underlying pattern. For example, let's explore at what a pipeline might look like for a ficticious user registration:
After using Laravel Pipelines to handle complex data flows in our projects we saw a few patterns emerge:
- Database transactions
- Pipe interface
- Responses and exception handling
This package adds niceties on top of the Laravel Pipeline and consolidates them into a single reusable location.
Looks very close to what we have in
dry-python/returns!https://github.com/zaengle/pipeline
A pipeline is a common pattern for breaking data, logic, and response/exceptions into three distinct elements. Zaengle Pipeline abstracts these parts into helpful classes and gives some structure to the underlying pattern. For example, let's explore at what a pipeline might look like for a ficticious user registration:
Foam is a personal knowledge management and sharing system, built on Visual Studio Code and GitHub.
You can use Foam for organising your research, keeping re-discoverable notes, writing long-form content and, optionally, publishing it to the web. Foam is extremely extensible to suit your personal workflow. You own the information you create with Foam, and you’re free to share it, and collaborate on it with anyone you want.
Features:
- The editing experience of Foam is powered by VS Code, enhanced by workspace settings that glue together Recommended Extensions and preferences optimised for writing and navigating information.
- To back up, collaborate on and share your content between devices, Foam pairs well with GitHub.
- To publish your content, you can set it up to publish to GitHub Pages with zero code and zero config, or to any website hosting platform like Netlify or Vercel.
https://foambubble.github.io/foam/
#ts #docops #vscode
You can use Foam for organising your research, keeping re-discoverable notes, writing long-form content and, optionally, publishing it to the web. Foam is extremely extensible to suit your personal workflow. You own the information you create with Foam, and you’re free to share it, and collaborate on it with anyone you want.
Features:
- The editing experience of Foam is powered by VS Code, enhanced by workspace settings that glue together Recommended Extensions and preferences optimised for writing and navigating information.
- To back up, collaborate on and share your content between devices, Foam pairs well with GitHub.
- To publish your content, you can set it up to publish to GitHub Pages with zero code and zero config, or to any website hosting platform like Netlify or Vercel.
https://foambubble.github.io/foam/
#ts #docops #vscode
Forwarded from Data Science by ODS.ai 🦜
Overview of Open Source projects growth metrics
Quantative analytics of top starred repositories.
Link: https://medium.com/runacapital/open-source-growth-benchmarks-and-the-20-fastest-growing-oss-startups-d3556a669fe6
#opensource #analytics #statistics #growth
Quantative analytics of top starred repositories.
Link: https://medium.com/runacapital/open-source-growth-benchmarks-and-the-20-fastest-growing-oss-startups-d3556a669fe6
#opensource #analytics #statistics #growth
A tool for making simple #python GUIs.
https://github.com/alfiopuglisi/guietta
Guietta is a tool that makes simple GUIs simple (turns this code):
Into this GUI:
https://github.com/alfiopuglisi/guietta
Guietta is a tool that makes simple GUIs simple (turns this code):
from guietta import _, Gui, Quit
gui = Gui(
[ 'Enter numbers:', '__a__' , '+' , '__b__', ['Calculate'] ],
[ 'Result: -->' , 'result' , _ , _ , _ ],
[ _ , _ , _ , _ , Quit ]
)
with gui.Calculate:
gui.result = float(gui.a) + float(gui.b)
gui.run()
Into this GUI:
Secretive is an app for storing and managing SSH keys in the Secure Enclave. It is inspired by the sekey project, but rewritten in Swift with no external dependencies and with a handy native management app.
- Safer Storage: The most common setup for SSH keys is just keeping them on disk, guarded by proper permissions. This is fine in most cases, but it's not super hard for malicious users or malware to copy your private key. If you store your keys in the Secure Enclave, it's impossible to export them, by design.
- Access Control: If your Mac has a Secure Enclave, it also has support for strong access controls like Touch ID, or authentication with Apple Watch. You can configure your key so that they require Touch ID (or Watch) authentication before they're accessed.
- Notifications: Secretive also notifies you whenever your keys are acceessed, so you're never caught off guard.
https://github.com/maxgoedjen/secretive
#swift #macos
- Safer Storage: The most common setup for SSH keys is just keeping them on disk, guarded by proper permissions. This is fine in most cases, but it's not super hard for malicious users or malware to copy your private key. If you store your keys in the Secure Enclave, it's impossible to export them, by design.
- Access Control: If your Mac has a Secure Enclave, it also has support for strong access controls like Touch ID, or authentication with Apple Watch. You can configure your key so that they require Touch ID (or Watch) authentication before they're accessed.
- Notifications: Secretive also notifies you whenever your keys are acceessed, so you're never caught off guard.
https://github.com/maxgoedjen/secretive
#swift #macos
ranger is a console file manager with VI key bindings.
It provides a minimalistic and nice curses interface with a view on the directory hierarchy. It ships with rifle, a file launcher that is good at automatically finding out which program to use for what file type.
For
https://ranger.github.io/
#python #shell
It provides a minimalistic and nice curses interface with a view on the directory hierarchy. It ships with rifle, a file launcher that is good at automatically finding out which program to use for what file type.
For
mc aficionados there's also the multi-pane viewmode.https://ranger.github.io/
#python #shell
Lightweight static analysis for many languages. Find bug variants with patterns that look like source code.
Semgrep is a command-line tool for offline static analysis. Use pre-built or custom rules to enforce code and security standards in your codebase. You can try it now with our interactive live editor.
Semgrep combines the convenient and iterative style of grep with the powerful features of an Abstract Syntax Tree (AST) matcher and limited dataflow. Easily find function calls, class or method definitions, and more without having to understand ASTs or wrestle with regexes.
Supports #python #js #go #java and #c
https://github.com/returntocorp/semgrep
Semgrep is a command-line tool for offline static analysis. Use pre-built or custom rules to enforce code and security standards in your codebase. You can try it now with our interactive live editor.
Semgrep combines the convenient and iterative style of grep with the powerful features of an Abstract Syntax Tree (AST) matcher and limited dataflow. Easily find function calls, class or method definitions, and more without having to understand ASTs or wrestle with regexes.
Supports #python #js #go #java and #c
https://github.com/returntocorp/semgrep
The greenlet package is a spin-off of Stackless, a version of CPython that supports micro-threads called tasklets. Tasklets run pseudo-concurrently (typically in a single or a few OS-level threads) and are synchronized with data exchanges on channels.
A greenlet, on the other hand, is a still more primitive notion of micro-thread with no implicit scheduling; coroutines, in other words. This is useful when you want to control exactly when your code runs. You can build custom scheduled micro-threads on top of greenlet; however, it seems that greenlets are useful on their own as a way to make advanced control flow structures. For example, we can recreate generators; the difference with Python's own generators is that our generators can call nested functions and the nested functions can yield values too. Additionally, you don't need a yield keyword.
Greenlets are provided as a C extension module for the regular unmodified interpreter.
https://greenlet.readthedocs.io/en/latest/
Demo with asyncio: https://gist.github.com/zzzeek/4e89ce6226826e7a8df13e1b573ad354
A greenlet, on the other hand, is a still more primitive notion of micro-thread with no implicit scheduling; coroutines, in other words. This is useful when you want to control exactly when your code runs. You can build custom scheduled micro-threads on top of greenlet; however, it seems that greenlets are useful on their own as a way to make advanced control flow structures. For example, we can recreate generators; the difference with Python's own generators is that our generators can call nested functions and the nested functions can yield values too. Additionally, you don't need a yield keyword.
Greenlets are provided as a C extension module for the regular unmodified interpreter.
https://greenlet.readthedocs.io/en/latest/
Demo with asyncio: https://gist.github.com/zzzeek/4e89ce6226826e7a8df13e1b573ad354
Numl (nude elements) unity of design and code.
Your code is your design system.
Markup language to create modern high-quality interfaces with any look.
Features:
- A single language to describe styles and behaviour of your app
- Numl is not bound to the framework and is based on modern web standards, and also uses code generation techniques, which allows you to use the most advanced technologies and practices, as well as update them, updating the design system, rather than rewriting your entire codebase
- Numl can be integrated with vue.js, react, angular, and svelte
- With Numl you will be able to create high-quality web interfaces with the power of a small team of frontend engineers with the middle level of expertise
https://numl.design/
#js #css
Your code is your design system.
Markup language to create modern high-quality interfaces with any look.
Features:
- A single language to describe styles and behaviour of your app
- Numl is not bound to the framework and is based on modern web standards, and also uses code generation techniques, which allows you to use the most advanced technologies and practices, as well as update them, updating the design system, rather than rewriting your entire codebase
- Numl can be integrated with vue.js, react, angular, and svelte
- With Numl you will be able to create high-quality web interfaces with the power of a small team of frontend engineers with the middle level of expertise
https://numl.design/
#js #css
Homebrew, but with #docker images.
Whalebrew creates aliases for Docker images so you can run them as if they were native commands. It's like Homebrew, but with Docker images.
Docker works well for packaging up development environments, but there are lots of tools that aren't tied to a particular project: awscli for managing your AWS account, ffmpeg for converting video, wget for downloading files, and so on. Whalebrew makes those things work with Docker, too.
https://github.com/whalebrew/whalebrew
#macos #devops
Whalebrew creates aliases for Docker images so you can run them as if they were native commands. It's like Homebrew, but with Docker images.
Docker works well for packaging up development environments, but there are lots of tools that aren't tied to a particular project: awscli for managing your AWS account, ffmpeg for converting video, wget for downloading files, and so on. Whalebrew makes those things work with Docker, too.
https://github.com/whalebrew/whalebrew
#macos #devops