Compare commits

...

83 commits
xsl ... main

Author SHA1 Message Date
ba762449ca Merge pull request 'June 2024' (#8) from june24 into main
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #8
2024-06-08 00:47:05 +00:00
ebb4a84a56
Add commentary for DSP and hackathon, other minor fixes
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-07 17:09:37 -05:00
e1963deb53
Applying @moksha commentary about @daudix post
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-06-07 17:04:03 -03:00
iacore
28a33c391d
add content
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-06 17:35:17 +00:00
c9de869286
Adding a divider and a bit of margin at the bottom of the discuss message
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-06-04 13:24:51 -03:00
538d5c188d
Make note to mention upcoming hackathon
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-04 09:38:25 -05:00
b45dd1b853
Include discuss message at the end of every post (@cloudyy can you check that I did this correctly?)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-04 09:35:44 -05:00
2d18858ac3
Puzzle of the month (really just the golfathon) 2024-06-04 09:35:25 -05:00
dedd500786
Added prettier:check and prettier:fix scripts to package.json + Applying prettier fixes
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-06-04 08:20:16 -03:00
b28f4eae3f
Add @iacore comment for the Bad Apple post
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-03 21:43:02 -05:00
f009c2b195
Lampshade the clickbait Bad Apple title
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-03 21:41:40 -05:00
493d989d91
Add @daudix Neocities post and @a short story series post
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-03 21:38:15 -05:00
48389ae736
Add @nvpie's Syncthing post and commentary
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-03 09:32:43 -05:00
ee486e9707
More commentary for user management post: filenames are another example of POSIX being too flexible
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-02 22:40:41 -05:00
950e5b1ce8
Add commentary for @nvpie's Linux desktop workflow post
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-02 22:30:58 -05:00
cbbad19e09
Licensing exozine and the status page
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-02 18:23:25 -05:00
2b7b68dddd
Maybe we could write about @dragongoose's DSP and SDR stuff
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-02 17:45:09 -05:00
e74f0e14fc
Mention today's hackathon
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-02 17:22:09 -05:00
iacore
4d46609389
Add link to executable toki pona
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-02 20:32:04 +00:00
iacore
16969d2a6e
let's not
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-02 20:23:14 +00:00
344a90de48
adding a small comment on @iacore post about static website hosting providers
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-06-02 14:13:47 -03:00
62b0928d8b
adding some commentary about the animated qr code project
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-06-02 13:52:45 -03:00
02540842cd
Write commentary for POSIX user management posts
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-02 11:35:37 -05:00
ad3a73c74d
Add some links for June 2024 issue
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-06-01 11:14:15 -05:00
cfdd6b9313 Merge pull request 'Initial draft of may's issue' (#7) from may24 into main
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #7
Reviewed-by: Anthony Wang <a@noreply.git.exozy.me>
2024-05-08 17:35:05 +00:00
8c2de66318
Fix typo
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-05-08 11:14:52 -04:00
a73e46a100
Commentary for self expression post
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-05-08 11:14:16 -04:00
08e4efd8f2
added a simple description of the post
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-05-06 23:33:09 -03:00
3fa52ccea7
Added a more in depth note about the shutdown of nextcloud and peertube 2024-05-06 23:32:10 -03:00
88bce73442
Add short note about LDAP->PAM switch, Nextcloud and PeerTube shutting down
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-05-06 22:16:32 -04:00
3c7fc64cf7
Add CC BY-SA 4.0 license
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-05-06 21:37:35 -04:00
efae1aa88b
added a description about the solar eclipse post
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-05-06 20:24:59 -03:00
9ec8be1ae4
Add link to solar eclipse post
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-05-04 19:28:04 -04:00
a97d84ac7e
Initial draft of may's issue
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-05-04 20:10:25 -03:00
e3a59e83bd Merge pull request 'Link to @ersei's skateboard post in the April issue' (#6) from add-ersei-link into main
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
Reviewed-on: #6
2024-05-02 21:18:40 +00:00
d989c5a19b
Link to @ersei's skateboard post in the April issue
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-05-02 13:09:33 -04:00
1c037dceb4 Merge pull request 'Initial draft of april's issue' (#5) from april24 into main
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #5
Reviewed-by: Anthony Wang <a@noreply.git.exozy.me>
2024-04-08 02:06:02 +00:00
a
1335241075 Capitalize Codeberg
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline failed
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-04-08 01:43:15 +00:00
a
d526283a75 Refer to Ersei by username
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-04-07 22:49:36 +00:00
a
84833e4578 Improve wording for lesson/lesion pun
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-04-07 22:47:03 +00:00
7c9d0e75e8
Running CI checks only if the author is me
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-04-07 18:33:53 -03:00
91d22214ad
Add some details about the RSS combine changes
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-04-07 17:26:35 -04:00
a8875d3962
Updating astro site url
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-04-07 17:48:18 -03:00
ea77696d9f
Escaping single quotes + small prettier fix
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-04-07 17:41:18 -03:00
iacore
2d53578b5d
remove word
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-04-07 20:37:17 +00:00
iacore
2334650ab0
remove words
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/manual/woodpecker Pipeline failed
2024-04-07 20:07:48 +00:00
iacore
c66d9a70cc
comment on https://ersei.net/en/blog/sk8r
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-04-07 20:03:26 +00:00
iacore
b1cd19f534
add info to describe my article better
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-04-07 19:52:14 +00:00
47ec4885b1
Link to origami puzzle solutions
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-04-02 20:20:49 -04:00
e2238c019b
Fix typo
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-04-02 19:21:02 -04:00
cfbddbab95
Add Ersei's skateboard post to TODOs
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-04-02 19:14:53 -04:00
a73f0fcf5b
Write commentary for April Fools' Day puzzle
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-04-02 19:12:29 -04:00
e57dc8bf6d
Initial draft of april's issue
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-04-02 19:44:20 -03:00
4b86c1457c
Added the link for ersei's post
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-03-03 23:37:23 -03:00
c31598c39b Merge pull request 'March 2024 issue' (#4) from mar24 into main
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
Reviewed-on: #4
2024-03-04 02:25:53 +00:00
a
4288af5565 Change title to something less generic
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/pull_request_closed/woodpecker Pipeline failed
2024-03-04 02:20:09 +00:00
95a77e5f34
Revert "Making all headers capitalized"
Some checks failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
This reverts commit 9e7150286d.
2024-03-03 23:04:11 -03:00
9e7150286d
Making all headers capitalized
Some checks failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-03-03 22:55:59 -03:00
a
1eaad6e668 Make the headings sentence case
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-03-04 01:50:28 +00:00
ce06e1b5cb
Added comments about "Floats are Weird" and ersei post about the new server
Some checks failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-03-03 22:46:36 -03:00
a
2bf327bae2 Origami puzzle
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-03-03 21:56:34 +00:00
a
0c1a4b6998 Add Weblate description, a few small style fixes
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-03-02 17:24:17 +00:00
iacore
21370f0487
comment on pulseaudiodb
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-03-02 17:16:33 +00:00
a
1cd414d702 Improve wording in mar24 issue
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
2024-03-02 17:10:15 +00:00
77658f8d95
List the people who helped redesign the explore page
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/manual/woodpecker Pipeline was successful
2024-03-01 14:48:23 -05:00
df4a1b0d42
First draft of March 2024 post
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2024-03-01 14:46:10 -05:00
2534413a9f
Use XSL to style RSS feed (thanks @iacore!)
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-02-24 22:54:12 -05:00
b3d234a0b0
Use astro build --outDir instead of copying dist to another dir
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
This ensures that the outDir is clean and doesn't contain old files from previous builds
2024-02-24 22:29:56 -05:00
a
6a471b641e Move blog posts to the beginning of the feb24 issue
Some checks failed
ci/woodpecker/deployment/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/manual/woodpecker Pipeline failed
2024-02-14 22:14:48 +00:00
892e4f6b0d
Removing Astro description in meta description
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-02-14 18:22:18 -03:00
5cf6ecbad8
Fix typo in .woodpecker.yml
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-02-14 00:50:10 -05:00
27ff71da22
Build
Some checks failed
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline failed
2024-02-14 01:52:58 -03:00
2837e779bd Merge pull request 'February 2024 issue' (#3) from feb24 into main
Reviewed-on: #3
2024-02-14 02:25:19 +00:00
5afdf70e96
Remove hardcodeded clone path in .woodpecker.yml 2024-02-13 21:23:49 -05:00
b4a60ff0e8
Add srht-time post and 星布 2024-02-11 17:10:24 -05:00
ee87d021f1
Removing the title from the post contents
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-02-11 18:10:00 -03:00
6f225471d1
Added the title in the layout 2024-02-11 18:09:20 -03:00
b93809d073
Added a ci step for generating a preview of development branches
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-02-11 16:31:57 -03:00
ae78a900a0
Added the date as the header title
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
2024-02-11 16:22:34 -03:00
81316d2bf0
Add post author for blog posts, copy descriptions from explore page 2024-02-11 14:05:19 -05:00
5791466dbc
Initial draft of Feb 2024 issue 2024-02-11 12:55:10 -05:00
a
38babd30e1 Change deprecated pipeline: to steps: in .woodpecker.yml
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
2024-01-31 21:21:57 +00:00
f4af7ab9a1
a few more css tweaks
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/deployment/woodpecker Pipeline was successful
2024-01-30 17:02:47 -03:00
22 changed files with 762 additions and 59 deletions

View file

@ -1,15 +1,23 @@
pipeline:
steps:
check:
image: fish
commands:
- $HOME/.bun/bin/bun install
- $HOME/.bun/bin/bun astro check
when:
evaluate: 'CI_COMMIT_AUTHOR == "cloudyy"'
preview:
image: fish
commands:
- $HOME/.bun/bin/bun astro build --outDir /srv/http/zine-preview
when:
event: ['deployment']
path:
exclude: ['README.md', 'scripts/*']
build:
image: fish
commands:
- $HOME/.bun/bin/bun astro build
- mkdir -p /srv/http/zine
- cp -r $HOME/.cache/woodpecker/zine/dist/* /srv/http/zine
- $HOME/.bun/bin/bun astro build --outDir /srv/http/zine
when:
branch: main
event: ['push', 'deployment']

427
LICENSE Normal file
View file

@ -0,0 +1,427 @@
Attribution-ShareAlike 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution-ShareAlike 4.0 International Public
License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution-ShareAlike 4.0 International Public License ("Public
License"). To the extent this Public License may be interpreted as a
contract, You are granted the Licensed Rights in consideration of Your
acceptance of these terms and conditions, and the Licensor grants You
such rights in consideration of benefits the Licensor receives from
making the Licensed Material available under these terms and
conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. BY-SA Compatible License means a license listed at
creativecommons.org/compatiblelicenses, approved by Creative
Commons as essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
e. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
g. License Elements means the license attributes listed in the name
of a Creative Commons Public License. The License Elements of this
Public License are Attribution and ShareAlike.
h. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
i. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
k. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
l. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
m. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. Additional offer from the Licensor -- Adapted Material.
Every recipient of Adapted Material from You
automatically receives an offer from the Licensor to
exercise the Licensed Rights in the Adapted Material
under the conditions of the Adapter's License You apply.
c. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
b. ShareAlike.
In addition to the conditions in Section 3(a), if You Share
Adapted Material You produce, the following conditions also apply.
1. The Adapter's License You apply must be a Creative Commons
license with the same License Elements, this version or
later, or a BY-SA Compatible License.
2. You must include the text of, or the URI or hyperlink to, the
Adapter's License You apply. You may satisfy this condition
in any reasonable manner based on the medium, means, and
context in which You Share Adapted Material.
3. You may not offer or impose any additional or different terms
or conditions on, or apply any Effective Technological
Measures to, Adapted Material that restrict exercise of the
rights granted under the Adapter's License You apply.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material,
including for purposes of Section 3(b); and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public licenses.
Notwithstanding, Creative Commons may elect to apply one of its public
licenses to material it publishes and in those instances will be
considered the “Licensor.” The text of the Creative Commons public
licenses is dedicated to the public domain under the CC0 Public Domain
Dedication. Except for the limited purpose of indicating that material
is shared under a Creative Commons public license or as otherwise
permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the public
licenses.
Creative Commons may be contacted at creativecommons.org.

View file

@ -6,5 +6,5 @@ import mdx from '@astrojs/mdx';
// https://astro.build/config
export default defineConfig({
integrations: [tailwind(), mdx()],
site: 'https://zinedev.exozy.me',
site: 'https://zine.exozy.me',
});

View file

@ -1,33 +1,35 @@
{
"name": "exozine",
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro check && astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/check": "^0.4.1",
"@astrojs/mdx": "^2.0.6",
"@astrojs/rss": "^4.0.3",
"@astrojs/tailwind": "^5.1.0",
"astro": "^4.1.2",
"autoprefixer": "^10.4.16",
"daisyui": "^4.6.0",
"date-fns": "^3.2.0",
"markdown-it": "^14.0.0",
"sanitize-html": "^2.11.0",
"tailwindcss": "^3.4.1",
"typescript": "^5.3.3"
},
"devDependencies": {
"@types/markdown-it": "^13.0.7",
"@types/node": "^20.11.2",
"@types/rss": "^0.0.32",
"@types/sanitize-html": "^2.9.5",
"prettier": "^3.2.2"
}
}
"name": "exozine",
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro check && astro build",
"preview": "astro preview",
"astro": "astro",
"prettier:check": "prettier . --check",
"prettier:fix": "prettier . --write"
},
"dependencies": {
"@astrojs/check": "^0.4.1",
"@astrojs/mdx": "^2.0.6",
"@astrojs/rss": "^4.0.3",
"@astrojs/tailwind": "^5.1.0",
"astro": "^4.1.2",
"autoprefixer": "^10.4.16",
"daisyui": "^4.6.0",
"date-fns": "^3.2.0",
"markdown-it": "^14.0.0",
"sanitize-html": "^2.11.0",
"tailwindcss": "^3.4.1",
"typescript": "^5.3.3"
},
"devDependencies": {
"@types/markdown-it": "^13.0.7",
"@types/node": "^20.11.2",
"@types/rss": "^0.0.32",
"@types/sanitize-html": "^2.9.5",
"prettier": "^3.2.2"
}
}

35
public/rss.xsl Normal file
View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="3.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:content="http://purl.org/rss/1.0/modules/content/">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>
RSS Feed | <xsl:value-of select="//title"/>
</title>
<!-- where is the stylesheet? -->
<!-- <link rel="stylesheet" href="/assets/styles.css"/> -->
</head>
<body>
<p>
This is an RSS feed. Visit
<a href="https://aboutfeeds.com">About Feeds</a>
to learn more and get started.
</p>
<h1>RSS Feed | <xsl:value-of select="//title"/></h1>
<xsl:for-each select="//item">
<article>
<a>
<xsl:attribute name="href">
<xsl:value-of select="link"/>
</xsl:attribute>
<xsl:value-of select="title"/>
</a>
</article>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View file

@ -6,8 +6,6 @@ author: 'The exozyme community'
description: 'Stuff happened.'
---
# April 2023
Stuff happened.
- [Saying Goodbye to GitHub](https://ersei.net/en/blog/bye-bye-github)

View file

@ -6,8 +6,6 @@ author: 'The exozyme community'
description: "So... exozine was supposed to be a monthly thing, but then I kinda forgot about it... oops. Well, don't worry, here's the February issue, only 4 months late!"
---
# February 2023
So... exozine was supposed to be a monthly thing, but then I kinda forgot about it... oops. Well, don't worry, here's the February issue, only 4 months late!
- [Finding a Grav Bug with git bisect](https://ersei.net/en/blog/git-bisect)

View file

@ -6,8 +6,6 @@ author: 'The exozyme community'
description: 'Hi! This is the first issue of exozine, a monthly magazine about all the cool stuff that our exozyme community has been doing'
---
# January 2023
Hi! This is the first issue of exozine, a monthly magazine about all the cool stuff that our exozyme community has been doing
- [Why Does My Forgejo Instance Have Thousands of Accounts?](https://a.exozy.me/posts/forgejo-instance-thousands-accounts/)

View file

@ -6,8 +6,6 @@ author: 'The exozyme community'
description: 'Not very many blog posts this month, but we made some interesting websites!'
---
# June 2023
Not very many blog posts this month, but we made some interesting websites!
- [NixOS and my Descent into Insanity](https://ersei.net/en/blog/its-nixin-time)

View file

@ -6,8 +6,6 @@ author: 'The exozyme community'
description: "Here's the March issue of exozine, only 3 months late!"
---
# March 2023
Here's the March issue of exozine, only 3 months late!
- [Server Updates: March Madness Edition](https://ersei.net/en/blog/updates-2023-03)

View file

@ -6,8 +6,6 @@ author: 'The exozyme community'
description: 'More stuff happened.'
---
# May 2023
More stuff happened.
- [Fortune of the Day](https://fortune.exozy.me)

View file

@ -0,0 +1,33 @@
---
layout: '../../../layouts/Layout.astro'
date: '2024-04-02T21:53:26.128Z'
title: 'April 2024'
author: 'The exozyme community'
description: "An April Fools' Day puzzle, Plasma 6 bugs, and a crawler for novels"
---
## April Fools' Day puzzle
On April Fools' Day, the exozyme homepage was completely blank. Or was it? The puzzle is no longer up on that homepage, but you can still find it [here](https://blank.exozy.me). Good luck! The solution will be posted next month.
## Over-Engineered Novel Crawler
[In this post](https://www.1a-insec.net/blog/45-explore/), @iacore talks about a prototype novel crawler built with PicoLisp to, as the name suggests, extract information on novel websites. What makes it different from other novel crawlers is that it comes with a task-agnostic planner. You can find the source code in its [Codeberg repo](https://codeberg.org/iacore/c.noveler4/).
## Plasma 6 fingerprint bug
KDE Plasma 6 was finally released, but unfortunately nothing is perfect and it had some bugs, being one of them a fingerprint issue on the login screen. [In this post](https://a.exozy.me/posts/plasma-6-fingerprint-bug), @a describes how to solve the problem after some trial and error and by exploring some obscure features of systemd.
## RSS Combine
exozyme has an RSS aggregator to merge members' feeds together into one stream that can be subscribed to (find it at [feeds.exozy.me](https://feeds.exozy.me)). However, the software being used was less than ideal. It would break often, run slowly, and spit out extremely large feeds. This necessitated a rewrite. @ersei found a project that was written in Go and 90% of the way there to what exozyme needed, [forked it](https://git.sr.ht/~fd/rsscombine), and deployed it onto exozyme. Some growing pains later, the exozyme members' feeds are now more reliable!
## _Yeah, I Skate(board)_
@ersei describes their fractional-life-long [experience of skateboarding](https://ersei.net/en/blog/sk8r).
Commentary by @iacore: As a sociologist, it is refreshing to see someone describe their suffering with so many flavours ("many" as in >=4). The article definitely taught me some life lessons (or lesions!), but I cannot figure out which are the lessons. Read the article to find out yourself.
## Origami puzzle solutions
See [this post](https://a.exozy.me/posts/april-fools-day-puzzle/#solution-the-origami-puzzle) by @a for the solutions to last month's puzzle.

View file

@ -0,0 +1,45 @@
---
layout: '../../../layouts/Layout.astro'
date: '2024-02-11T17:29:47.758Z'
title: 'February 2024'
author: 'The exozyme community'
description: 'exozine is back!'
---
First off, thanks @cloudyy for reviving exozine and giving it an amazing new design! The feed is now at https://zine.exozy.me/rss.xml instead of https://zine.exozy.me, so you will have to add the new feed if you already have exozine in your feed reader.
The previous issue of exozine was in June 2023, and we've done a lot of cool stuff since then. Here are some nice blog posts written by our community members:
- [Asian Bayesian](https://a.exozy.me/posts/asian-bayesian/) by @a: Puns, game theory, and the loss of precision
- [Dead Pixels](https://a.exozy.me/posts/dead-pixels/) by @a: A nice algorithms problem
- [Spelling Reform is Hard, NP-Hard](https://a.exozy.me/posts/spelling-reform-np-hard/) by @a: How to prove problems are NP-hard and why you should care
- [The Self-Hosting Barrier to Entry](https://ersei.net/en/blog/selfhosting-isnt-that-easy) by @ersei
- [Mirroring Sourcehut to GitHub](https://ersei.net/en/blog/srht-time) by @ersei
- [Representing Concepts with Linked Linked-Data Links](https://www.1a-insec.net/blog/32-representing-concept-with-linked-data/) by @iacore
- [Why philosophy should be part of the education system](https://aryak.me/blog/04-philosophy-should-be-part-of-edu-system.html) by @aryak
- [Using my phone as a webcam with just scrcpy and ADB](https://aryak.me/blog/06-phone-webcam-scrcpy.html) by @aryak
- [Website 2.0](https://daudix.codeberg.page/blog/website-rewrite-in-zola/) by @daudix: The long-awaited website rewrite using the new static site generator - Zola
We've created several new projects:
- [Status](https://status.exozy.me) by @iacore, @dragongoose, @vnpower, @xtex, @daudix, and others: A status page in Go
- [Twineo](https://twineo.exozy.me) by @cloudyy: Alternative front-end to Twitch
- [LiteXiv](https://litexiv.exozy.me) by @peaksol: A free frontend for Pixiv that is simple yet sufficient
- [Dumb physics engine](https://physics.exozy.me) by @a: A dumb physics engine written in JavaScript
- [星布](https://codeberg.org/iacore/xn--8st83p) by @iacore: File-based concept quad store
We're also hosting several new services:
- [CyberChef](https://cyberchef.exozy.me) maintained by @nvpie: The Cyber Swiss Army Knife
- [Navidrome](https://rave.exozy.me) maintained by @vnpower: Modern music server and streamer
- [Redlib](https://reddit.exozy.me) maintained by @x: Private front-end for Reddit
- [Priviblur](https://pb.exozy.me) maintained by @x: A privacy-focused frontend to Tumblr
- [Memos](https://memos.exozy.me) maintained by @x: A privacy-first, lightweight note-taking service
- [YT Local](https://yt-local.exozy.me) maintained by @nvpie: Browser-based client for watching YouTube anonymously without forcing Javascript
And finally, the exozyme server had a few technical changes:
- We upgraded our storage from a 500GB SSD and 500GB HDD to a single 4TB SSD
- We changed our filesystem from ext4 to Btrfs for faster backups and so you can access old copies of your data in `/.snapshots`
- Woodpecker CI now clones repos to `~/.cache/woodpecker` instead of `/tmp` for persistent caching
- Website sockets should now be placed in `/srv/http` instead of `/srv/http/pages`

View file

@ -0,0 +1,73 @@
---
layout: '../../../layouts/Layout.astro'
date: '2024-06-01T15:56:39.741Z'
title: 'June 2024'
author: 'The exozyme community'
description: 'Bad Apple, a great hackathon, and more'
---
## It's a clickbait title, but: "Bad Apple!! But It's An Animated QR Code of Bad Apple!!"
If something exists, Bad Apple!! will be played on it. [In this post](https://a.exozy.me/posts/bad-apple-animated-qr-code/), @a talks about SWANTV/Epilepsend, a project for sharing data without a network using a giant animated colorful QR code. Additionally, it demonstrates that this data transmission scheme works under severe noise, for example, having the Bad Apple contour imposed on the image.
## The intricacies of POSIX user management
The exozyme server recently switched from LDAP to PAM for user management, so both @a and @iacore wrote articles about some of the subtleties of the standard user management systems on Linux and other Unix-like OSes. On Linux, PAM authentication by default requires being root or having access to the password hashes in `/etc/passwd`, but @a found that [it's possible to use a tool called SSSD](https://a.exozy.me/posts/pam-auth-without-access-etc-shadow/) to get around that for better security. [@iacore's article](https://www.1a-insec.net/frag/37-posix-login/), among other things, discusses how it's legal for a UID to have more than one username and its the cursed consequences. I can't really think of legitimate use cases for that, so I guess this is one example where POSIX has too much flexibility. Another prime example is how only the null character and slashes are forbidden in filenames. That opens up filenames to a whole host of sketchy characters like control characters and newlines that have no business being in filenames and just cause bugs.
## Static site hosting providers
If you are thinking about hosting a static site, [in this post](https://www.1a-insec.net/blog/52-static-site-hosting-providers/) @iacore covers 3 static site hosting providers and the experience using them.
## Executable toki pona
@iacore was so bored that it made [an interpreter for a dialect of toki pona][toki] and wrote a simplified version of the game 2048 in that language. You will have to read [its source code](https://git.envs.net/iacore/toki_kama_sitelen) to understand the potency of this one.
[toki]: https://www.1a-insec.net/blog/54-2048-in-tokipona/
## Hackathon! Hackathons!
After a long hiatus, exozyme hackathons are back! On June 2nd, we hosted a hackathon and did [code golf](https://git.exozy.me/exozyme/golfathon/) and status page fixes. (Last month, @a and @iacore also implented HTTP basic auth and increased the timeout for the status page.)
If you missed the last hackathon, don't worry, since we'll have another one coming up on 06-16 at 15:00 UTC. We'll have the same options as last time (code golf, status page) but this time we'll also have a blogathon. If you don't have a blog, we can help you get one set up.
## Puzzle of the month is back!
We sadly didn't have a puzzle last month, so to make up for that, you get several puzzles this time! Go to our [Golfathon repo](https://git.exozy.me/exozyme/golfathon/) and try out the problems. Have fun!
## Modulating signals in Python
@dragongoose has been learning some DSP (digital signal processing) for an SDR (software-defined radio) project (sorry for the acronym dump) and shared their progress on Matrix:
> Nothing more than just my laptop, the python script loads audio or text then modulates it (only AM, BPSK and QPSK right now) and exports the real and imaginary components into an IQ file, then SDR++ shows the FFT of those IQ signals and gives the tools needed to interact and demodulate the given signals
>
> Pretty much the script is generating the signals that would otherwise come from an actual radio, and theoretically I could play the IQ components through the sound card and mix them to actual RF frequencies and have a very rudimentary SDR transmitter
@dragongoose began with Python (which is surprisingly fast for this) in order to learn the concepts and prototype, but will switch to C soon.
## Licensing exozine and the status page
We recently noticed that both exozine and the status page didn't have licenses, so we chose CC BY-SA 4.0 for exozine and AGPL for the status page. However, it's not so simple: to license or relicense software, you have to ask all the contributors to agree to the new license! The two projects have four and seven contributors respectively, so it took two days to ask everyone. Fortunately, everyone agreed! For much larger projects, relicensing can be a major headache, such as the [Dolphin emulator going from GPLv2 to GPLv2+](https://dolphin-emu.org/blog/2015/05/25/relicensing-dolphin/).
## @nvpie's Linux desktop workflow
In [this post](https://nvpie.exozy.me/quartz/Blogs/My-Linux-Desktop-Workflow), @nvpie goes through all the components in their Linux desktop workflow, so check it out if you enjoy tiling window managers and customizing software. The post also mentions some cool CLI software.
Note from @a: I have to admit that as a huge KDE fan, I've never been patient enough to configure a window manager, and I love how KDE just works out-of-the-box. Still, I can understand the appeal of WMs, such as being able to bend the software to exactly how you want it and make it look really cool if you want. So, there's no correct answer to the DE vs WM debate, but rather we should focus on more important debates like Vim vs Emacs... just kidding. (Although I have to agree with @nvpie on Vim vs Emacs.)
## Syncthing to sync all things
@nvpie wrote a [blog post all about Syncthing](https://nvpie.exozy.me/quartz/Blogs/Syncthing-to-Sync-all-things) a handy tool to synchronize files across devices.
Note from @a: I recently switched from Nextcloud to Syncthing for file sync and the difference has been night and day. @nvpie's post says Syncthing uses "magic" which is honestly a pretty accurate description (in reality, it sends to the IPv4 broadcast address to discover devices in the LAN and uses UPnP, UDP hole-punching or a relay server for NAT traversal because NAT is evil). Honestly, Nextcloud is an amazing piece of software, but its scope is just too wide and their developers are stretched thin. File sync should be their core feature, but instead there's one guy maintaining their Android file sync app, which often breaks with each update. They definitely need many people polishing on their main features rather than adding "AI integration" or dozens of other tangential features that no one will ever use. Nextcloud has the potential to be great, but in the meantime I'll just use Syncthing.
## Website rewriting adventures
@daudix made a cool blog post about [rewriting their Neocities website](https://daudix.codeberg.page/blog/rewriting-neocities-website/), sharing their experience of the rewriting procees.
Notes from @moksha: Neocities have given a space for people to come up with all sorts of cool and weird websites, so I recommend you to experiment with it.
## Short story series
A group of friends play Gartic Phone with words, the constraint being, every article can only use the words that appeared in the previous article. Words are counted individually.
[The result](https://a.exozy.me/posts/end/) might look like a summary of the previous article at first, but when you look closer, it's not.

View file

@ -0,0 +1,47 @@
---
layout: '../../../layouts/Layout.astro'
date: '2024-03-01T17:29:15.548Z'
title: 'March 2024'
author: 'The exozyme community'
description: 'Typos, PulseAudio shenanigans, and an origami puzzle'
---
## The tragedy of a typo
We have a website, [exofeeds](https://feeds.exozy.me) with our members' RSS feeds merged into one giant megafeed, and it's awesome... except it doesn't work. The megafeed hadn't been updated since the end of September, which is suspiciously around the same time as our migration to a new SSD. Turns out that migration broke the hard link between the output of the feed merger script and the feed file being served by nginx. @ersei made the script output directly to the folder served by nginx, so we'll never run into this hard link problem ever again.
That was January. But something was still off. The feed was now eternally stuck at January, never changing again. This time, after countless minutes of debugging, @ersei finally found the culprit: The `WorkingDirectory` of the systemd service for the feed merger script was wrong! And once that was fixed... exofeeds was _still_ broken!
What else could we blame? The script works, the systemd service works... what about the systemd timer? So systemd has a handy command `systemd-analyze calendar` for checking cron strings, and it told us that the timer's string `*-*-* *:*/30:00` was invalid! There's a typo! It should actually be `*-*-* *:00/30:00` or even shorter, `*:0/30`. And finally, finally, exofeeds is back, and this time it actually works!
## Floats are weird
Floating-point arithmetic is weird, but why? Why does using smaller numbers results in even more inaccurate results? [In this post](https://a.exozy.me/posts/floats-weird/), @a goes a little bit deeper into explaining why this happens and what you can do to get more accurate results without sacrificing performance.
## Using PulseAudio as a key-value database (yes, seriously)
When you are holding data, everything looks like a database. @a [introduces PulseAudioDB](https://a.exozy.me/posts/pulseaudiodb/), a lost relative to MangoDB.
## Ersei server updates
[In this post](https://ersei.net/en/blog/updates-2024-02) @ersei tells us about their new server (an actual rack-mounted one!) and their long journey through BIOS problems and broken networks.
## Programmatic Caddy
Caddy is an awesome web server written in Go (exozyme uses nginx though, since some of the services we host have official nginx configuration files but no Caddyfiles). But did you know that you can also embed Caddy into another Go program? @iacore wrote a [blog post](https://www.1a-insec.net/blog/39-programmatic-caddy/) about this, including example code. It's actually very simple and only around 30 lines of code.
## Weblate is back!
[Weblate](https://weblate.org) is a web-based translation tool that integrates with Git. We have a [Weblate instance](https://weblate.exozy.me), but it's been down lately since exozyme now serves websites from `/srv/http`, not `/srv/http/pages`. @dragongoose and @a [fixed this](https://git.exozy.me/dragongoose/weblate-podman-compose/commit/e23db0dff5095174e22927adf68e1cf1b291b5eb) in the Weblate `docker-compose.yml`, so our instance is back up now! @dragongoose will also be updating Weblate to the latest version soon, so stay tuned.
## No more explore page chaos
The exozyme [explore page](https://exozy.me/explore) used to be a chaotic jumble of hosted services, projects, and personal websites. @nvpie, @a, @iacore, and @codedotjs redesigned the page to be sorted into categories and formatted with an HTML table, so it should be easier on your eyes and brain now. Since some of our members have personal websites hosted on other servers, the personal websites section now lists those as well, so go check them out!
## Monthly puzzle: Origami
Let's say you have a square piece of paper (so yes, you should obtain a square piece of paper right now). It's pretty easy to fold the paper in half: bring one side of the square to the opposite side and make a crease down the middle of the paper. It's also easy to fold the paper into fourths: fold the side over so that it lines up with the crease you just made in the middle. You can repeat this process to divide a square into any power of two. But what about folding the paper into thirds? Obviously, you aren't allowed to use a ruler, but you can and should use your brain!
Here's your next task. Squares are great and all, but triangles are cool too. Try folding an equilateral triangle starting from a square piece of paper. In fact, origami is more powerful than traditional compass and straightedge constructions, and you can fold any regular n-gon out of a square piece of paper, but let's just keep it simple for now and fold a triangle.
And finally, if you managed to survive those previous tasks, try folding a 3-4-5 right triangle. Good luck! The solutions will be published in next month's issue.

View file

@ -0,0 +1,31 @@
---
layout: '../../../layouts/Layout.astro'
date: '2024-05-04T21:31:10.947Z'
title: 'May 2024'
author: 'The exozyme community'
description: 'Shutdown of Nextcloud and PeerTube instances, smarter exploration algorithm and a review of the solar eclipse'
---
## Shutdown of Nextcloud and PeerTube instances
As @a stated in our announcements channel on matrix, the Nexcloud and PeerTube instances will be shut down, as they require more maintenance and few people use them. They will be available until at least May 14 so users could export their data, after that all remaining files on Nextcloud will be moved to the home directory of each user.
## April Fools' day puzzle code
@a has released the [source code](https://git.exozy.me/a/blank) for the April Fools puzzle, which is quite interesting and includes some more explanations about the puzzle.
## Avoiding Confusion for Smarter Exploration
[In this post](https://www.1a-insec.net/blog/53-explore-efficiently/), @iacore describes an algorithm for smarter exploration by picking actions wisely to avoid confusion instead of using the brute force approach.
## A solar eclipse
[In this post](https://a.exozy.me/posts/solar-eclipse/), @a reviews the total eclipse visible across the eastern US, including photos and almost a 5 hour trip.
## Rules of Self Expression
@iacore wrote a [post](https://www.1a-insec.net/blog/41-self-expression/) about representing concepts and self-expression using tuples, drawing inspiration from Lojban, Toki Pona, and RDF. RDF (which uses 3-tuples) is infamously arcane and not ergonomic, so it's interesting that using 4-tuples instead can make a big difference.
## Replacing LDAP with PAM on exozyme
The day is nigh: LDAP will soon be vanquished to its shadowy lair, never to be seen again! More seriously though, in a few weeks, exozyme will be switching our user management system from LDAP to Linux PAM since LDAP is a huge nightmare. This won't cause any user-facing changes, other than that you can now use commands like `chsh` and `chfn` instead of `ldapvi`.

View file

@ -2,10 +2,11 @@
interface Props {
frontmatter: {
title: string;
description: string;
};
}
const { title } = Astro.props.frontmatter;
const { title, description } = Astro.props.frontmatter;
import Nav from '../components/nav.astro';
import '../styles/markdown.css';
@ -15,7 +16,7 @@ import '../styles/markdown.css';
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="description" content="Astro description" />
<meta name="description" content={description} />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/logo.svg" />
<title>exozine - {title}</title>
@ -23,8 +24,20 @@ import '../styles/markdown.css';
<body>
<Nav />
<div class="container mx-auto mb-10 px-10">
<div class="markdown text-lg">
<div class="markdown text-lg max-w-2xl mx-auto">
<h1>{title}</h1>
<slot />
<div class="divider"></div>
<div class="mb-6">
<h2>Discuss</h2>
<p>
If you want to discuss anything from this issue, feel
free to join our <a
href="https://matrix.to/#/#exozyme:exozy.me"
>Matrix space</a
> and chat with our community!
</p>
</div>
</div>
</div>
</body>

View file

@ -18,7 +18,7 @@ export const data = await getCollection('posts');
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="description" content="Astro description" />
<meta name="description" content="The monthly exozyme magazine." />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/logo.svg" />
<title>exozine</title>

View file

@ -5,7 +5,7 @@ import MarkdownIt from 'markdown-it';
const parser = new MarkdownIt();
export async function GET(context: { site: any; }) {
export async function GET(context: { site: any }) {
const posts = await getCollection('posts');
return rss({
@ -18,5 +18,6 @@ export async function GET(context: { site: any; }) {
content: sanitizeHtml(parser.render(post.body)),
link: `/posts/${post.slug}`,
})) as RSSFeedItem[],
stylesheet: '/rss.xsl',
});
}

View file

@ -25,7 +25,7 @@
}
.markdown img {
@apply rounded-md;
@apply rounded-md h-auto;
}
.markdown h1 {
@ -54,4 +54,4 @@
.markdown hr {
@apply my-4;
}
}

View file

@ -97,4 +97,4 @@ export default {
// old: https://www.realtimecolors.com/?colors=111313-f4f6f6-6f9f9e-a8cccb-7fbdba&fonts=Inter-Inter
// new: https://www.realtimecolors.com/?colors=eceeee-111111-3773c8-2f6561-4cb892&fonts=Inter-Inter
// new: https://www.realtimecolors.com/?colors=eceeee-111111-3773c8-2f6561-4cb892&fonts=Inter-Inter

View file

@ -1,3 +1,3 @@
{
"extends": "astro/tsconfigs/strict"
}
"extends": "astro/tsconfigs/strict"
}