wiki markdown refactor, update articles

This commit is contained in:
Ben Harris 2019-07-02 00:38:20 -04:00
parent 03e8309882
commit 756bf4c41d
19 changed files with 365 additions and 155 deletions

View File

@ -1,6 +1,12 @@
{
"require": {
"mnapoli/front-yaml": "^1.6",
"michelf/php-markdown": "^1.8"
"michelf/php-markdown": "^1.8",
"erusev/parsedown-extra": "^0.7.1"
},
"autoload": {
"psr-4": {
"Wiki\\": "src/"
}
}
}

46
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "f693531fd51bd92297c17d6a290a6f16",
"content-hash": "13a716a34a8e3fc115a70dcb60a721c4",
"packages": [
{
"name": "erusev/parsedown",
@ -52,6 +52,50 @@
],
"time": "2018-03-08T01:11:30+00:00"
},
{
"name": "erusev/parsedown-extra",
"version": "0.7.1",
"source": {
"type": "git",
"url": "https://github.com/erusev/parsedown-extra.git",
"reference": "0db5cce7354e4b76f155d092ab5eb3981c21258c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/erusev/parsedown-extra/zipball/0db5cce7354e4b76f155d092ab5eb3981c21258c",
"reference": "0db5cce7354e4b76f155d092ab5eb3981c21258c",
"shasum": ""
},
"require": {
"erusev/parsedown": "~1.4"
},
"type": "library",
"autoload": {
"psr-0": {
"ParsedownExtra": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Emanuil Rusev",
"email": "hello@erusev.com",
"homepage": "http://erusev.com"
}
],
"description": "An extension of Parsedown that adds support for Markdown Extra.",
"homepage": "https://github.com/erusev/parsedown-extra",
"keywords": [
"markdown",
"markdown extra",
"parsedown",
"parser"
],
"time": "2015-11-01T10:19:22+00:00"
},
{
"name": "michelf/php-markdown",
"version": "1.8.0",

View File

@ -1,7 +1,7 @@
<?php
include 'header.php';
require __DIR__.'/vendor/autoload.php';
$parser = new Mni\FrontYAML\Parser();
$parser = Wiki\MDParser::factory();
?>
<div class="jumbotron">
@ -15,14 +15,34 @@ $parser = new Mni\FrontYAML\Parser();
</pre>
<br>
<p>a digital community for socializing, learning, and making cool stuff</p>
</div>
<p>tilde.team is a shared system that provides an inclusive, non-commercial space for teaching, learning, practicing and enjoying the social medium of unix.</p>
<p>i created this tilde after hearing about paul ford's <a href="http://tilde.club/">tilde.club</a>. when i was unable to join due to the waitlist, i decided to create my own tilde.</p>
<p>
tilde.team is a shared system that provides an inclusive,
non-commercial space for teaching, learning, practicing and
enjoying the social medium of unix.
</p>
<p>
i created this tilde after hearing about paul ford's
<a href="http://tilde.club/">tilde.club</a>. when i was unable
to join due to the waitlist, i decided to create my own tilde.
</p>
<p>thanks for stopping by!</p>
<p>tilde.team is a founding member of <a href="https://tildeverse.org">tildeverse.org</a>, which is a collaborative effort among several <a href="https://tildeverse.org/members/">other tilde servers</a>.</p>
<p>hosting and domains are paid out-of-pocket. tilde.team will always be free to use. however, if you are able and willing to pitch in, you can <a href="https://bhh.sh/donate/">donate here</a>.</p>
<p>
tilde.team is a founding member of <a href="https://tildeverse.org">tildeverse.org</a>,
which is a collaborative effort among several <a href="https://tildeverse.org/members/">
other tilde servers</a>.
</p>
<p>
hosting and domains are paid out-of-pocket. tilde.team will always
be free to use. however, if you are able and willing to pitch in,
you can <a href="https://bhh.sh/donate/">donate here</a>.
</p>
<p><a href="/~ben/">~ben</a></p>
<br>
@ -44,20 +64,25 @@ $parser = new Mni\FrontYAML\Parser();
<div class="row">
<div class="col-md-7">
<h1>~news~</h1>
<?php
foreach (array_slice(array_reverse(glob("news/pages/*.md")), 0, 4) as $page):
<?php foreach (array_slice(array_reverse(glob("news/pages/*.md")), 0, 4) as $page):
$parsed = $parser->parse(file_get_contents($page));
$yaml = $parsed->getYAML();
if (!$yaml["published"]) continue; ?>
<div class="list-group">
<div class="list-group-item">
<h3 class="list-group-item-heading"><?=$yaml["title"]?></h3>
<em><a href="/news/?page=<?=basename($page, ".md")?>"><?=$yaml["date"]?></a> - <a href="/~<?=$yaml["author"]?>/"><?=$yaml["author"]?></a></em>
<em>
<a href="/news/?page=<?=basename($page, ".md")?>">
<?=$yaml["date"]?></a> - <a href="/~<?=$yaml["author"]?>/"><?=$yaml["author"]?></a>
</em>
<hr>
<p class="list-group-item-text"><?=$parsed->getContent()?></p>
</div>
</div>
<?php endforeach; ?>
<div class="list-group">
<div class="list-group-item">
<p class="list-group-item-text"><a href="/news/">news archive here...</a></p>
@ -116,4 +141,3 @@ $parser = new Mni\FrontYAML\Parser();
</div>
<?php include 'footer.php'; ?>

View File

@ -15,20 +15,7 @@ $additional_head = "
<meta property='og:site_name' content='tilde.team news'>
";
class MDParser implements Mni\FrontYAML\Markdown\MarkdownParser {
public function __construct() {
$this->mdparser = new Michelf\MarkdownExtra();
$this->mdparser->header_id_func = function ($header) {
return preg_replace('/[^a-z0-9]/', '-', strtolower($header));
};
}
public function parse($markdown) {
return $this->mdparser->transform($markdown);
}
}
$parser = new Mni\FrontYAML\Parser(null, new MDParser());
$parser = Wiki\MDParser::factory();
if (!isset($_GET["page"]) || !file_exists("pages/{$_GET['page']}.md")) {
@ -80,7 +67,7 @@ if (!isset($_GET["page"]) || !file_exists("pages/{$_GET['page']}.md")) {
<p><?=$yml["date"]?> - <a href="/~<?=$yml["author"]?>/">~<?=$yml["author"]?></a></p>
<hr>
<?=str_replace("<table", '<table class="table table-striped"', $pg->getContent())?>
<?=$pg->getContent()?>
<hr>
<a href="https://tildegit.org/team/site/src/branch/master/news/pages/<?=$_GET["page"]?>.md">

View File

@ -1,18 +1,16 @@
<?php
$services = [
'gitea' => ['fa' => 'code-fork', 'url' => 'https://tildegit.org'],
'gitea' => ['fa' => 'code-fork', 'url' => 'https://tildegit.org/team/'],
'forum' => ['fa' => 'comment', 'url' => 'https://bbj.tilde.team'],
'wiki' => ['fa' => 'book', 'url' => '/wiki/'],
'mastodon' => ['fa' => 'retweet', 'url' => 'https://tilde.zone'],
'chat' => ['fa' => 'comments-o', 'url' => '/wiki/?page=irc'],
'nextcloud' => ['fa' => 'cloud', 'url' => 'https://cloud.tilde.team/'],
'webmail' => ['fa' => 'envelope', 'url' => 'https://mail.tilde.team'],
'webmail' => ['fa' => 'envelope', 'url' => 'https://mail.tilde.team/'],
'cryptpad' => ['fa' => 'sticky-note', 'url' => 'https://pad.tildeverse.org'],
'pastebin' => ['fa' => 'paste', 'url' => 'https://paste.tildeverse.org/'],
'termbin' => ['fa' => 'terminal', 'url' => 'https://bin.tilde.team/'],
'nullpointer' => ['fa' => 'file-code-o', 'url' => 'https://ttm.sh'],
'gopher' => ['fa' => 'floppy-o', 'url' => 'https://gopher.tilde.team'],
'gopher' => ['fa' => 'floppy-o', 'url' => 'https://gopher.tildeverse.org/tilde.team'],
];
$nav = isset($navbar);
@ -23,4 +21,3 @@ foreach ($services as $name => $service) { ?>
<a href="<?=$service['url']?>" <?php if (!$nav) echo 'class="btn btn-default"'; ?>><i class="fa fa-<?=$service['fa']?>"></i> ~<?=$name?>~</a>
<?php if ($nav) echo '</li>'; ?>
<?php }

49
src/MDParser.php Normal file
View File

@ -0,0 +1,49 @@
<?php
namespace Wiki;
use Mni\FrontYAML;
class MDParser implements FrontYAML\Markdown\MarkdownParser {
public function __construct() {
$this->mdparser = new WikiParsedown();
}
public function parse($markdown) {
return $this->mdparser->text($markdown);
}
public static function factory() {
return new FrontYAML\Parser(null, new MDParser());
}
}
class WikiParsedown extends \ParsedownExtra {
protected function blockHeader($line) {
$header = parent::blockHeader($line);
if (!isset($header)) {
return null;
}
$id = preg_replace('/[^a-z0-9]/', '-', strtolower($header['element']['text']));
$header['element']['attributes']['id'] = $id;
$header['element']['text'] =
'<small><a class="text-muted" href="#' . $id . '"><i class="fa fa-link"></i></a></small> '
. $header['element']['text'];
return $header;
}
protected function blockTable($line, array $block = null) {
$table = parent::blockTable($line, $block);
if (!isset($table)) {
return null;
}
$table['element']['attributes']['class'] = "table table-striped";
return $table;
}
}

View File

@ -15,20 +15,7 @@ $additional_head = "
<meta property='og:site_name' content='tilde.team wiki'>
";
class MDParser implements Mni\FrontYAML\Markdown\MarkdownParser {
public function __construct() {
$this->mdparser = new Michelf\MarkdownExtra();
$this->mdparser->header_id_func = function ($header) {
return preg_replace('/[^a-z0-9]/', '-', strtolower($header));
};
}
public function parse($markdown) {
return $this->mdparser->transform($markdown);
}
}
$parser = new Mni\FrontYAML\Parser(null, new MDParser());
$parser = Wiki\MDParser::factory();
if (!isset($_GET["page"]) || !file_exists("pages/{$_GET['page']}.md")) {
@ -77,7 +64,7 @@ if (!isset($_GET["page"]) || !file_exists("pages/{$_GET['page']}.md")) {
<a href=".">&lt; ~wiki</a>
<hr>
<?=str_replace("<table", '<table class="table table-striped"', $pg->getContent())?>
<?=$pg->getContent()?>
<hr>
<a href="https://tildegit.org/team/site/src/branch/master/wiki/pages/<?=$_GET["page"]?>.md">
<i class="fa fa-edit"></i> source

View File

@ -122,6 +122,8 @@ Here's how to fix it:
## lxd
> we're not provisioning lxd containers for users at this time
this is the process that i use to create lxd containers for users.
you need two things from the user: an ssh public key (on their ~team shell) and a [distro choice](https://us.images.linuxcontainers.org/)

View File

@ -3,44 +3,56 @@ author: ~ben
published: true
title: gopher
description: gopher server and proxy
category:
category:
- main
---
# gopher
the [gopher protocol](http://en.wikipedia.org/wiki/Gopher_(protocol)) was created in 1991. it didn't survive long due to [draconic licensing](http://www.nic.funet.fi/pub/vms/networking/gopher/gopher-software-licensing-policy.ancient).
the [gopher protocol](http://en.wikipedia.org/wiki/Gopher_(protocol)) was
created in 1991. it didn't survive long due to [draconic licensing](
http://www.nic.funet.fi/pub/vms/networking/gopher/gopher-software-licensing-policy.ancient).
we're trying to keep this cool corner of the web alive.
we're trying to keep this cool corner of the web alive.
## add and create your gophersite
to add your own gopher site, run the following command:
this is created along with your account. to get listed on the [main gophermap](gopher://tilde.team),
make some changes to your root gophermap. the listing script diffs against the default gophermap.
```bash
mkdir -p -m 755 ~/public_gopher
```
(this presumes you don't already have a public_gopher dir in your $HOME. new users from here on out will have a public_gopher by default)
(this presumes you don't already have a public_gopher dir in your $HOME.
new users from here on out will have a public_gopher by default)
if a file called `gophermap` exists in the directory you're currently browsing to in gopher, it will get processed and displayed.
if a file called `gophermap` exists in the directory you're currently
browsing to in gopher, it will get processed and displayed.
see [this example](https://github.com/prologic/gophernicus/blob/master/README.Gophermap) for more information on file types and special chars.
see [this example](https://github.com/gophernicus/gophernicus/blob/master/README.Gophermap)
for more information on file types and special chars.
one of the coolest item types supported in gophernicus is `=` which allows you
to include other gophermaps or the output of executables.
you can even make your whole gophermap executable and it will be run through
whatever interpreter you specify in the shebang.
---
## browse gophersites
if you're currently connected from a tilde.team shell, you can use the [`lynx`](https://lynx.browser.org/) browser.
if you're currently connected from a tilde.team shell, you can use the
[`lynx`](https://lynx.browser.org/) browser.
```bash
lynx gopher://tilde.team
```
if you want to access the gophersite in your public_gopher dir, use the following link structure:
[gopher://tilde.team/1/~username](gopher://tilde.team/1/~username)
if you want to access the gophersite in your public_gopher dir, use the following
link structure: [gopher://tilde.team/1/~username](gopher://tilde.team/1/~username)
you can install it on your local machine too :)
otherwise, you can use our [http proxy](https://gopher.tilde.team) to browse the gophernet.
otherwise, you can use our [http proxy](https://gopher.tildeverse.org/tilde.team) to browse the gophernet.
hope to see you on there soon!
(addendum by ~khuxkm: remember to leave the number off when using the proxy (i.e; [https://gopher.tilde.team/tilde.team/~username](https://gopher.tilde.team/tilde.team/~username)))

View File

@ -33,7 +33,7 @@ weechat introduced [unix socket relays](
https://weechat.org/files/doc/stable/weechat_user.en.html#relay_unix_socket)
in version 2.5 which is a much easier way to offer per-user relay access.
<user>.ttm.sh/weechat is configured to proxy to the default unix relay socket
username.ttm.sh/weechat is configured to proxy to the default unix relay socket
location (`~/.weechat/relay_socket`). to get started using it, follow these steps.
1. in weechat:

View File

@ -9,44 +9,44 @@ category:
# mailing lists netiquette
The tildeverse has now its own mailing list service. You can take a look at:
the tildeverse has now its own mailing list service. you can take a look at:
[lists.tildeverse.org](https://lists.tildeverse.org/)
This is a description of the basic *netiquette* rules for this service. Most of
this is a description of the basic *netiquette* rules for this service. most of
the text is taken shamelessly from
[man.sr.ht/lists.sr.ht/etiquette.md](https://man.sr.ht/lists.sr.ht/etiquette.md)
with some adaptations and a couple more suggestions taken from other lists out
there.
Some email clients have popularized email usage patterns which are considered
poor form on many mailing lists. Please review some of our suggestions for
participating more smoothly in discussions on the tildeverse. This advice will
some email clients have popularized email usage patterns which are considered
poor form on many mailing lists. please review some of our suggestions for
participating more smoothly in discussions on the tildeverse. this advice will
likely serve you well outside of the tildeverse as well.
If you have any troubles following this guides or don't know how to configure
your email client for this purpose, ask on IRC (#meta or #team), you'll find
if you have any troubles following this guides or don't know how to configure
your email client for this purpose, ask on irc (#meta or #team), you'll find
always somebody willing to help.
## Plain text
## plain text
Please make sure that your email client is configured to use plain text emails.
By default, many email clients compose emails with HTML, so you can use rich
text formatting. Rich text is not desirable for mailing lists. Keep in mind that
some people uses console email clients without html rendering support. Also,
please make sure that your email client is configured to use plain text emails.
by default, many email clients compose emails with HTML, so you can use rich
text formatting. rich text is not desirable for mailing lists. keep in mind that
some people uses console email clients without html rendering support. also,
people with high volume of emails may pre-process them and html is not good for
that. So you should disable this feature and send your email as "plain text".
Every email client is different, you should research the options for your
that. so you should disable this feature and send your email as "plain text".
every email client is different, you should research the options for your
specific client.
## Top-posting
## top-posting
Some email clients will paste the entire email you're replying to into your
response and encourage you to write your message over it. This behavior is
some email clients will paste the entire email you're replying to into your
response and encourage you to write your message over it. this behavior is
called "top posting" and is discouraged on the tildeverse lists (or on any
mailing list really). Instead, cut out any parts of the reply that you're not
directly responding to and write your comments inline. Feel free to edit the
original message as much as you like. In other words, keep the relevant context
for your reply and delete the rest. This makes cleaner emails that are easier to
mailing list really). instead, cut out any parts of the reply that you're not
directly responding to and write your comments inline. feel free to edit the
original message as much as you like. in other words, keep the relevant context
for your reply and delete the rest. this makes cleaner emails that are easier to
read, even if the reader jumps in the middle of a thread.
For example, if I emailed you:
@ -76,45 +76,45 @@ You might respond with:
- A: Because it reverses the logical flow of conversation.
- Q: Why is top posting frowned upon?
## Wrap lines
## wrap lines
Please wrap lines in your email at 72 columns. Many people use email readers
please wrap lines in your email at 72 columns. many people use email readers
designed to faithfully display plain text and won't break lines at a width which
is comfortable for reading, or won't break lines at all, which is useful when
reviewing patches. Some readers also have many things open in addition to their
reviewing patches. some readers also have many things open in addition to their
mail client, and may not allocate as much screen real-estate to email as you do.
If you're curious about why this arbitrary column count. "Regular" terminals
if you're curious about why this arbitrary column count. "regular" terminals
have 80 columns, and 8 characters less gives you some room for the response
prefix ('> ') making threads with nested replies more readable.
Don't worry about re-wrapping lines written by anyone you're quoting unless you
don't worry about re-wrapping lines written by anyone you're quoting unless you
want to.
## PGP Signatures
## pgp signatures
If you use PGP, please attach your signature to the message instead of using an
inline signature. Look in your local PGP implementation's documentation for
if you use pgp, please attach your signature to the message instead of using an
inline signature. look in your local pgp implementation's documentation for
`PGP/MIME` options.
## Attachments
## attachments
Try not to send attachment to the list or, if you do it, make sure they are
small files. Think about people with bad internet connection or limited
resources. It's better to send a link to download whatever you want to share.
If you send links, it's a good practice to describe the content and the size,
so the reader can choose to download it or not before following the link. For
try not to send attachment to the list or, if you do it, make sure they are
small files. think about people with bad internet connection or limited
resources. it's better to send a link to download whatever you want to share.
if you send links, it's a good practice to describe the content and the size,
so the reader can choose to download it or not before following the link. for
example, you can upload a file to [ttm.sh](https://ttm.sh) or drop it in your
`~/public_html` directory and then send the link to the list like so:
https://ttm.sh/mydocument.pdf (pdf, 3,5MB)
# Conclusion
# conclusion
Whatever you send to a mailing list gets forwarded to an unknown number of email
accounts. You cannot know beforehand the quality of connection, resources,
whatever you send to a mailing list gets forwarded to an unknown number of email
accounts. you cannot know beforehand the quality of connection, resources,
operating systems or really anything else the people that owns those accounts
have. So, try to stick to the principles here stated to make the whole list
have. so, try to stick to the principles here stated to make the whole list
communication easier for all.
Thank you for taking the time to adjust your habits!
thank you for taking the time to adjust your habits!

View File

@ -9,22 +9,38 @@ category:
# tilde.team manifesto
> tilde.team is a shared system that provides an inclusive, non-commercial space for teaching, learning, practicing and enjoying the social medium of unix.
> tilde.team is a shared system that provides an inclusive, non-commercial space
> for teaching, learning, practicing and enjoying the social medium of unix.
here are some of our most important values:
1. tilde.team is an alternative social environment for the technically-inclined; specifically, a non-commercial alternative to the mainstream, corporate-owned media and social media. we aim to put the users in control of the tools of communication that are currently being neutered by corporate commodification of the www.
1. tilde.team is an alternative social environment for the technically-inclined;
specifically, a non-commercial alternative to the mainstream, corporate-owned
media and social media. we aim to put the users in control of the tools of
communication that are currently being neutered by corporate commodification
of the www.
1. provide tools, resources and encouragement for users to develop ideas and best practices for the next generation of public access unix systems. the "next generation" is always ahead of the present, so this implies that the system is in a constant state of development and self-improvement, with a continually rolling set of goals, and regular testing and evaluation of experimental projects. --all of which is powered by user involvement in a brainstorming/experimenting/teaching/learning/doing model.
1. provide tools, resources and encouragement for users to develop ideas and
best practices for the next generation of public access unix systems. the
"next generation" is always ahead of the present, so this implies that the
system is in a constant state of development and self-improvement, with a
continually rolling set of goals, and regular testing and evaluation of
experimental projects. --all of which is powered by user involvement in a
brainstorming/experimenting/teaching/learning/doing model.
1. serve partly as a meta-community among other tildes and pubnixes, both sharing best practices and learning from their experiences.
1. serve partly as a meta-community among other tildes and pubnixes, both
sharing best practices and learning from their experiences.
1. last but absolutely not least --> MAKE IT FUN! it should not be a bitter place to sulk or rant about mainstream culture. it should be a social environment in which users can go wild and push their creative skills to the limit. it should be a place to appreciate what does not exist in other exploitative commercial environments.
1. last but absolutely not least --> MAKE IT FUN! it should not be a bitter
place to sulk or rant about mainstream culture. it should be a social
environment in which users can go wild and push their creative skills to the
limit. it should be a place to appreciate what does not exist in other
exploitative commercial environments.
---
this document is still a work in progress. if you have any ideas or suggestions, [send a pr](https://tildegit.org/team/site/src/branch/master/wiki/pages/manifesto.md)!
this document is still a work in progress. if you have any ideas or
suggestions, [send a pr](https://tildegit.org/team/site/src/branch/master/wiki/pages/manifesto.md)!
[living draft of this document here](https://pad.tilde.team/code/#/2/code/edit/RFBUqXec+9+MlZzx4mnhU3ps/)

View File

@ -12,7 +12,7 @@ category:
if you're starting a tilde and want to be added to this list, [open a PR :)](https://tildegit.org/team/site)
| tilde name | description | where to join | notes |
|---|---|---|---|
| --- | --- | --- | ---|
| [rawtext.club](https://rawtext.club) | rawtext.club (RTC) is an experimental public access shell server with a focus on use of collaborative projects for gnu/linux skill building. Projects include simple, command line social tools and utilities, or whatever lightweight programs users are interested in. RTC does not use IRC, and instead focuses on other slower and more thoughtful forms of user interaction. | Send email to admin@rawtext.club with your ssh pubkey, desired username, and a statement describing your interest in joining. | |
| [tilde.institute](https://tilde.institute) | Provides a space dedicated to the OpenBSD operating system. Includes a functional BCHS stack for users to experiment with and use to create web applications. | [signup form](https://tilde.institute/signup) | |
| [tilde.center](https://tilde.center) | A public unix server focused around decentralization, federation, and home-brewed open source projects. | [signup form](https://tilde.center/signup.php) | |
@ -30,8 +30,8 @@ if you're starting a tilde and want to be added to this list, [open a PR :)](htt
| [protocol.club](http://protocol.club) | protocol.club explores the fundamental and unique learning opportunities provided by the implementation of standardized protocols. It is a place for curious minds to explore and experiment, to educate and be educated about protocols and implementations old and new alike. While inspired by tilde.club and federated with the rest of the tildeverse via NNTP (et cetera), protocol.club has a stronger focus on its particular mission and has several differences from other tilde boxes, namely: we have a Code of Conduct, and we have some resources available locally to aid development of protocol implementations and new draft protocols. We also serve pages over HTTPS. | [signup form](https://docs.google.com/forms/d/11sJKpZnqaqNVR-rYRfCxKl05iSpjJa85XbigY8xbzBM/viewform?c=0&w=1) | |
| [palvelin.club](http://palvelin.club) | Finnish language tilde server. | [signup form](https://docs.google.com/forms/d/1tTGiOU0z3M92nCb5Lv3Tv_sJXGLh8kj5Gl79Gx4ZOdM/viewform) | |
| [skylab.org](http://skylab.org) | An open-source community co-operative with ~150 members that has existed since 1997. Based in Portland, Oregon, United States with a userbase across the world, we have quietly existed. Featuring geektalk community chat, a variety of tools and hosting running on FreeBSD. | Email [skylabstatus@gmail.com](mailto:skylabstatus@gmail.com) with subject line SKYLAB.ORG and an email containing your desired username, full name, public SSH key and an acknowledgement to play nice. | |
| [remotes.club](https://remotes.club) | Anyone who works remotely is welcome. | [signup form](https://www.remotes.club/request.php) |
| [tilde.cat](https://tilde.cat) | This is (or rather might be) public shell server like [the club](https://tilde.club), [the town](https://tilde.town), or other ~ servers. | [signup form](http://signup.tilde.cat) | |
| [remotes.club](https://remotes.club) | Anyone who works remotely is welcome. | [signup form](https://www.remotes.club/request.php) | |
| [tilde.cat](https://tilde.cat) | This is (or rather might be) public shell server like [the club](https://tilde.club), [the town](https://tilde.town), or other ~ servers. | [signup form](http://signup.tilde.cat) | down |
| [tilde.pink](gopher://tilde.pink) | A gopher only tilde, providing shell acounts with email and gopher services running on a DragonflyBSD server. The site is accessable via [web proxy](https://proxy.tilde.pink) | [signup form](gopher://tilde.pink/1/signup.gph) | |
| [rw.rs](http://rw.rs) | An experimental software community with a 199X aesthetic. | [signup via pull request](https://github.com/adsr/rw.rs/) |
| [theasylum] (https://theasylum.team) | invite-only tilde catering to programmers of all languages | join #theasylum on tilde.chat, and let us get to know you |
| [rw.rs](http://rw.rs) | An experimental software community with a 199X aesthetic. | [signup via pull request](https://github.com/adsr/rw.rs/) | |
| [theasylum](https://theasylum.team) | invite-only tilde catering to programmers of all languages | join #theasylum on tilde.chat, and let us get to know you | |

View File

@ -13,7 +13,10 @@ _or, how to tell other computers to do cool things_
---
> all users are required to use an ssh keypair for login, or will be required to proceed with manual account recovery with [~ben](/~ben/) or another admin. drop a line to [sudoers@tilde.team](mailto:sudoers@tilde.team) or hop on [irc](https://web.tilde.chat/?join=sudoers) for assistance.
> all users are required to use an ssh keypair for login, or will be required
to proceed with manual account recovery with [~ben](/~ben/) or another admin.
drop a line to [sudoers@tilde.team](mailto:sudoers@tilde.team) or hop on
[irc](https://web.tilde.chat/?join=sudoers) for assistance.
## tilde.team details
@ -34,34 +37,62 @@ ssh user@tilde.team # this uses port 22, which can be blocked on some networks
## intro
** if you just want to get right to a tutorial you can [skip over this background info](#how-to-make-an-ssh-key)**
** if you just want to get right to a tutorial you can
[skip over this background info](#how-to-make-an-ssh-key)**
while [tilde.team](https://tilde.team) is accessible on the web and features lovely web pages written by its users, most interaction with tilde.team takes place **inside the machine** that runs tilde.team as opposed to via web forms that have an effect from **outside** tilde.team's computer.
while [tilde.team](https://tilde.team) is accessible on the web and features
lovely web pages written by its users, most interaction with tilde.team takes
place **inside the machine** that runs tilde.team as opposed to via web forms
that have an effect from **outside** tilde.team's computer.
this is what sets tilde.team apart from most other online communities. you connect directly to another computer from yours alongside other people and then write your web pages, chat, and play games all via text-based interfaces right on tilde.team's computer.
this is what sets tilde.team apart from most other online communities. you
connect directly to another computer from yours alongside other people and then
write your web pages, chat, and play games all via text-based interfaces right
on tilde.team's computer.
prior to the web (which debuted in 1995) this is how pretty much all computer stuff got done. you connected directly to a machine (usually over a direct, physical phone line) and did your work there.
prior to the web (which debuted in 1995) this is how pretty much all computer
stuff got done. you connected directly to a machine (usually over a direct,
physical phone line) and did your work there.
for a long time, people used a tool called [`telnet`](https://en.wikipedia.org/wiki/telnet) to connect to other computers. these days we use a tool called **ssh**.
for a long time, people used a tool called
[`telnet`](https://en.wikipedia.org/wiki/telnet) to connect to other computers.
these days we use a tool called **ssh**.
`ssh` is a text-based tool that provides a direct connection from your computer to another. ssh is an acronym that stands for secure shell. the _shell_ part refers to the fact that it's a text-based tool; we use the word shell to refer to a text-based interface that you give commands to. the _secure_ part refers to the fact that, when you're using ssh, no one can spy on your connection to another computer (unlike the old `telnet` command).
`ssh` is a text-based tool that provides a direct connection from your computer
to another. ssh is an acronym that stands for secure shell. the _shell_ part
refers to the fact that it's a text-based tool; we use the word shell to refer
to a text-based interface that you give commands to. the _secure_ part refers
to the fact that, when you're using ssh, no one can spy on your connection to
another computer (unlike the old `telnet` command).
**why bother with all of this?** passwords are really insecure and hard to manage. using keys makes life easier for you, fair user (your account is less likely to be hacked) and for me, your humble sysadmin (less administration than passwords).
**why bother with all of this?** passwords are really insecure and hard to manage.
using keys makes life easier for you, fair user (your account is less likely to
be hacked) and for me, your humble sysadmin (less administration than passwords).
---
## how to make an ssh key
SSH supports a handful of types of cryptographic keys. The most used are [RSA](<https://en.wikipedia.org/wiki/RSA_(cryptosystem)>) and the more modern [Ed25519](https://en.wikipedia.org/wiki/EdDSA#Ed25519).
SSH supports a handful of types of cryptographic keys. The most used are [RSA](
<https://en.wikipedia.org/wiki/RSA_(cryptosystem)>) and the more modern [Ed25519](
https://en.wikipedia.org/wiki/EdDSA#Ed25519).
RSA is the de-facto standard and is supported everywhere (just choose a big enough key like 4096bits to be secure). Ed25519 is designed to be faster and smaller withouth sacrificing security, so is best suited for embedded devices or machines with low resources. It's supported on tilde (and really on anymodern system) but you may find older systems which do not support it.
RSA is the de-facto standard and is supported everywhere (just choose a big
enough key like 4096 bits to be secure). Ed25519 is designed to be faster and
smaller withouth sacrificing security, so is best suited for embedded devices
or machines with low resources. It's supported on tilde (and really on any
modern system) but you may find older systems which do not support it.
Below you'll find instructions to generate either type (or both if you want).
Keep in mind that these instructions leave your private keys unencrypted in your local hard disk. So keep them private; never share them.
A good solution is to provide a password for them at creation time, but this implies entering a password any time you used them (impractical) or use something like [ssh-agent](https://man.openbsd.org/ssh-agent.1) (a bit more complex)
Keep in mind that these instructions leave your private keys unencrypted in
your local hard disk. So keep them private; never share them. A good solution
is to provide a password for them at creation time, but this implies entering
a password any time you used them (impractical) or use something like [ssh-agent](
https://man.openbsd.org/ssh-agent.1) (a bit more complex)
We don't have documentation for this [(yet)](https://tildegit.org/team/site/src/branch/master/wiki) so either go with no password keys, or ask on IRC ([#team](https://web.tilde.chat/?join=team)) for help.
We don't have documentation for this [(yet)](https://tildegit.org/team/site/src/branch/master/wiki)
so either go with no password keys, or ask on IRC ([#team](https://web.tilde.chat/?join=team)) for help.
pick your fighter: [[mac](#mac)] | [[windows](#windows)] | [[linux](#linux)]
@ -93,11 +124,14 @@ for dd25519 keys:
ssh-keygen -t ed25519 -a 100
```
1. if you press enter to accept the defaults, your public and private key will be located at `~/.ssh/id_rsa.pub` and `~/.ssh/id_rsa` respectively (or `~/.ssh/id_ed25519.pub` and `~/.ssh/id_ed25519` if you chose ed25519 type)
1. if you press enter to accept the defaults, your public and private key will
be located at `~/.ssh/id_rsa.pub` and `~/.ssh/id_rsa` respectively (or
`~/.ssh/id_ed25519.pub` and `~/.ssh/id_ed25519` if you chose ed25519 type)
1. `cat ~/.ssh/id_rsa.pub` (or `cat ~/.ssh/id_ed25519.pub` for ed25519)
1. copy the output of the last command and paste it in the sshkey field on the signup form (or email it to [~sudoers](mailto:sudoers@tilde.team) if you already have an account)
1. copy the output of the last command and paste it in the sshkey field on the
signup form (or email it to [~sudoers](mailto:sudoers@tilde.team) if you already have an account)
#### using your keypair
@ -119,7 +153,8 @@ where username is your username (~ben would use `ssh ben@tilde.team`)
### windows
there are a couple options for using ssh on windows these days. i like to use [git bash](https://git-scm.com).
there are a couple options for using ssh on windows these days.
i like to use [git bash](https://git-scm.com).
#### generating your keypair
@ -151,11 +186,14 @@ for ed25519 keys:
ssh-keygen -t ed25519 -a 100
```
1. if you press enter to accept the defaults, your public and private key will be located at `~/.ssh/id_rsa.pub` and `~/.ssh/id_rsa` respectively (or `~/.ssh/id_ed25519.pub` and `~/.ssh/id_ed25519` if you chose ed25519 type)
1. if you press enter to accept the defaults, your public and private key will
be located at `~/.ssh/id_rsa.pub` and `~/.ssh/id_rsa` respectively (or
`~/.ssh/id_ed25519.pub` and `~/.ssh/id_ed25519` if you chose ed25519 type)
1. `cat ~/.ssh/id_rsa.pub` (or `cat ~/.ssh/id_ed25519.pub` for ed25519)
1. copy the output of the last command and paste it in the sshkey field on the signup form (or email it to [~sudoers](mailto:sudoers@tilde.team) if you already have an account)
1. copy the output of the last command and paste it in the sshkey field on the
signup form (or email it to [~sudoers](mailto:sudoers@tilde.team) if you already have an account)
#### using your keypair
@ -177,7 +215,8 @@ where username is your username (~ben would use `ssh ben@tilde.team`)
### linux
there are a lot of linux distros, but `ssh` and `ssh-keygen` should be available in almost all cases. if they're not, look up how to install ssh for your distro.
there are a lot of linux distros, but `ssh` and `ssh-keygen` should be available
in almost all cases. if they're not, look up how to install ssh for your distro.
#### generating your keypair
@ -201,11 +240,14 @@ for ed25519 keys:
ssh-keygen -t ed25519 -a 100
```
1. if you press enter to accept the defaults, your public and private key will be located at `~/.ssh/id_rsa.pub` and `~/.ssh/id_rsa` respectively (or `~/.ssh/id_ed25519.pub` and `~/.ssh/id_ed25519` if you chose ed25519 type)
1. if you press enter to accept the defaults, your public and private key will
be located at `~/.ssh/id_rsa.pub` and `~/.ssh/id_rsa` respectively (or
`~/.ssh/id_ed25519.pub` and `~/.ssh/id_ed25519` if you chose ed25519 type)
1. `cat ~/.ssh/id_rsa.pub` (or `cat ~/.ssh/id_ed25519.pub` for ed25519)
1. copy the output of the last command and paste it in the sshkey field on the signup form (or email it to [sudoers@tilde.team](mailto:sudoers@tilde.team) if you already have an account)
1. copy the output of the last command and paste it in the sshkey field on the
signup form (or email it to [sudoers@tilde.team](mailto:sudoers@tilde.team) if you already have an account)
#### using your keypair

View File

@ -2,42 +2,70 @@
author: ~cmccabe
published: true
title: teaching and learning on tilde.team
description:
category:
description:
category:
- main
---
# teaching and learning on tilde.team
**tl;dr** bring project ideas. bring your skills. learn by doing. help others who are trying to learn. share what you're working on.
**tl;dr** bring project ideas. bring your skills. learn by doing.
help others who are trying to learn. share what you're working on.
## 1. start learning, start teaching!
an important goal of tilde.team is to help you learn linux, programming, and general computing skills through the command line interface. we think it is important that this happens in a fun social environment. for this reason we encourage users to meet each other, to collaborate, to ask questions when you're stuck on something, and to offer help to others who are learning.
an important goal of tilde.team is to help you learn linux, programming, and
general computing skills through the command line interface. we think it is
important that this happens in a fun social environment. for this reason we
encourage users to meet each other, to collaborate, to ask questions when
you're stuck on something, and to offer help to others who are learning.
stuck for ideas? or looking for a bigger challenge? tilde.team also maintains a [list of internship opportunities and code challenge websites](https://tilde.team/wiki/?page=learning-opportunities). this list is a new feature of the site, so please contribute by letting us know (by email, IRC or pull request) of any other opportunities you know of.
stuck for ideas? or looking for a bigger challenge? tilde.team also maintains
a [list of internship opportunities and code challenge websites](
https://tilde.team/wiki/?page=learning-opportunities). this list is a new
feature of the site, so please contribute by letting us know (by email,
IRC or pull request) of any other opportunities you know of.
## 2. learning resources
tilde.team's IRC server is the social hub around which a lot of learning occurs. [log on](https://tilde.team/wiki/?page=irc) and get to know some people.
tilde.team's IRC server is the social hub around which a lot of learning
occurs. [log on](https://tilde.team/wiki/?page=irc) and get to know some people.
we have numerous compilers and interpreters installed in the shell, including g++, python, ruby, perl and many others. if you need something that is not currently installed, just ask ~ben or any admin on IRC.
we have numerous compilers and interpreters installed in the shell, including
g++, python, ruby, perl and many others. if you need something that is not
currently installed, just ask ~ben or any admin on IRC.
in addition to the specific programming utilities, remember that *NIX itself is a platform designed for communal programming. if you are working with others, you have several tools at your disposal. you can, of course, share files with each other. and you can communicate through private messages on IRC, through email, or using the shell-based 'talk' or 'write' utilities.
in addition to the specific programming utilities, remember that *NIX itself
is a platform designed for communal programming. if you are working with others,
you have several tools at your disposal. you can, of course, share files with
each other. and you can communicate through private messages on IRC, through
email, or using the shell-based 'talk' or 'write' utilities.
## 3. resource limits and performance profiling
good code is efficient code, and part of learning to be a good programmer is learning how to develop elegant solutions that use the minimum system resources necessary. this is hard! but it is even more important on a multi-user system like tilde.team.
good code is efficient code, and part of learning to be a good programmer is
learning how to develop elegant solutions that use the minimum system resources
necessary. this is hard! but it is even more important on a multi-user system
like tilde.team.
some resource limits are established through /etc/security/limits.conf --you can read this file yourself to see what they are.
some resource limits are established through /etc/security/limits.conf - you can
read this file yourself to see what they are.
beyond those limits, we simply ask that you monitor your code and be considerate of others on the system.
beyond those limits, we simply ask that you monitor your code and be considerate
of others on the system.
as we develop more learning resources on the tilde.team wiki, we will provide some guidance about how to profile your code. of course, a quick web search for "code profiling [your language]" will give you a lot of help as well.
as we develop more learning resources on the tilde.team wiki, we will provide
some guidance about how to profile your code. of course, a quick web search
for "code profiling [your language]" will give you a lot of help as well.
## 4. learning how to build a learning environment
the number one thing we know about learning is that being able to socialize with other learners and teachers is useful. but beyond this, we are working all the time to build and improve the other supporting resources on tilde.team.
the number one thing we know about learning is that being able to socialize with
other learners and teachers is useful. but beyond this, we are working all the
time to build and improve the other supporting resources on tilde.team.
you can help! if you have suggestions about other resources or ways to help people practice programming or other linux skills, pop in to IRC and talk about it. many of the ideas that have already helped make this place better came from people like you. everybody is learning here; including the admins!
you can help! if you have suggestions about other resources or ways to help
people practice programming or other linux skills, pop in to IRC and talk
about it. many of the ideas that have already helped make this place better
came from people like you. everybody is learning here; including the admins!

View File

@ -13,7 +13,8 @@ bashblog is available system-wide as `bb`
tildeblogs can be built with [bashblog](https://tildegit.org/team/bashblog)
change to your ~/public_html/blog directory: `cd ~/public_html/blog` (bashblog will do this for you if you forget)
change to your ~/public_html/blog directory: `cd ~/public_html/blog`
(bashblog will do this for you if you forget)
---
@ -32,7 +33,8 @@ change to your ~/public_html/blog directory: `cd ~/public_html/blog` (bashblog w
edit the `.config` file to change the name and url and other settings for your blog
for an example of customization, see [~ben's blog](https://tilde.team/~ben/blog/) ([config source](https://tildegit.org/ben/tilde/src/branch/master/blog/.config)).
for an example of customization, see [~ben's blog](https://tilde.team/~ben/blog/)
([config source](https://tildegit.org/ben/tilde/src/branch/master/blog/.config)).
for more details: see [the bashblog repo](https://tildegit.org/team/bashblog)

View File

@ -10,7 +10,8 @@ category:
# tildepages
because [~ben](https://tilde.team/~ben/) hoards domain names, you can use the following domains with your tildepage:
because [~ben](https://tilde.team/~ben/) hoards domain names, you can
use the following domains with your tildepage:
see also the [master list of domains](?page=domains).
@ -24,7 +25,8 @@ see also the [master list of domains](?page=domains).
* tilde.team
* tildeteam.org
this means you can access your user page from any of the following url formats, substituting domain and username:
this means you can access your user page from any of the following
url formats, substituting domain and username:
* `https://domain.tld/~username/`
* `https://domain.tld/u/username/`

View File

@ -9,9 +9,11 @@ category:
# terms of service
tilde.team relies on the common courtesy and consideration of users to make its services fair for everyone. the following offences will result in a service ban:
tilde.team relies on the common courtesy and consideration of users to make
its services fair for everyone. the following offences will result in a service ban:
tl;dr: don't do anything illegal or harmful, especially anything that could [anger the hosting company](https://www.hetzner.com/rechtliches/root-server/)
tl;dr: don't do anything illegal or harmful, especially anything that could
[anger the hosting company](https://www.ovh.com/world/support/terms-and-conditions/)
here are some things that we don't allow:
@ -30,7 +32,14 @@ here are some things that we don't allow:
outgoing net- and portscanning is prohibited on tilde.team.
after the [major outage](/~ben/blog/november-13-post-mortem.html) of november 13th, we have run in to the clause in the [hetzner tos](https://www.hetzner.com/rechtliches/root-server/) that prohibits net- and portscanning. please don't try to reach anything in the [RFC1918](https://tools.ietf.org/html/rfc1918) private address space. for some reason, packets sent there will end up at the default gateway and may be interpreted as an attack.
> this is outdated now that tilde.team lives on ovh
after the [major outage](/~ben/blog/november-13-post-mortem.html) of november 13th,
we have run in to the clause in the [hetzner tos](
https://www.hetzner.com/rechtliches/root-server/) that prohibits net- and
portscanning. please don't try to reach anything in the [RFC-1918](
https://tools.ietf.org/html/rfc1918) private address space. for some reason,
packets sent there will end up at the default gateway and may be interpreted as an attack.
i've added firewall rule to prevent outgoing requests to these subnets:

View File

@ -17,7 +17,8 @@ tmux or screen session. let's use systemd user units to manage it!
mkdir -p ~/.config/systemd/user/
```
1. create a basic service. save something like this in ~/.config/systemd/user/my-new-service.service (adjusting where necessary)
1. create a basic service. save something like this in
`~/.config/systemd/user/my-new-service.service` (adjusting where necessary)
```bash
[Unit]
Description=foo
@ -44,3 +45,5 @@ done!
you can now use `systemctl --user` to manage your daemonized process.
pro-tip: add `alias sysu='systemctl --user'` to your shell's configuration
for a handy shortcut (or any other alias as you choose)