<feed xmlns='http://www.w3.org/2005/Atom'>
<title>farside/.gitignore, branch main</title>
<subtitle>Farside fork</subtitle>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/'/>
<entry>
<title>Add cross compiler script [skip ci]</title>
<updated>2025-01-29T19:45:56+00:00</updated>
<author>
<name>Ben Busby</name>
<email>contact@benbusby.com</email>
</author>
<published>2025-01-29T19:45:56+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=4ec94a141d99da43df250d331d6651b8c870e5c9'/>
<id>4ec94a141d99da43df250d331d6651b8c870e5c9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update breezewiki routing behavior, update readme</title>
<updated>2025-01-27T19:17:20+00:00</updated>
<author>
<name>Ben Busby</name>
<email>contact@benbusby.com</email>
</author>
<published>2025-01-27T19:17:20+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=6e64a93fd17767bfdb40dda94d354c7e57202ab1'/>
<id>6e64a93fd17767bfdb40dda94d354c7e57202ab1</id>
<content type='text'>
BreezeWiki requires the subdomain of a fandom link to be preserved when
routing, otherwise the redirect doesn't work correctly.

Cleaned up readme examples
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
BreezeWiki requires the subdomain of a fandom link to be preserved when
routing, otherwise the redirect doesn't work correctly.

Cleaned up readme examples
</pre>
</div>
</content>
</entry>
<entry>
<title>Rewrite project, add daily update of services list</title>
<updated>2025-01-21T20:46:29+00:00</updated>
<author>
<name>Ben Busby</name>
<email>contact@benbusby.com</email>
</author>
<published>2025-01-21T20:46:29+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=b5bad4defc6c75b9b969658229ce5fd2f3a46107'/>
<id>b5bad4defc6c75b9b969658229ce5fd2f3a46107</id>
<content type='text'>
The project was rewritten from Elixir to Go, primarily because:

- I don't write Elixir anymore and don't want to maintain a project in a
  language I no longer write
- I already write Go for other projects, including my day job, so it's
  a safer bet for a project that I want to maintain long term
- Go allows me to build portable executables that will make it easier
  for others to run farside on their own machines

The Go version of Farsside also has a built in task to fetch the latest
services{-full}.json file from the repo and ingest it, which makes
running a farside server a lot simpler.

It also automatically fetches the latest instance state from
https://farside.link unless configured as a primary farside node, which
will allow others to use farside without increasing traffic to all
instances that are queried by farside (just to the farside node itself).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The project was rewritten from Elixir to Go, primarily because:

- I don't write Elixir anymore and don't want to maintain a project in a
  language I no longer write
- I already write Go for other projects, including my day job, so it's
  a safer bet for a project that I want to maintain long term
- Go allows me to build portable executables that will make it easier
  for others to run farside on their own machines

The Go version of Farsside also has a built in task to fetch the latest
services{-full}.json file from the repo and ingest it, which makes
running a farside server a lot simpler.

It also automatically fetches the latest instance state from
https://farside.link unless configured as a primary farside node, which
will allow others to use farside without increasing traffic to all
instances that are queried by farside (just to the farside node itself).
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove Redis dep, replace w/ native Elixir lib</title>
<updated>2022-10-31T22:45:31+00:00</updated>
<author>
<name>Ben Busby</name>
<email>contact@benbusby.com</email>
</author>
<published>2022-10-31T22:45:31+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=e58d6e23edd2cfc1da7feab3cfc2b09326b73bff'/>
<id>e58d6e23edd2cfc1da7feab3cfc2b09326b73bff</id>
<content type='text'>
This removes the dependency on Redis for core app functionality. Rather
than using the key/value store provided by Redis, Farside now uses a
key/val store provided by [cubdb](https://github.com/lucaong/cubdb) for
identical functionality but without reliance on a non-Elixir service.

This solution was chosen instead of ets, because storing instance data
in memory leads to a period of broken functionality whenever the app
restarts and hasn't re-populated instance data yet. It was also chosen
instead of dets, because the documentation for dets was pretty hard to
understand at first glance.

Tests and the CI build were updated to reflect the removed dependency on
Redis.

New environment variable `FARSIDE_DATA_DIR` can be used to point to a
directory where the instance data can be stored by cubdb.

Co-authored-by: Jason Clark &lt;mithereal@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This removes the dependency on Redis for core app functionality. Rather
than using the key/value store provided by Redis, Farside now uses a
key/val store provided by [cubdb](https://github.com/lucaong/cubdb) for
identical functionality but without reliance on a non-Elixir service.

This solution was chosen instead of ets, because storing instance data
in memory leads to a period of broken functionality whenever the app
restarts and hasn't re-populated instance data yet. It was also chosen
instead of dets, because the documentation for dets was pretty hard to
understand at first glance.

Tests and the CI build were updated to reflect the removed dependency on
Redis.

New environment variable `FARSIDE_DATA_DIR` can be used to point to a
directory where the instance data can be stored by cubdb.

Co-authored-by: Jason Clark &lt;mithereal@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Auto select frontend for links to "parent" service</title>
<updated>2022-06-09T19:08:01+00:00</updated>
<author>
<name>Ben Busby</name>
<email>contact@benbusby.com</email>
</author>
<published>2022-06-09T19:08:01+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=5006b97dfa42f9338bc2ee7080b79d37d4343cfa'/>
<id>5006b97dfa42f9338bc2ee7080b79d37d4343cfa</id>
<content type='text'>
Farside now supports redirecting based on a provided link to a "parent"
service, if such a parent service is supported.

For example, a link such as:

farside.link/https://www.youtube.com/watch?v=dQw4w9WgXcQ

will now redirect to any of the available YouTube related frontends.

This works by matching against a mapping of "parent" service domains
("youtube.com", "reddit.com", etc) to a list of their respective frontend
alternatives (["invidious", "piped"], ["libreddit", "teddit"], etc). A
random element is chosen from this list, and the remainder of Farside's
routing logic proceeds as if the user had chosen the service directly to
begin with.

Closes #37
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Farside now supports redirecting based on a provided link to a "parent"
service, if such a parent service is supported.

For example, a link such as:

farside.link/https://www.youtube.com/watch?v=dQw4w9WgXcQ

will now redirect to any of the available YouTube related frontends.

This works by matching against a mapping of "parent" service domains
("youtube.com", "reddit.com", etc) to a list of their respective frontend
alternatives (["invidious", "piped"], ["libreddit", "teddit"], etc). A
random element is chosen from this list, and the remainder of Farside's
routing logic proceeds as if the user had chosen the service directly to
begin with.

Closes #37
</pre>
</div>
</content>
</entry>
<entry>
<title>Preserve redirect with `/_/` path prefix (#13)</title>
<updated>2022-01-27T18:57:41+00:00</updated>
<author>
<name>Ben Busby</name>
<email>contact@benbusby.com</email>
</author>
<published>2022-01-27T18:57:41+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=932f3bbcab9be82aafb487d7890fde83b2210a7b'/>
<id>932f3bbcab9be82aafb487d7890fde83b2210a7b</id>
<content type='text'>
This adds a straightforward way of preserving Farside's redirecting
behavior in the user's browser history. That way if an instance becomes
unavailable between the 5 min scans, the user can opt to navigate back
one page and be taken to a new instance.

This is accomplished using a single line of JS, and could potentially
work as the default behavior of Farside (with the current default
behavior requiring a path prefix instead). This should be revisited down
the road when more people are using this service.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds a straightforward way of preserving Farside's redirecting
behavior in the user's browser history. That way if an instance becomes
unavailable between the 5 min scans, the user can opt to navigate back
one page and be taken to a new instance.

This is accomplished using a single line of JS, and could potentially
work as the default behavior of Farside (with the current default
behavior requiring a path prefix instead). This should be revisited down
the road when more people are using this service.</pre>
</div>
</content>
</entry>
<entry>
<title>Write results of update script to file for debugging</title>
<updated>2021-10-23T00:07:59+00:00</updated>
<author>
<name>Ben Busby</name>
<email>noreply+git@benbusby.com</email>
</author>
<published>2021-10-23T00:07:59+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=edcab37c7d48259c7cf7969f95cb4efdbd728c93'/>
<id>edcab37c7d48259c7cf7969f95cb4efdbd728c93</id>
<content type='text'>
The update script now writes the available instances to a
.update-results* file (where previous runs have "-prev" appended to the
file name). This helps to see how instance availability changes between
runs of the script when debugging overall functionality of the app.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The update script now writes the available instances to a
.update-results* file (where previous runs have "-prev" appended to the
file name). This helps to see how instance availability changes between
runs of the script when debugging overall functionality of the app.
</pre>
</div>
</content>
</entry>
<entry>
<title>Initial commit</title>
<updated>2021-10-21T21:50:04+00:00</updated>
<author>
<name>Ben Busby</name>
<email>noreply+git@benbusby.com</email>
</author>
<published>2021-10-21T21:50:04+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=be9606094c256471e256b1d00d6b681528547d58'/>
<id>be9606094c256471e256b1d00d6b681528547d58</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
