Consolidate blog tags: 57 → 23 unique tags

- Fix case duplicates (guide→Guide, project→Project, etc.)
- Consolidate single-post tags into broader categories
- Add technology tags (Python, AWS, Salt, Docker, Kubernetes) to 93 posts
- Add lib/tag_stats.py tool for checking tag usage
- Update CLAUDE.md with tag guidelines
This commit is contained in:
russell@unturf.com 2026-01-26 09:09:53 -05:00
parent e9e643243c
commit 137d65cc65
113 changed files with 207 additions and 145 deletions

View file

@ -188,6 +188,23 @@ Russell Ballestrini
- Use `|` for vertical spacing before signature
- Links use RST inline syntax: ```link text <URL>`_``
## BLOG POST TAGS
**Check existing tags before writing posts:**
```bash
venv/bin/python lib/tag_stats.py # all tags with counts
venv/bin/python lib/tag_stats.py 5 # only tags with 5+ posts
```
**Core tags (use these):**
- Code, DevOps, Python, Guide, Opinion, Salt, AWS, Project, Docker, Security, Machine Learning, Game Development, Kubernetes
**Rules:**
- Always use existing tags when applicable
- Suggest new tags only if truly needed (new technology/topic area)
- Tags should be capitalized (e.g., "Python" not "python")
- Avoid single-use tags; consolidate into broader categories
## DATE HANDLING FOR NEW CONTENT
**CRITICAL: ALWAYS check the current date BEFORE creating ANY new documents**

View file

@ -3,7 +3,7 @@ The Barrymores stole my heart then crushed it
:date: 2010-11-30 04:37
:author: Russell Ballestrini
:tags: Music, Opinion
:tags: Opinion
:tags: Barrymores, music
:slug: the-barrymores-stole-my-heart-then-crushed-it
:status: published

View file

@ -2,7 +2,7 @@ four2go!: A new spin on an old classic
######################################
:date: 2010-12-31 20:33
:author: Russell Ballestrini
:tags: Project
:tags: Project, Python
:tags: four2go!, gumyum, programming, python
:slug: four2go-a-new-spin-on-an-old-classic
:status: published

View file

@ -3,7 +3,7 @@ A homegrown python bread crumb module
:date: 2011-01-02 14:14
:author: Russell Ballestrini
:tags: Code, Project
:tags: Code, Project, Python
:tags: bread, code, crumb, python
:slug: a-homegrown-python-bread-crumb-module
:status: published

View file

@ -2,7 +2,7 @@ virt-back: a python libvirt backup utility for kvm xen virtualbox
#################################################################
:date: 2011-03-20 11:32
:author: Russell Ballestrini
:tags: Code, DevOps, Greatest Hits, Guide, Project
:tags: Code, DevOps, Greatest Hits, Guide, Project, Python
:slug: virt-back-a-python-libvirt-backup-utility-for-kvm-xen-virtualbox
:status: published
:summary:

View file

@ -2,7 +2,7 @@ Google Bot Attempts to Crawl Shortest Urls First
################################################
:date: 2011-06-25 09:37
:author: Russell Ballestrini
:tags: Code, Greatest Hits, Opinion, Project
:tags: Code, Greatest Hits, Opinion, Project, Python
:slug: google-bot-attempts-to-crawl-shortest-urls-first
:status: published
:summary:

View file

@ -2,7 +2,7 @@ Add a Breadcrumb Subscriber to a Pyramid project using 4 simple steps
#####################################################################
:date: 2011-07-02 17:25
:author: Russell Ballestrini
:tags: Code, Guide
:tags: Code, Guide, Python
:slug: add-a-breadcrumb-subscriber-to-a-pyramid-project-using-4-simple-steps
:status: published
:summary:

View file

@ -2,7 +2,7 @@ The Great Gist Heist
####################
:date: 2011-08-07 02:30
:author: Russell Ballestrini
:tags: Code, Project
:tags: Code, Project, Python
:slug: the-great-gist-heist
:status: published
:summary:

View file

@ -2,7 +2,7 @@ Python Image Grabber pig.py
###########################
:date: 2011-08-22 18:48
:author: Russell Ballestrini
:tags: Code, Guide, Project
:tags: Code, Guide, Project, Python
:slug: python-image-grabber-pig-py
:status: published
:summary:

View file

@ -3,7 +3,7 @@ A system administrators guide to installing and maintaining multiple python envi
:date: 2011-09-08 19:28
:author: Russell Ballestrini
:tags: DevOps, Guide
:tags: DevOps, Guide, Python
:slug: a-system-administrators-guide-to-installing-and-maintaining-multiple-python-environments
:status: published

View file

@ -2,7 +2,7 @@ How to Incorporate Custom Configuration in a Pyramid Application
################################################################
:date: 2011-11-30 22:47
:author: Russell Ballestrini
:tags: Code, Guide
:tags: Code, Guide, Python
:slug: how-to-incorporate-custom-configuration-in-a-pyramid-application
:status: published

View file

@ -2,7 +2,7 @@ LinkPeek.com, webpage to image, was a by-product
################################################
:date: 2011-12-19 00:23
:author: Russell Ballestrini
:tags: LinkPeek, Opinion
:tags: LinkPeek, Opinion, Python
:slug: linkpeek-com-webpage-to-image-was-a-by-product
:status: published

View file

@ -2,7 +2,7 @@ Monoalphabetic Cipher and Inverse Written in Python
####################################################
:date: 2012-02-13 22:39
:author: Russell Ballestrini
:tags: Code, Security
:tags: Code, Security, Python
:slug: monoalphabetic-cipher-and-inverse-written-in-python
:status: published

View file

@ -2,7 +2,7 @@ Symmetric Encryption vs Public Key Encryption
#############################################
:date: 2012-02-13 17:25
:author: Russell Ballestrini
:tags: Security
:tags: Security, Python
:slug: symmetric-encryption-vs-public-key-encryption
:status: published

View file

@ -2,7 +2,7 @@ Why does a Hash provide better message integrity then an Internet checksum?
###########################################################################
:date: 2012-02-13 19:19
:author: Russell Ballestrini
:tags: Code, Security
:tags: Code, Security, Python, Salt
:slug: why-does-a-hash-provide-better-message-integrity-then-an-internet-checksum
:status: published

View file

@ -2,7 +2,7 @@ Block cipher lab
################
:date: 2012-02-14 01:36
:author: Russell Ballestrini
:tags: Code, Security
:tags: Code, Security, Python
:slug: block-cipher-lab
:status: published

View file

@ -2,7 +2,7 @@ Zenoss or Nagios monitoring of HTTPS using client certificate authentication
############################################################################
:date: 2012-02-26 19:21
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python
:slug: zenoss-or-nagios-monitoring-of-https-using-client-certificate-authentication
:status: published

View file

@ -2,7 +2,7 @@ What do you name your python virtualenv?
########################################
:date: 2012-03-07 21:42
:author: Russell Ballestrini
:tags: Opinion
:tags: Opinion, Python
:slug: what-do-you-name-your-python-virtualenv
:status: published

View file

@ -2,7 +2,7 @@ miniuri parser and ago human timedelta
######################################
:date: 2012-06-29 21:30
:author: Russell Ballestrini
:tags: Code, Project
:tags: Code, Project, Python
:slug: miniuri-parser-and-ago-human-timedelta
:status: published

View file

@ -2,7 +2,7 @@ The Pyramid community taught me the importance of test driven development
#########################################################################
:date: 2012-09-22 14:03
:author: Russell Ballestrini
:tags: Opinion
:tags: Opinion, Python
:slug: the-pyramid-community-taught-me-the-importance-of-test-driven-development
:status: published

View file

@ -2,7 +2,7 @@ Explaining cache with python
############################
:date: 2012-10-02 15:22
:author: Russell Ballestrini
:tags: Code, Greatest Hits
:tags: Code, Greatest Hits, Python
:slug: explaining-cache-with-python
:status: published

View file

@ -2,7 +2,7 @@ ago.py human readable timedelta 0.0.4 release
#############################################
:date: 2013-01-09 00:04
:author: Russell Ballestrini
:tags: Code
:tags: Code, Python
:slug: ago-py-human-readable-timedelta0-0-4-release
:status: published

View file

@ -2,7 +2,7 @@ How to overload default function arguments in python using lambda
#################################################################
:date: 2013-01-12 11:22
:author: Russell Ballestrini
:tags: Code, Greatest Hits, Guide
:tags: Code, Greatest Hits, Guide, Python, AWS
:slug: how-to-overload-default-function-arguments-in-python-using-lambda
:status: published

View file

@ -2,7 +2,7 @@ virt-back's Domfetcher class returns doms from libvirt API
##########################################################
:date: 2013-03-02 15:04
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python
:slug: virt-backs-domfetcher-class-returns-doms-from-libvirt-api
:status: published
:summary:

View file

@ -2,7 +2,7 @@ Guido name dropped tornado python tulip and pep-3156
#####################################################
:date: 2013-03-22 22:07
:author: Russell Ballestrini
:tags: Uncategorized
:tags: Uncategorized, Python
:slug: guido-name-dropped-tornado-python-tulip-and-pep-3156
:status: published

View file

@ -2,7 +2,7 @@ Honey! I just DELETED LinkPeek.com
###################################
:date: 2013-05-26 13:19
:author: Russell Ballestrini
:tags: DevOps, LinkPeek, Opinion
:tags: DevOps, LinkPeek, Opinion, Python
:slug: honey-i-just-deleted-linkpeek-com
:status: published

View file

@ -2,7 +2,7 @@ High load and CPU usage craftbukkit compared to vanilla minecraft
#################################################################
:date: 2013-06-20 23:35
:author: Russell Ballestrini
:tags: Opinion, Project
:tags: Opinion, Project, Salt
:slug: high-load-and-cpu-usage-craftbukkit-compared-to-vanilla-minecraft
:status: published

View file

@ -2,7 +2,7 @@ Add a custom header to all Salt managed files using pillar and jinja templates
##############################################################################
:date: 2013-07-01 14:11
:author: Russell Ballestrini
:tags: DevOps, Guide
:tags: DevOps, Guide, Salt
:slug: add-a-custom-header-to-all-salt-managed-files-using-pillar-and-jinja-templates
:status: published

View file

@ -2,7 +2,7 @@ Create your own fleet of servers with Digital Ocean and salt-cloud
##################################################################
:date: 2013-07-02 22:20
:author: Russell Ballestrini
:tags: DevOps, Guide
:tags: DevOps, Guide, Python, Salt
:slug: create-your-own-fleet-of-servers-with-digital-ocean-and-salt-cloud
:status: published

View file

@ -2,7 +2,7 @@ Understanding Salt Stack user and group management
##################################################
:date: 2013-07-08 13:51
:author: Russell Ballestrini
:tags: DevOps, Guide
:tags: DevOps, Guide, Salt
:slug: understanding-salt-stack-user-and-group-management
:status: published

View file

@ -2,7 +2,7 @@ Configuration Management vs Remote Execution
############################################
:date: 2013-07-11 23:15
:author: Russell Ballestrini
:tags: DevOps, Greatest Hits, Opinion
:tags: DevOps, Greatest Hits, Opinion, Python, Salt
:slug: configuration-management-vs-remote-execution
:status: published
:summary:

View file

@ -2,7 +2,7 @@ Control a MongoDB collection in configuration management
########################################################
:date: 2013-10-14 21:39
:author: Russell Ballestrini
:tags: DevOps, Guide
:tags: DevOps, Guide, Salt
:slug: control-a-mongodb-collection-in-configuration-management
:status: published

View file

@ -2,7 +2,7 @@ Postfix Salt State Formula
##########################
:date: 2013-10-17 21:28
:author: Russell Ballestrini
:tags: DevOps, Guide
:tags: DevOps, Guide, Salt
:slug: postfix-salt-state-formula
:status: published
:summary:

View file

@ -2,7 +2,7 @@ Simplify deployments with Upstart and uWSGI
###########################################
:date: 2013-10-19 22:35
:author: Russell Ballestrini
:tags: DevOps, Opinion
:tags: DevOps, Opinion, Python
:slug: simplify-deployments-with-upstart-and-uwsgi
:status: published

View file

@ -2,7 +2,7 @@ Hackathon 2013 Virtualization
#############################
:date: 2013-12-13 20:56
:author: Russell Ballestrini
:tags: Project
:tags: Project, Python, Salt, Docker
:slug: hackathon-2013-virtualization
:status: published

View file

@ -2,7 +2,7 @@ sensu-salt
###########
:date: 2013-12-17 11:35
:author: Russell Ballestrini
:tags: DevOps, Guide
:tags: DevOps, Guide, Salt
:slug: sensu-salt
:status: published

View file

@ -2,7 +2,7 @@ Test Game Engine with Python and SFML
#####################################
:date: 2014-01-02 00:30
:author: Russell Ballestrini
:tags: Art, Code
:tags: Art, Code, Python
:slug: test-game-engine-with-python-and-sfml
:status: published

View file

@ -2,7 +2,7 @@ Automatic Backups
#################
:date: 2014-02-07 17:14
:author: Russell Ballestrini
:tags: Code, DevOps, Greatest Hits
:tags: Code, DevOps, Greatest Hits, Python
:slug: automatic-backups
:status: published
:summary: My tools for creating automatic backups for various systems

View file

@ -2,7 +2,7 @@ tar-back
########
:date: 2014-02-07 16:49
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python
:slug: tar-back
:status: published

View file

@ -2,7 +2,7 @@ Configuration Management and the Golden Image
#############################################
:date: 2014-02-21 17:19
:author: Russell Ballestrini
:tags: DevOps, Greatest Hits, Opinion
:tags: DevOps, Greatest Hits, Opinion, AWS, Salt, Docker
:slug: configuration-management-and-the-golden-image
:status: published

View file

@ -2,7 +2,7 @@ Replace the Nagios Scheduler and NRPE with Salt Stack
#####################################################
:date: 2014-03-08 15:53
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python, Salt
:slug: replace-the-nagios-scheduler-and-nrpe-with-salt-stack
:status: published

View file

@ -2,7 +2,7 @@ Filter Salt Stack Return Data Output
####################################
:date: 2014-03-13 18:21
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python, Salt
:slug: filter-salt-stack-return-data-output
:status: published

View file

@ -2,7 +2,7 @@ IRC Bot (Foxbot) runs canned remote executions using Salt Stack
###############################################################
:date: 2014-03-15 16:33
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Salt
:slug: irc-bot-foxbot-runs-canned-remote-executions-using-salt-stack
:status: published

View file

@ -2,7 +2,7 @@ How to patch Heartbleed OpenSSL defect (libssl) on Ubuntu
##########################################################
:date: 2014-04-08 22:42
:author: Russell Ballestrini
:tags: Guide, Security
:tags: Guide, Security, Salt
:slug: how-to-patch-heartbleed-openssl-defect-libssl-on-ubuntu
:status: published

View file

@ -2,7 +2,7 @@ Nginx with SSL and mixed content errors with upstream WSGI servers
##################################################################
:date: 2014-05-08 16:28
:author: Russell Ballestrini
:tags: Code, Guide
:tags: Code, Guide, Python
:slug: nginx-with-ssl-and-mixed-content-errors-with-upstream-wsgi-servers
:status: published

View file

@ -2,7 +2,7 @@ You can hack on FreeNAS 9
#########################
:date: 2014-05-15 01:06
:author: Russell Ballestrini
:tags: Code
:tags: Code, Python
:slug: you-can-hack-on-freenas-9
:status: published

View file

@ -2,7 +2,7 @@ Mailpile Salt States for Ubuntu or Debian
#########################################
:date: 2014-08-15 20:32
:author: Russell Ballestrini
:tags: DevOps
:tags: DevOps, Python, Salt
:slug: mailpile-salt-states-for-ubuntu-or-debian
:status: published

View file

@ -2,7 +2,7 @@ Heka, World2!
#############
:date: 2014-08-23 22:54
:author: Russell Ballestrini
:tags: DevOps, Guide
:tags: DevOps, Guide, Python
:slug: heka-world2
:status: published

View file

@ -2,7 +2,7 @@ Set Root Password SmartOS Percona MySQL Zone
############################################
:date: 2014-10-11 00:12
:author: Russell Ballestrini
:tags: DevOps, Guide
:tags: DevOps, Guide, Salt
:slug: set-root-password-smartos-percona-mysql-zone
:status: published

View file

@ -2,7 +2,7 @@ Turn python dict into a key=value string and back again
#######################################################
:date: 2014-11-09 22:02
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python, AWS
:slug: turn-python-dict-into-a-keyvalue-string
:status: published

View file

@ -2,7 +2,7 @@ Dealing with pagination in Python
#################################
:date: 2014-11-13 21:06
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python, AWS
:slug: dealing-with-pagination-in-python
:status: published

View file

@ -2,7 +2,7 @@ Build release pipelines on S3 with s3p
######################################
:date: 2014-11-24 14:39
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python, AWS
:slug: build-release-pipelines-on-s3-with-s3p
:status: published

View file

@ -2,7 +2,7 @@ Securely publish Jenkins build artifacts on Salt Master
#######################################################
:date: 2015-02-22 12:39
:author: Russell Ballestrini
:tags: DevOps, Guide
:tags: DevOps, Guide, Salt
:slug: securely-publish-jenkins-build-artifacts-on-salt-master
:status: published
:summary:

View file

@ -2,7 +2,7 @@ Setting region programmatically in Boto3
########################################
:date: 2015-04-24 14:07
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python, AWS
:slug: setting-region-programmatically-in-boto3
:status: published
:summary:

View file

@ -2,7 +2,7 @@ A Python script which searches for available interpreters
#########################################################
:date: 2015-05-08 10:34
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python
:slug: a-python-script-which-searches-for-available-interpreters
:status: published
:summary:

View file

@ -2,7 +2,7 @@ Working with botocore's ~/.aws/config
#####################################
:date: 2015-07-01 18:14
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, AWS
:slug: working-with-botocores-awsconfig
:status: published
:summary:

View file

@ -2,7 +2,7 @@ Filtering AWS resources with Boto3
##################################
:date: 2015-07-02 17:03
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, AWS
:slug: filtering-aws-resources-with-boto3
:status: published
:summary:

View file

@ -3,7 +3,7 @@ List all installed package names in Python
:date: 2015-07-04 22:15
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python, AWS
:slug: list-all-installed-package-names-in-python
:status: published
:summary:

View file

@ -2,7 +2,7 @@ Boto3 get main route table
##########################
:date: 2015-10-16 12:15
:author: Russell Ballestrini
:tags: Code, DevOps
:tags: Code, DevOps, Python, AWS
:slug: boto3-get-main-route-table
:status: published
:summary:

View file

@ -4,7 +4,7 @@ Bind9 on Joyent Triton
:author: Russell Ballestrini
:slug: bind9-on-joyent-triton
:date: 2015-11-29 18:47
:tags: Operations
:tags: DevOps, Docker
:status: published
:summary:
Tricks to reduce Bind9's large memory footprint on Joyent Triton.

View file

@ -4,7 +4,7 @@ Set DNS resolver options
:author: Russell Ballestrini
:slug: set-dns-resolver-options
:date: 2015-12-16 10:17
:tags: Operations, Guide
:tags: DevOps, Guide
:status: published
:summary:
The right way to persist resolver options across many Linux distributions.

View file

@ -4,7 +4,7 @@ Output all instance identifiers of an AWS VPC to JSON
:author: Russell Ballestrini
:slug: output-all-instance-identifiers-of-an-aws-vpc-to-json
:date: 2016-06-21 10:25
:tags: Code, DevOps
:tags: Code, DevOps, AWS
:status: published
At work today I needed an easy way to collect private IP addresses of every instance in one of our production VPCs.

View file

@ -4,7 +4,7 @@ Set static hostname for RHEL Centos 7 on AWS
:author: Russell Ballestrini
:slug: set-static-hostname-for-rhel-centos-7-on-aws
:date: 2016-09-06 11:18
:tags: Code, DevOps
:tags: Code, DevOps, AWS
:status: published
This took me about 2 hours to figure out, hopefully it saves you time.

View file

@ -4,7 +4,7 @@ Sharing a Pyramid cookie with Flask or Tornado
:author: Russell Ballestrini
:slug: sharing-a-pyramid-cookie-with-flask-or-tornado
:date: 2016-11-21 18:35
:tags: Code
:tags: Code, Python, Salt
:status: published
Do you have a Pyramid application which authenticates users and uses a signed cookie as a session?

View file

@ -4,7 +4,7 @@ Register Super Powers with Pyramid add_request_method
:author: Russell Ballestrini
:slug: register-super-powers-with-pyramid-add-request-method
:date: 2016-11-24 15:30
:tags: Code, DevOps
:tags: Code, DevOps, Python
:status: published
The Pyramid web application framework uses a request object to hold state regarding an inbound HTTP connection.

View file

@ -4,7 +4,7 @@ Build RPM or DEB packages for Node.js using Jenkins and FPM
:author: Russell Ballestrini
:slug: rpm-deb-packages-for-nodejs-using-jenkins-and-fpm
:date: 2016-12-01 15:30
:tags: Code, DevOps
:tags: Code, DevOps, Python, AWS
:status: published
This blog post assumes you already have:

View file

@ -3,7 +3,7 @@ Minikube
:date: 2017-03-21 12:38
:author: Russell Ballestrini
:tags: Guide, Kubernetes
:tags: Guide, Kubernetes, Docker
:slug: minikube
:status: published

View file

@ -4,7 +4,7 @@ Selenium grid on Kubernetes
:author: Russell Ballestrini
:slug: selenium-grid-on-kubernetes
:date: 2017-03-23 16:48
:tags: Code, DevOps
:tags: Code, DevOps, Docker, Kubernetes
:status: published
This post continues from where we left off on

View file

@ -4,7 +4,7 @@ webwords: a minimal viable web app with docker in as many languages as possible
:author: Russell Ballestrini
:slug: webwords-is-a-minimal-viable-web-app-with-docker-in-as-many-languages-as-possible
:date: 2017-10-24 12:11
:tags: Code, DevOps
:tags: Code, DevOps, Python, Docker
:status: published
**The companion** `webwords git repo <https://github.com/russellballestrini/webwords>`_ **lives here.**

View file

@ -4,7 +4,7 @@ How-to Work From Home
:author: Russell Ballestrini
:slug: how-to-work-from-home-the-road-to-remote-chapter-1
:date: 2017-11-09 09:51
:tags: guide
:tags: Guide, Python
:status: published
"I work from home" — a phrase I have uttered hundreds of times and is often met with instant amazement, envy, or jokes about pants. My goal for this book is to teach you the hacks I have learned in my career to help you land your dream job. If you feel stuck in the job market and you don't want to relocate, this is the book for you.

View file

@ -4,7 +4,7 @@ Fulfilling Childhood Dreams: Solar
:author: Russell Ballestrini
:slug: fulfilling-childhood-dreams-solar
:date: 2018-03-16 08:03
:tags: Solar, Project
:tags: Solar, Project, Python
:status: published
Ever since I was an 8 year old boy I have wanted solar. I remember reading about the environment and alternative energy sources in a monthly "socal studies" flyer my school subscribed our classroom to. I questioned, even at my young age, why the world wasn't actively switching over to solar, water, and wind!

View file

@ -4,7 +4,7 @@ Quickstart to DKIM Sign Email with Python
:author: Russell Ballestrini
:slug: quickstart-to-dkim-sign-email-with-python
:date: 2018-06-04 09:03
:tags: Code
:tags: Code, Python
:status: published
For a long time I have put off DKIM signing email sent from my web services because I couldn't wrap my head around all the indirection Postfix requires to make it work.

View file

@ -4,7 +4,7 @@ Pyramid SQLAlchemy bootstrap console script with transaction.manager
:author: Russell Ballestrini
:slug: pyramid-sqlalchemy-bootstrap-console-script-with-transaction-manager
:date: 2018-06-15 10:54
:tags: Code
:tags: Code, Python
:status: published
So I've struggled for a while with the best way to properly setup a console script for my SQLAlchemy Pyramid apps.

View file

@ -4,7 +4,7 @@ Running DynamoDB Local service container on CircleCI 2.0
:author: Russell Ballestrini
:slug: running-dynamodb-local-service-container-on-circleci-2
:date: 2018-07-18 11:56
:tags: Code, DevOps
:tags: Code, DevOps, AWS, Docker
:status: published
**tl;dr** use a custom entrypoint in your CircleCI 2.0 config to limit Java memory to 1G.

View file

@ -4,7 +4,7 @@ All Local Heros need a Gig Side Kick
:author: Russell Ballestrini
:slug: all-local-heros-need-a-gig-side-kick
:date: 2018-08-03 11:20
:tags: bootstrapping
:tags: Project
:status: published
Five months ago during my preparation and ramp up to gardening season, I started thinking about what it would be like to have a partner, a side kick, a secretary to keep me honest and on task.

View file

@ -4,7 +4,7 @@ Yuletide Trains and Homegrown Video Games
:author: Russell Ballestrini
:slug: yuletide-trains-and-homegrown-video-games
:date: 2018-12-25 17:15
:tags: Code, Games
:tags: Code, Games, Python
:status: published
.. image:: /uploads/2018/pixel-art-gift.png

View file

@ -4,7 +4,7 @@ AWS nvme to block mapping
:author: Russell Ballestrini
:slug: aws-nvme-to-block-mapping
:date: 2019-01-19 14:50
:tags: Code, DevOps
:tags: Code, DevOps, Python, AWS
:status: published
Recently at work I transitioned our fleet from Ubuntu 14.04 LTS to Ubuntu 18.04 LTS. During the process I noticed an issue with our newer generation AWS EC2 "nitro" based instance types (specifically ``c5.2xlarge``).

View file

@ -4,7 +4,7 @@ Hybrid Hot Water Heater Saves 69 Percent On Energy Consumption
:author: Russell Ballestrini
:slug: hybrid-hot-water-heater-saves-69-percent-on-energy-consumption
:date: 2019-02-05 09:28
:tags: solar, project
:tags: Solar, Project
:status: published
*Disclosure: This post contains affiliate links.* See `full disclosure page here </disclosures-and-terms/>`_.

View file

@ -4,7 +4,7 @@ Pre-signed GET and POST for Digital Ocean Spaces
:author: Russell Ballestrini
:slug: pre-signed-get-and-post-for-digital-ocean-spaces
:date: 2019-07-12 16:01
:tags: Code, DevOps
:tags: Code, DevOps, Python, AWS
:status: published
A pre-signed request grants a semi-trusted user temporary access to a private resource.

View file

@ -4,7 +4,7 @@ Installing Unity on Linux
:author: Russell Ballestrini
:slug: installing-unity-on-linux
:date: 2019-09-25 18:55
:tags: Code, Games, gumyum
:tags: Code, Games, Project
:status: published
Russell, why are you installing Unity? I thought you were an open source developer and `homegrown video game engine builder </yuletide-trains-and-homegrown-video-games/>`_?!

View file

@ -4,7 +4,7 @@ Unity Collab not working on Fedora because of an invalid CA certificate path
:author: Russell Ballestrini
:slug: unity-collab-not-working-on-fedora-because-of-invalid-ca-certificate-path
:date: 2019-11-08 12:19
:tags: Code, Games, gumyum
:tags: Code, Games, Project
:status: published
This issue blocked me for about two days and prevented me from collaborating with another engineer at `gumyum co-operative video game studio <https://www.gumyum.com>`_.

View file

@ -4,7 +4,7 @@ Dreaming of unlimited home computer storage capacity
:author: Russell Ballestrini
:slug: dreaming-of-unlimited-home-computer-storage-capacity
:date: 2019-12-15 09:52
:tags: Idea
:tags: Opinion, DevOps
:status: published
Unlimited computer storage capacity is a common science fiction trope and fun thought experiment.

View file

@ -4,7 +4,7 @@ WeeChat on-boot in a tmux session
:author: Russell Ballestrini
:slug: weechat-on-boot-in-a-tmux-session
:date: 2020-09-15 13:32
:tags: automation
:tags: Automation, Salt
:status: published
Chronicles of a washed up systems administrator.

View file

@ -4,7 +4,7 @@ I tried to install GitLab on TrueNAS and failed
:author: Russell Ballestrini
:slug: i-tried-to-install-gitlab-on-truenas-and-failed
:date: 2020-10-25 14:28
:tags: Code, DevOps
:tags: Code, DevOps, Docker
:status: published
Ok, so a month ago I changed employment and the new company uses GitLab exclusively for centralized code version control system.

View file

@ -4,7 +4,7 @@ Copying files between cloud object stores like S3 GCP and Spaces using Boto3
:author: Russell Ballestrini
:slug: copying-files-between-cloud-object-stores-like-s3-gcp-and-spaces-using-boto3
:date: 2021-05-12 18:50
:tags: Code, DevOps
:tags: Code, DevOps, Python, AWS
:status: published
tl;dr if you just want something like ``aws s3 cp`` cli, try ``gsutil rsync``.

View file

@ -4,7 +4,7 @@ GNUnet GNS Nameserver Operator Notes, Quickstart, & Cheatsheet
:author: Russell Ballestrini
:slug: gnunet-gns-nameserver-operator-notes-quickstart-cheatsheet
:date: 2021-12-03 18:21
:tags: Code, DevOps
:tags: Code, DevOps, Docker
:status: published
We GROW with Truth, Freedom, Love.

View file

@ -4,7 +4,7 @@ Russell Open Sources Remarkbox & MakePostSell into Public Domain!
:author: Russell Ballestrini
:slug: russell-open-sources-remarkbox-and-make-post-sell-into-public-domain
:date: 2021-12-23 12:08
:tags: unturf.
:tags: Project, Python, AWS
:status: published
.. image:: /uploads/2018/pixel-art-yuletide-tree.gif

View file

@ -4,7 +4,7 @@ Vertically Scaling GitLab Server For As Cheap As Possible
:author: Russell Ballestrini
:slug: vertically-scaling-gitlab-server-for-as-cheap-as-possible
:date: 2022-01-05 19:13
:tags: Code, DevOps
:tags: Code, DevOps, Salt, Docker
:status: published
Today's essay acts as a power-up love story for the underdog.

View file

@ -4,7 +4,7 @@ Uncle Drops off server with note asking u to cl0ne ubuntu22 kvm
:author: Russell Ballestrini
:slug: uncle-drops-off-server-with-note-asking-u-to-cl0ne-ubuntu22-kvm
:date: 2022-05-09 13:14
:tags: Code, DevOps
:tags: Code, DevOps, Salt
:status: published
Imagine your uncle just dropped off a TrueNAS Core server with root credentials, & a preconfigured IP Address in the subnet space of 192.168.1.1/24.

View file

@ -4,7 +4,7 @@ Ubuntu 22.04 Letsencrypt Docker Hints
:author: Russell Ballestrini
:slug: ubuntu-22-04-letsencrypt-docker-hints
:date: 2022-05-20 20:10
:tags: Code, DevOps
:tags: Code, DevOps, Salt, Docker
:status: published
letsencrypt certbot is now installable via snap (the deb apt repository is no longer maintained).

View file

@ -3,7 +3,7 @@ Building 'Dry' and 'Park' from Source on Fedora Linux
:date: 2024-02-03 09:19
:author: Russell Ballestrini
:tags: Programming, Game Development, Fedora, Dry, Park
:tags: Programming, Game Development, DevOps
:slug: building-dry-and-park-from-source-on-fedora-linux
:status: published
:summary: Learn how to compile the 'Dry' game engine and the 'Park' game from source on Fedora Linux with debugging enabled, and how to analyze core dumps for debugging.

View file

@ -4,7 +4,7 @@ Optimizing Memory Management for Plausible Docker on Ubuntu
:author: Russell Ballestrini
:slug: optimizing-memory-management-for-plausible-docker-on-ubuntu
:date: 2024-02-05 17:40
:tags: Docker, Ubuntu
:tags: Docker, DevOps, Salt
:status: published
Running Docker containers on a server with limited memory can lead to out-of-memory (OOM) issues, which can disrupt services and lead to downtime. This guide will show you how to increase swap space on an Ubuntu server to provide a buffer against OOM errors, using a real-world example from a server running multiple Docker containers.

View file

@ -4,7 +4,7 @@ Understanding Pause Functionality in LucKey Park Built on Dry Engine
:author: Russell Ballestrini
:slug: understanding-pause-functionality-in-luckey-park-game
:date: 2024-02-05 08:57
:tags: Programming, Game Development, Dry, Park
:tags: Programming, Game Development
:status: published
:summary: Dive deep into the pause functionality of LucKey Park built on the Dry engine, exploring how the game's status is managed and toggled end-to-end.

View file

@ -4,10 +4,10 @@ Integrating OpenAI with Dry's Sample Chat Game
:author: Russell Ballestrini
:slug: integrating-openai-with-dry-sample-chat-game
:date: 2024-02-17 14:11
:tags: C++, OpenAI, Dry, Chatbot
:tags: Code, Machine Learning, Game Development
:status: published
This tutorial demonstrates enhancing `Dry's Sample Chat Game <https://gitlab.com/luckeyproductions/dry/-/blob/master/Source/Samples/16_Chat/Chat.cpp>`_ by integrating OpenAI's language models, enabling the game to provide intelligent, AI-driven responses to user queries. Dry, the successor to Urho3D, offers a comprehensive framework for developing 2D and 3D games. Leveraging LLMs within the Dry engine opens up new possibilities.
This tutorial demonstrates enhancing `Dry's Sample Chat Game <https://gitlab.com/luckeyproductions/dry/-/blob/master/Source/Samples/16_Chat/Chat.cpp>`_ by integrating OpenAI's language models, enabling the game to provide intelligent, Machine Learning-driven responses to user queries. Dry, the successor to Urho3D, offers a comprehensive framework for developing 2D and 3D games. Leveraging LLMs within the Dry engine opens up new possibilities.
Background
----------
@ -212,7 +212,7 @@ That means you need to run ``./bin/16_Chat`` at least twice in two different win
What's Next?
------------
You've now integrated OpenAI into Dry's Sample Chat game, enhancing it with AI-driven conversational capabilities. Explore further by customizing triggers, integrating other models using the same OpenAI client, or expanding the game's features.
You've now integrated OpenAI into Dry's Sample Chat game, enhancing it with Machine Learning-driven conversational capabilities. Explore further by customizing triggers, integrating other models using the same OpenAI client, or expanding the game's features.
I think personally I will try to get the client communicating with vllm likely running openchat.

View file

@ -4,7 +4,7 @@ Comparing Node.js and Python Performance with the Official OpenAI Client
:author: Russell Ballestrini
:slug: comparing-nodejs-and-python-performance-with-openai-client
:date: 2024-05-28 08:49
:tags: Node.js, Python, OpenAI, Performance
:tags: Code, Python, Machine Learning, Performance
:status: published
@ -13,7 +13,7 @@ As a seasoned Python developer, I've always appreciated the versatility and powe
Background
----------
At `CourseMojo, we are scaling an AI assistant teacher for public schools <https://coursemojo.com/>`_ which provides real-time, intelligent responses to students' answers to open ended questions. During our load testing in my sandbox environment, we identified that heavy CPU utilization was primarily due to calls to the OpenAI API. This prompted me to explore different programming languages to see if the problem existed elsewhere.
At `CourseMojo, we are scaling an Machine Learning assistant teacher for public schools <https://coursemojo.com/>`_ which provides real-time, intelligent responses to students' answers to open ended questions. During our load testing in my sandbox environment, we identified that heavy CPU utilization was primarily due to calls to the OpenAI API. This prompted me to explore different programming languages to see if the problem existed elsewhere.
The Experiment
--------------

View file

@ -4,7 +4,7 @@ Comparing Elixir and Phoenix Performance with a Community-Driven OpenAI Client
:author: Russell Ballestrini
:slug: comparing-elixir-and-phoenix-performance-with-openai-client
:date: 2024-08-30 17:26
:tags: Code, elixir
:tags: Code
:status: published
As a developer exploring the capabilities of Elixir and Phoenix, I recently conducted a performance experiment using a community-driven OpenAI client. The goal was to evaluate how well Elixir, with its powerful concurrency model, handles high-volume API requests. The results were impressive, demonstrating Elixir's efficiency and robustness in managing concurrent tasks across multiple CPU cores.

View file

@ -4,7 +4,7 @@ Efficient Battleship Board Generation and Data Management with Python
:author: Russell Ballestrini
:slug: exploring-battleship-board-generation
:date: 2024-09-14 16:49
:tags: Code, Python, Parallel Processing, AI
:tags: Code, Python, Machine Learning
:status: published
Important: In my research so far, nobody seems to have a definite answer for how many unique non-overlapping battleship configurations there truely are...
@ -176,7 +176,7 @@ The complete dataset for 30,000,000,000 game boards, stored as a JSONL file, is
Artifact Description
---------------------
The JSONL file containing the complete dataset is a valuable artifact for researchers and developers interested in large-scale data analysis or machine learning applications. With sufficient storage space, this dataset can be used to explore various strategies for ship placement, analyze patterns, or train models for game AI development. The ability to sample from the dataset without full extraction further enhances its utility, allowing users to work with manageable subsets of data.
The JSONL file containing the complete dataset is a valuable artifact for researchers and developers interested in large-scale data analysis or machine learning applications. With sufficient storage space, this dataset can be used to explore various strategies for ship placement, analyze patterns, or train models for game Machine Learning development. The ability to sample from the dataset without full extraction further enhances its utility, allowing users to work with manageable subsets of data.
Results
-------
@ -208,13 +208,13 @@ This experiment demonstrated the power of parallel processing in Python for gene
If you're interested in exploring similar problems or optimizing computational tasks, consider using Python's multiprocessing capabilities to maximize performance and efficiency.
This post was inspired by a conversation with an AI assistant, highlighting the potential of AI in guiding and enhancing problem-solving processes.
This post was inspired by a conversation with an Machine Learning assistant, highlighting the potential of Machine Learning in guiding and enhancing problem-solving processes.
Full conversation here:
* `efficient-battleship-board-generation-data-management-python.json </uploads/2024/battleship-solvers/efficient-battleship-board-generation-data-management-python.json>`_
See `flask-socketio-llm-completions <https://github.com/russellballestrini/flask-socketio-llm-completions>`_ for more AI tooling!
See `flask-socketio-llm-completions <https://github.com/russellballestrini/flask-socketio-llm-completions>`_ for more Machine Learning tooling!
.. contents::

View file

@ -1,19 +1,19 @@
Free Hermes AI ai.unturf.com & uncloseai.js
Free Hermes Machine Learning ai.unturf.com & uncloseai.js
################################################################
:author: Russell Ballestrini
:slug: free-hermes-ai-unturf-com-uncloseai
:date: 2024-10-21 20:52
:tags: Code, DevOps, AI
:tags: Code, DevOps, Machine Learning, Python
:status: published
Hey all I created `ai.unturf.com <https://ai.unturf.com>`_ and `uncloseai.js <https://uncloseai.com/uncloseai.js>`_ over the past two weeks & this post introduces them to make AI more accessible to everyone.
Hey all I created `ai.unturf.com <https://ai.unturf.com>`_ and `uncloseai.js <https://uncloseai.com/uncloseai.js>`_ over the past two weeks & this post introduces them to make Machine Learning more accessible to everyone.
The AI service is powered by the model Nous Research's `adamo1139/Hermes-3-Llama-3.1-8B-FP8-Dynamic <https://nousresearch.com/hermes3/">`_. Our mission is to provide accessible AI tools for everyone, embodying the principles of both free as in beer & free as in freedom. You can interact with our model without any cost, and we encourage to contributions and building upon the open-source code & models.
The Machine Learning service is powered by the model Nous Research's `adamo1139/Hermes-3-Llama-3.1-8B-FP8-Dynamic <https://nousresearch.com/hermes3/">`_. Our mission is to provide accessible Machine Learning tools for everyone, embodying the principles of both free as in beer & free as in freedom. You can interact with our model without any cost, and we encourage to contributions and building upon the open-source code & models.
One of the key features of ai.unturf.com is its compatibility with various programming languages. We provide examples in Python and Node.js, allowing developers to easily integrate our AI service into their applications. Moreover, we offer a web-client only solution using uncloseai.js, which enables static sites or CDNs hosting HTML content to interact with AI services directly from the browser without the need for an intermediary server/client. This approach eliminates the requirement for a valid API key, making it an efficient and accessible option for thin clients often on battery.
One of the key features of ai.unturf.com is its compatibility with various programming languages. We provide examples in Python and Node.js, allowing developers to easily integrate our Machine Learning service into their applications. Moreover, we offer a web-client only solution using uncloseai.js, which enables static sites or CDNs hosting HTML content to interact with Machine Learning services directly from the browser without the need for an intermediary server/client. This approach eliminates the requirement for a valid API key, making it an efficient and accessible option for thin clients often on battery.
To demonstrate the ease of use of our AI service, here is a cURL example:
To demonstrate the ease of use of our Machine Learning service, here is a cURL example:
.. code-block:: bash
@ -26,9 +26,9 @@ To demonstrate the ease of use of our AI service, here is a cURL example:
Also the coolest part is we found that because we don't require a valid API key, a tiny bit of javascript goes a long way to create a web client-only solution which is great for static sites and CDNs.
In this demo architecture, the browser serves as the client, directly interacting with the AI service without the need for an intermediary server/client.
In this demo architecture, the browser serves as the client, directly interacting with the Machine Learning service without the need for an intermediary server/client.
By using uncloseai.js, developers can create thin clients on battery-powered devices, making AI more accessible and efficient.
By using uncloseai.js, developers can create thin clients on battery-powered devices, making Machine Learning more accessible and efficient.
Here is the HTML we needed to add to _this_ site, to make it work:
@ -36,9 +36,9 @@ Here is the HTML we needed to add to _this_ site, to make it work:
<script src="https://uncloseai.com/uncloseai.js" type="module"></script>
That's it! This single line provides a floating AI assistant button with page-aware contextual help, text-to-speech functionality, translation capabilities, conversation history storage, and compatibility with any CSS framework.
That's it! This single line provides a floating Machine Learning assistant button with page-aware contextual help, text-to-speech functionality, translation capabilities, conversation history storage, and compatibility with any CSS framework.
I invite you to explore the service for yourself. Consider using it as is or building your own app/client. Let's make AI more accessible and create a world where everyone can benefit from its power.
I invite you to explore the service for yourself. Consider using it as is or building your own app/client. Let's make Machine Learning more accessible and create a world where everyone can benefit from its power.
Before you go, if you want to try it out live on this static site, `click here <#uncloseai-example>`_ and and ask a question about the post. it knows how to code. : )

View file

@ -4,17 +4,17 @@ Free LLM Endpoints & Dynamic Distributed Model Inference Client with UncloseAI.j
:author: Russell Ballestrini
:slug: free-llm-endpoints-dynamic-distributed-model-inference-client-uncloseai
:date: 2025-02-19 21:28
:tags: Code, DevOps, AI
:tags: Code, DevOps, Machine Learning, Python
:status: published
.. note::
This post is a follow-up to our `original post published on 2024-10-21 </free-hermes-ai-unturf-com-uncloseai/>`_. Over the last few months, we've partnered with **TDC** - `the disruptive collective <https://matrix.to/#/#disruptive-collective:matrix.org>`_ to make cutting-edge AI models accessible from any device, via our always available model servers to our new bot's for discord, matrix, & web!
This post is a follow-up to our `original post published on 2024-10-21 </free-hermes-ai-unturf-com-uncloseai/>`_. Over the last few months, we've partnered with **TDC** - `the disruptive collective <https://matrix.to/#/#disruptive-collective:matrix.org>`_ to make cutting-edge Machine Learning models accessible from any device, via our always available model servers to our new bot's for discord, matrix, & web!
Overview
--------
Weve been pushing the boundaries of accessible AI. We built `ai.unturf.com <https://ai.unturf.com>`_ and `uncloseai.js <hhttps://git.unturf.com/engineering/unturf/ai.unturf.com/-/blob/master/uncloseai.js>`_ to provide you with free, state-of-the-art AI tools that are as *free as in beer* and as *free as in freedom*. A huge shout out to **TDC** for powering all the development work on the various bots on the telegram, discord, & matrix platforms!
Weve been pushing the boundaries of accessible Machine Learning. We built `ai.unturf.com <https://ai.unturf.com>`_ and `uncloseai.js <hhttps://git.unturf.com/engineering/unturf/ai.unturf.com/-/blob/master/uncloseai.js>`_ to provide you with free, state-of-the-art Machine Learning tools that are as *free as in beer* and as *free as in freedom*. A huge shout out to **TDC** for powering all the development work on the various bots on the telegram, discord, & matrix platforms!
Dynamic Model & Endpoint Discovery
------------------------------------
@ -58,7 +58,7 @@ Below is a quick cURL example for interacting with our new `adamo1139/Hermes-3-L
Integration Made Easy
---------------------
Our service supports any programming language. With client libraries available for Python and Node.js—and a web-client-only solution via `uncloseai.js`—integrating AI into your application or website has never been easier. Try to use the default openai client oin your native language.
Our service supports any programming language. With client libraries available for Python and Node.js—and a web-client-only solution via `uncloseai.js`—integrating Machine Learning into your application or website has never been easier. Try to use the default openai client oin your native language.
The browser-based integration is ideal for static sites or CDNs, eliminating the need for a dedicated backend server or API key.
@ -68,7 +68,7 @@ Add the following HTML snippet to your site to get started:
<script src="https://uncloseai.com/uncloseai.js" type="module"></script>
That's it! This single line provides a floating AI assistant button with page-aware contextual help, text-to-speech functionality, translation capabilities, conversation history storage, and compatibility with any CSS framework.
That's it! This single line provides a floating Machine Learning assistant button with page-aware contextual help, text-to-speech functionality, translation capabilities, conversation history storage, and compatibility with any CSS framework.
**Try It Out!**
@ -76,7 +76,7 @@ That's it! This single line provides a floating AI assistant button with page-aw
There is a demo connected to this static page!
Dive in and explore our service—use it as-is or build your own custom client. Let's keep democratizing AI and empower everyone to harness its power.
Dive in and explore our service—use it as-is or build your own custom client. Let's keep democratizing Machine Learning and empower everyone to harness its power.
Weve also open-sourced `Matrix & Discord Bots <https://git.unturf.com/engineering/unturf/discord.agents.ai.unturf.com#unturfdiscordbot>`_ to showcase dynamic model loading in action.

View file

@ -4,32 +4,32 @@ Introducing SLOP
:author: Russell Ballestrini
:slug: introducing-slop
:date: 2025-03-21 10:22
:tags: Code, DevOps, Machine Learning, LLM, AI
:tags: AI, SLOP, Open Source, Community, Python
:tags: Code, DevOps, Machine Learning, Python
:tags: Machine Learning, SLOP, Open Source, Community, Python
:status: published
**Introducing SLOP: A Simple Language Open Protocol for AI Interaction**
**Introducing SLOP: A Simple Language Open Protocol for Machine Learning Interaction**
This post introduces the SLOP project, a community-driven effort to standardize AI API interactions. I'm Russell (fxhp), and I'm excited to share how this project came together and how you can get involved!
This post introduces the SLOP project, a community-driven effort to standardize Machine Learning API interactions. I'm Russell (fxhp), and I'm excited to share how this project came together and how you can get involved!
A Community Effort Kicked Off by Nathan
---------------------------------------
First, a huge shoutout to Nathan from `agnt.gg <https://agnt.gg/>`_ for spearheading the SLOP project. Nathan organized the initial repository and rallied the community through his Discord server. His vision laid the groundwork for what SLOP has become today. You can find both the main repository and join the vibrant Discord community here: `https://i-love-slop.com?ref=GXSKWN <https://i-love-slop.com?ref=GXSKWN>`_. If you're passionate about open AI standards, this is the place to connect and contribute!
First, a huge shoutout to Nathan from `agnt.gg <https://agnt.gg/>`_ for spearheading the SLOP project. Nathan organized the initial repository and rallied the community through his Discord server. His vision laid the groundwork for what SLOP has become today. You can find both the main repository and join the vibrant Discord community here: `https://i-love-slop.com?ref=GXSKWN <https://i-love-slop.com?ref=GXSKWN>`_. If you're passionate about open Machine Learning standards, this is the place to connect and contribute!
What is unturf. ?
------------------
Before diving into SLOP, lets talk about `unturf. <https://www.unturf.com/>`_ to break wheels & fostering open collaboration. While the main page `https://www.unturf.com <https://www.unturf.com/>`_ describes a possible vision for the future, the real action happens in the community driven subdomains & community spaces. We host free AI services like `ai.unturf.com <https://ai.unturf.com/>`_ and supports projects like SLOP with infrastructure & a spirit of openness. Its a loose-knit group of innovators—folks like me and you—working to make software as a service & AI accessible to everyone.
Before diving into SLOP, lets talk about `unturf. <https://www.unturf.com/>`_ to break wheels & fostering open collaboration. While the main page `https://www.unturf.com <https://www.unturf.com/>`_ describes a possible vision for the future, the real action happens in the community driven subdomains & community spaces. We host free Machine Learning services like `ai.unturf.com <https://ai.unturf.com/>`_ and supports projects like SLOP with infrastructure & a spirit of openness. Its a loose-knit group of innovators—folks like me and you—working to make software as a service & Machine Learning accessible to everyone.
What is SLOP?
-------------
SLOP stands for **Simple Language Open Protocol**, a lightweight, RESTful pattern for interacting with AI services. Think of it as a universal handshake for AI APIs, making it easy to integrate models, tools, and resources across platforms. SLOP defines well-known core endpoints so that orgainizations can interopt using standard endpoints.
SLOP stands for **Simple Language Open Protocol**, a lightweight, RESTful pattern for interacting with Machine Learning services. Think of it as a universal handshake for Machine Learning APIs, making it easy to integrate models, tools, and resources across platforms. SLOP defines well-known core endpoints so that orgainizations can interopt using standard endpoints.
Ideally a SLOP server will be created in every programming language and placed into the ``examples`` directory of the main repo.
- **/chat**: Talk to AI models.
- **/chat**: Talk to Machine Learning models.
- **/tools**: Use predefined utilities (e.g., calculator, greeter).
This is where you can call public or private tools or algorithm to work on public or private data and return a result.
@ -55,7 +55,7 @@ Ideally a SLOP server will be created in every programming language and placed i
- **/pay**: Simulate transactions (for fun or future monetization).
Its all about simplicity: HTTP requests with JSON payloads, no fuss, no proprietary lock-in. SLOP lets any AI service—from big providers to homebrew setups—speak the same language. The community is still refining the spec, but its already proving its worth.
Its all about simplicity: HTTP requests with JSON payloads, no fuss, no proprietary lock-in. SLOP lets any Machine Learning service—from big providers to homebrew setups—speak the same language. The community is still refining the spec, but its already proving its worth.
My First Python Implementation
@ -76,7 +76,7 @@ Heres a quick example of chatting with it using curl:
-d '{"messages": [{"role": "user", "content": "Hello, SLOP!"}], "model": "adamo1139/Hermes-3-Llama-3.1-8B-FP8-Dynamic"}' \
https://slop.unturf.com/chat
The response will come back with an AI-generated message—try it out!
The response will come back with an Machine Learning-generated message—try it out!
Optional Streamlit Frontend
@ -115,7 +115,7 @@ Play with `https://streamlit.slop.unturf.com <https://streamlit.slop.unturf.com>
If you are a web dev or designer feel free to come up with new applications or frontends that use our standard community powered endpoints!
SLOP is about democratizing AI interaction. Whether youre a developer, a tinkerer, or just curious, theres a place for you here. Lets build something simple, open, and powerful together!
SLOP is about democratizing Machine Learning interaction. Whether youre a developer, a tinkerer, or just curious, theres a place for you here. Lets build something simple, open, and powerful together!
What's Next?

Some files were not shown because too many files have changed in this diff Show more