June 2024 #8

Merged
cloudyy merged 23 commits from june24 into main 2024-06-08 00:47:05 +00:00
8 changed files with 122 additions and 44 deletions

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"
}
}

View file

@ -31,7 +31,3 @@ Commentary by @iacore: As a sociologist, it is refreshing to see someone describ
## 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.
## Discuss
If you want to discuss anything of this issue, feel free to join our [Matrix space](https://matrix.to/#/#exozyme:exozy.me) and chat with our community!

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

@ -45,7 +45,3 @@ Let's say you have a square piece of paper (so yes, you should obtain a square p
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.
## Discuss
If you want to discuss the puzzle or any of the other things in this issue, join our [Matrix space](https://matrix.to/#/#exozyme:exozy.me) and chat with our community.

View file

@ -27,6 +27,17 @@ import '../styles/markdown.css';
<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

@ -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({

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"
}