A demo Spring '83 client.

Overview

The Oakland Follower-Sentinel is a demo Spring '83 client that you can try on the web at followersentinel.com or run locally on your computer.

A screenshot of the demo client, showing several boards of varying colors, some with clever styles applied. On the right side, there's a panel for publishing a board of your own.

If you haven't read anything about Spring '83 yet, what follows will probably be confusing. I recommend starting with this narrative description and then perhaps continuing on to the protocol specification.

This is speculative software intended to invite consideration and imagination; it doesn't have any "users" yet, only co-investigators. That's you!

Basic operation

Without doing anything, you can use the client to follow a default list of boards and feeds. There are worse things in the world! You will probably find the feed selection fairly gnomic; that's because they are my feeds, not yours.

If you press Esc, an editor will appear. It's here that you can add, remove, and re-arrange Spring '83 URLs and RSS feed URLs. The client will save these changes to your browser's localStorage, so there is a fair chance your changes will still be there when you return. There you go: a super simple way to follow a collection of boards and feeds.

Perhaps you'd like to publish a board of your own. To "unlock" the client's publishing panel, you'll need a keypair that conforms to the Spring '83 specification. In the client, you'll find a link to a page where you can generate one.

This takes some time; have patience, and faith.

Alternatively you can import an existing keypair. The file format is simply a single line with the SECRET key followed by the PUBLIC key, no spaces.

Once you have a keypair file, you can use it to unlock the publishing panel and, perhaps, jot something on your board! If, having done this, you'd like me to add it the running list publicized in this board, just send me an email, [email protected].

Your keypair file is irreplaceable, so be sure to back it up somewhere, somehow. If you misplace it, you'll lose access to the associated board, and you'll have to start over with a new keypair.

Spring '83 doesn't "do" discovery or promotion on the protocol level, so publicizing your new board is totally up to you. Post the URL on your website, share it in a chat room, email it to your co-conspirators... or don't do any of those things, and just type into a box that doesn't circulate anywhere. That might sound ironic, but it's not; in my experience, simply "typing into the box" delivers a surprising fraction of the pleasure of internet publishing.

Tips and tricks

You can press Esc to toggle the Springfile editor.

You can press Cmd-Shift-Y to toggle the publishing panel and get yourself a bit more viewing space.

If you click on a link to a Spring '83 URL, the client will show you a preview, with a quick-selectable URL that makes it easy to add that board to your Springfile, if you wish.

The client tries its best to synchronize your Springfile across different browsers using the same keypair. You can turn this off by adding this line to your Springfile:

set sync false

Data loss is inevitable and assured. Happily, it's a breeze to back up a Springfile. Just email it to yourself!

In additional to HTML, you can compose your board in Markdown, keeping in mind that Markdown permits arbitrary mixing-and-matching: write a couple paragraphs in Markdown, throw in a little HTML confection. Easy!

This is a non-realtime system. The demo client insists on luxurious pauses and timeouts; don't expect to see boards percolating while you watch.

Running the client locally

You can totally do this, too. Just clone the repository and run:

ruby serve.rb

This script is included as a convenience; you can substitute any directory serving scheme, or even host the client on a website of your own.

Then, visit http://localhost:8000/ and things should work normally.

Status

This demo client will not be a long-term project -- I simply am not an application developer -- but/and I knew it was important to demonstrate my (very rough) vision for how Spring '83 might look and work.

Important for me, as much as for anyone else!

I will continue to tinker here, and I'll happily accept bug reports, although I might not be able to do anything about them. I am not seeking pull requests, but/and you should feel free to use this code as a starting point for your own explorations.

Thanks for investigating!

You might also like...

Spring framework for Node.

Spring Framework For Node 向Spring开源社区致敬! 原生javascript实现Spring框架,无缝还原,上手丝滑,秒级启动。适合轻应用和产品原型开发。 js本身不适合做大型后端项目,尤其对于持续性开发的项目简直是场灾难。 设计j-spring的出发点是让js更好的充

Dec 27, 2022

Spring Boot + Angular: File Upload & Download Example

Spring Boot + Angular: File Upload & Download Example

Spring Boot + Angular: File Upload & Download Example User Interface Local setup Step 1: Download or clone the source code from GitHub to a local mach

Sep 3, 2022

This is service registry server based on Spring Cloud Config, Netflix and Eureka

Servicec Discovery and Registry This is service registry, based on Spring Cloud Netflix, Eureka and Spring Cloud Config. Full documentation is availab

Oct 11, 2022

Piccloud is a full-stack (Angular & Spring Boot) online image clipboard that lets you share images over the internet by generating a unique URL. Others can access the image via this URL.

Piccloud Piccloud is a full-stack application built with Angular & Spring Boot. It is an online image clipboard that lets you share images over the in

Dec 15, 2022

Chrome extension that switches default build tool to Maven at start.spring.io

start.spring.io default to Maven On the 18th of October 2022 https://start.spring.io switched the default build tool from Maven to Gradle spring-io/st

Dec 14, 2022

Unofficial API client for the Tidbyt API. Use this client to control Tidbyt devices and integrate with other services.

Tidbyt Client for Node.js Unofficial API client for the Tidbyt API. Use this client to control Tidbyt devices and integrate with other services. Insta

Dec 17, 2022

A demo of LaunchDarkly, React, and Vite, using the Pokémon API!

A demo of LaunchDarkly, React, and Vite, using the Pokémon API!

Pokémon Feature Flags demo Here's a demo for integrating feature flags into a React project! Built with React, Vite, the PokeAPI, and LaunchDarkly! Wh

Jan 5, 2022

科技风智慧城市 Demo: http://stonerao.com/public/city/

科技风智慧城市 Demo: http://stonerao.com/public/city/

Three.js Setup Download Node.js. Run this followed commands: # Install dependencies (only the first time) npm install # Run the local server at local

Dec 2, 2022

A demo for E2E build piplelines in Design Systems using monorepo's and automation :zap:.

A demo for E2E build piplelines in Design Systems using monorepo's and automation :zap:.

Design System Pipelines demo What is it? A working demonstration for end-to-end build piplelines in Design Systems using Primer Primitives, Primer CSS

Oct 20, 2022
Comments
  • Get RSS links with textContent instead of innerHTML

    Get RSS links with textContent instead of innerHTML

    Some RSS feeds provide valid links wrapped in CDATA nodes to prevent special characters (e.g. &) from getting interpreted incorrectly. Getting innerHTML from these nodes will include the ![CDATA[ cruft and break the links. The recommended way to get text content out of a node that may contain CDATA is to use textContent.

    https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent

    opened by motevets 2
  • Document keypair format in the manual.

    Document keypair format in the manual.

    This hint will aid users in importing an existing keypair, perhaps from another client or a backup.

    Hopefully saves future springers from having to dig into the source.

    opened by royragsdale 1
  • Panel-hide keyboard shortcut doesn't work in Firefox on Windows

    Panel-hide keyboard shortcut doesn't work in Firefox on Windows

    Apparently Firefox doesn't set metaKey properly 🤦:

    Yes, Firefox can detect the Windows key, but not as the "Meta" key. Both keyup and keydown events are fired for that key, but not a keypress event. Chrome also fires events similarly (no keypress). The keyCode is the same on both Chrome and Firefox, but what they consider the key to be is different between the two. Chrome considers the key to be the "Meta" key, while Firefox considers it to be the "OS" key. Thus, Firefox does not set the metaKey property to true, because from Firefox's point of view, the "Meta" key is not being pressed.

    -https://stackoverflow.com/a/39299284

    As hinted by the above, Chrome behaves "as expected" on Windows, where Shift-Windows-Y hides the publishing panel.

    Extremely nit-picky I admit, so no expectations, but thought you'd like to know. 👍 🙇

    opened by rpj 6
Owner
Robin Sloan
I’m the author of two novels: Sourdough and Mr. Penumbra’s 24-Hour Bookstore. I also tinker with code.
Robin Sloan
Nftix-demo-ui - Demo UI used in my NFT course on Egghead.io

NFTix Demo UI This repository contains the UI used for my Egghead course on building a NFT ticketing system ?? ?? If you're watching the videos, use t

Ryan Harris 10 Dec 17, 2022
Very simple full-stack application using React, Java Spring Boot, and PostgreSQL

Very simple full-stack application using React, Java Spring Boot, and PostgreSQL. The API was built following the N-Tier architecture. The goal was to explore and learn more in-depth the development of APIs, the use of Docker and deploying with AWS.

Diego Quintela 0 Apr 23, 2022
In game dev, generative art, and creative coding, sine is a ubiquitous function that is often used as a spring-like oscillator for a given parameter.

In game dev, generative art, and creative coding, sine is a ubiquitous function that is often used as a spring-like oscillator for a given parameter.

Mark Racette 3 Feb 22, 2022
Hi, Spring fans! In this installment we look at the just-released Hilla framework, from our friends at Vaadin

Custom project from Hilla This project can be used as a starting point to create your own Hilla application with Spring Boot. It contains all the nece

Spring Tips 11 Nov 17, 2022
Quick and easy spring animation. Works with other animation libraries (gsap, animejs, framer motion, motion one, @okikio/animate, etc...) or the Web Animation API (WAAPI).

spring-easing NPM | Github | Docs | Licence Quick and easy spring animations. Works with other animation libraries (gsap, animejs, @okikio/animate, mo

Okiki Ojo 34 Dec 14, 2022
PLSC 21510/31510: Introduction to Text as Data for Social Science (Spring 2022)

PLSC 21510/31510: Introduction to Text as Data for Social Science Spring 2022 About Social scientists increasingly use large quantities of text-based

Rochelle Terman 16 Oct 17, 2022
An OAuth2 Authorization Server,Based on Spring Authorization Server

?? id-server 一个基于Spring Authorization Server的开源的授权服务器。 概念 一些概念 OAuth2Client 客户端指的是OAuth2 Client,但又不单单是一个OAuth2 Client,连id server本身都是一个客户端。 role 角色必须依附

felord.cn 351 Dec 30, 2022
📦 Writing Express but feel like Spring Boot

Springpress Custom top-level framework of Express.js, especially on TypeScript. Springpress provides expressjs utilities out of the box, lets you deep

Vectier 8 Oct 14, 2022
A JavaScript implementation of the Spring 83 protocol

An implementation of the Spring 83 protocol. Very much a work-in-progress. This was built in reference to draft-20220616.md@0f63d3d2. Setup Requires n

Ryan Joseph 10 Aug 22, 2022
A custom element that aims to make it easier to embed Spring '83 boards

<spring-board> element A custom element that makes it simple to embed Spring '83 boards! Usage If you are using <spring-board> in a client-side framew

Ryan Murphy 11 Jan 1, 2023