<feed xmlns='http://www.w3.org/2005/Atom'>
<title>farside/.github/workflows/elixir.yml, branch main</title>
<subtitle>Farside fork</subtitle>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/'/>
<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>Use erlef/setup-beam, bump gha versions (#76)</title>
<updated>2022-10-31T23:30:07+00:00</updated>
<author>
<name>Kian-Meng Ang</name>
<email>kianmeng@cpan.org</email>
</author>
<published>2022-10-31T23:30:07+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=f0150c6160724c1b5013ef84cd5a7f09e0ac9720'/>
<id>f0150c6160724c1b5013ef84cd5a7f09e0ac9720</id>
<content type='text'>
Remove extra redirection. See https://github.com/erlef/setup-beam/issues/20</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove extra redirection. See https://github.com/erlef/setup-beam/issues/20</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>Use full service list for tests</title>
<updated>2022-07-27T20:12:48+00:00</updated>
<author>
<name>Ben Busby</name>
<email>contact@benbusby.com</email>
</author>
<published>2022-07-27T20:12:48+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=592e492a622972ba1ae57e32cac61ff9e8ec8a76'/>
<id>592e492a622972ba1ae57e32cac61ff9e8ec8a76</id>
<content type='text'>
The filtered service list isn't guaranteed to have more than one
instance per service, which fails a test that was designed to ensure
back-to-back requests don't use the same instance. Using the full
services json file more accurately tests the intended functionality for
Farside.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The filtered service list isn't guaranteed to have more than one
instance per service, which fails a test that was designed to ensure
back-to-back requests don't use the same instance. Using the full
services json file more accurately tests the intended functionality for
Farside.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use quantum core for update scheduling</title>
<updated>2021-11-24T16:35:21+00:00</updated>
<author>
<name>Ben Busby</name>
<email>noreply+git@benbusby.com</email>
</author>
<published>2021-11-24T16:35:21+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=ff97d258f0ac2bbd3b89df892ce3aed08b5e0a42'/>
<id>ff97d258f0ac2bbd3b89df892ce3aed08b5e0a42</id>
<content type='text'>
Rather than requiring a traditional crontab install, the app now
leverages quantum-core (link below) to schedule the instance update/sync
task every 5 minutes. Some updates as a result:

  - The new job is scheduled at runtime in server.ex.
  - The update.exs script was refactored to be compiled along with the
    rest of the app as instances.ex.
  - Scheduler and Server modules were added for creating and executing
    the new update task
  - All shell scripts were removed, as they are no longer needed

https://github.com/quantum-elixir/quantum-core
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rather than requiring a traditional crontab install, the app now
leverages quantum-core (link below) to schedule the instance update/sync
task every 5 minutes. Some updates as a result:

  - The new job is scheduled at runtime in server.ex.
  - The update.exs script was refactored to be compiled along with the
    rest of the app as instances.ex.
  - Scheduler and Server modules were added for creating and executing
    the new update task
  - All shell scripts were removed, as they are no longer needed

https://github.com/quantum-elixir/quantum-core
</pre>
</div>
</content>
</entry>
<entry>
<title>Test for valid service redirects</title>
<updated>2021-11-10T18:47:03+00:00</updated>
<author>
<name>Ben Busby</name>
<email>noreply+git@benbusby.com</email>
</author>
<published>2021-11-10T18:47:03+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=f33279c41b17545bfbe7c0f9baa5d1b49c814a30'/>
<id>f33279c41b17545bfbe7c0f9baa5d1b49c814a30</id>
<content type='text'>
Updates testing to iterate through all available services and validate
that each one correctly produces a 302 redirect.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Updates testing to iterate through all available services and validate
that each one correctly produces a 302 redirect.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use elixir 1.12 and otp 24 in build/test</title>
<updated>2021-11-09T22:22:32+00:00</updated>
<author>
<name>Ben Busby</name>
<email>noreply+git@benbusby.com</email>
</author>
<published>2021-11-09T22:22:32+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=85123cb52427532f33f5558b0aa94728b7cb2f66'/>
<id>85123cb52427532f33f5558b0aa94728b7cb2f66</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Skip querying all instances w/ "test mode"</title>
<updated>2021-11-09T22:12:58+00:00</updated>
<author>
<name>Ben Busby</name>
<email>noreply+git@benbusby.com</email>
</author>
<published>2021-11-09T22:12:58+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=39c244d970d802e6ee2853cfbb5f73b8c06a2fdc'/>
<id>39c244d970d802e6ee2853cfbb5f73b8c06a2fdc</id>
<content type='text'>
Now allows setting FARSIDE_TEST to skip individually fetching each
instance, and instead just adds all of them to redis instantly. This
allows for an easier time in CI builds, for both the sake of speed and
to prevent a scenario where many simultaneous builds have a noticeable
impact on actual instances.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now allows setting FARSIDE_TEST to skip individually fetching each
instance, and instead just adds all of them to redis instantly. This
allows for an easier time in CI builds, for both the sake of speed and
to prevent a scenario where many simultaneous builds have a noticeable
impact on actual instances.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add elixir CI</title>
<updated>2021-10-27T03:21:00+00:00</updated>
<author>
<name>Ben Busby</name>
<email>noreply+git@benbusby.com</email>
</author>
<published>2021-10-27T03:21:00+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/farside/commit/?id=83bcad2eda38e34897dc013e2477cc4e26530d8e'/>
<id>83bcad2eda38e34897dc013e2477cc4e26530d8e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
