# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 196279
# self = https://watcher.sour.is?offset=168156
# next = https://watcher.sour.is?offset=168256
# prev = https://watcher.sour.is?offset=168056
@off_grid_living If you'd like to try something new (_I know I know!_); I just modified your site's file a teeny weeny bit and got it working with FrankenPHP a nice little portable web server written in Go that "just works"™ that is able to handle and execute PHP for you and your site basically "just works"™ out of the box locally, run from any directory.
🧮 USERS:1 FEEDS:2 TWTS:1061 ARCHIVED:77404 CACHE:2370 FOLLOWERS:17 FOLLOWING:14
I mean if you didn't really need PHP (_I suspect you do?_) you _could_ run any 'ol web server in the current directory where you have your site and just serve that straight up locally._
I mean if you didn't really need PHP (_I suspect you do?_) you _could_ run any 'ol web server in the current directory where you have your site and just serve that straight up locally._
@off_grid_living Normally, in the days when I used to run Linux on the Desktop and used Apache once upon a time, the default configuration would mean files served out of your public_html directory in your home directory was the place where the web server looked for to serve files from. This would make something like http://localhost/~your_username work. But it's been a while since I've done any of this myself...
@off_grid_living Normally, in the days when I used to run Linux on the Desktop and used Apache once upon a time, the default configuration would mean files served out of your public_html directory in your home directory was the place where the web server looked for to serve files from. This would make something like http://localhost/~your_username` work. But it's been a while since I've done any of this myself...`
@off_grid_living Normally, in the days when I used to run Linux on the Desktop and used Apache once upon a time, the default configuration would mean files served out of your public_html directory in your home directory was the place where the web server looked for to serve files from. This would make something like http://localhost/~your_username work. But it's been a while since I've done any of this myself...
@off_grid_living Normally, in the days when I used to run Linux on the Desktop and used Apache once upon a time, the default configuration would mean files served out of your public_html directory in your home directory was the place where the web server looked for to serve files from. This would make something like http://localhost/~> work. But it's been a while since I've done any of this myself...
Dear OnlyDomains, part of Team Internet. Do you think you could stop being so incompetent when it comes to Domains, DNS and basic HTTP? I reported this to you on Friday, and you are still arguing with me over Support the legitimatecy of the claims? Seriously?! 😧


$ dig @1.1.1.1 +short onlydomains.com.au a
198.50.252.65

$ nc -vvv 198.50.252.65 443
nc: connectx to 198.50.252.65 port 443 (tcp) failed: Connection refused


#OnlyDomains
Dear OnlyDomains, part of Team Internet. Do you think you could stop being so incompetent when it comes to Domains, DNS and basic HTTP? I reported this to you on Friday, and you are still arguing with me over Support the legitimatecy of the claims? Seriously?! 😧


$ dig @1.1.1.1 +short onlydomains.com.au a
198.50.252.65

$ nc -vvv 198.50.252.65 443
nc: connectx to 198.50.252.65 port 443 (tcp) failed: Connection refused


#OnlyDomains
Lucky you, @prologic. Yeah, sounds like it. :-D

All sky covered in clouds, except to the East. No chance of witnessing the stars shooting around. Still 25°C. Bah.
And errors out expectedly using dash or ash, very nice POSIX Sh compliant shells:


$ ./foo.sh
./foo.sh: line 5: [: bar: integer expression expected


So the lessons here are twofold:

- Always use shellcheck to check your shell code
- Never use Bash or rely on Bash(isms). Always prefer POSIX Sh
And errors out expectedly using dash or ash, very nice POSIX Sh compliant shells:


$ ./foo.sh
./foo.sh: line 5: [: bar: integer expression expected


So the lessons here are twofold:

- Always use shellcheck to check your shell code
- Never use Bash or rely on Bash(isms). Always prefer POSIX Sh
Interesting! https://publicholidays.com.au/royal-queensland-show/ Enjoy your day off, @prologic!
Which once fixed, removing the extra [ and ] errors out with shellcheck as expected:


Invalid number for -eq. Use = to compare as string (or use $var to expand as a variable). [SC2170]
Which once fixed, removing the extra [ and ] errors out with shellcheck as expected:


Invalid number for -eq. Use = to compare as string (or use $var to expand as a variable). [SC2170]
I was/am right of course :D


In POSIX sh, [[ ]] is undefined. [SC3010]
I was/am right of course :D


In POSIX sh, [[ ]] is undefined. [SC3010]
Also, why isn't shellcheck being used here? It would have picked this (contrived) example up?


bar is referenced but not assigned. [SC2154]
Also, why isn't shellcheck being used here? It would have picked this (contrived) example up?


bar is referenced but not assigned. [SC2154]
@movq It did however rain all night here however 🤣 Perhaps they were right afterall, just wrong on the location? 😅
@movq It did however rain all night here however 🤣 Perhaps they were right afterall, just wrong on the location? 😅
What a glorious morning for a public holiday 💪 What shall I do today? Hmmm 🧐
What a glorious morning for a public holiday 💪 What shall I do today? Hmmm 🧐
@movq I'm not looking forward to summer at all 🥵
@movq I'm not looking forward to summer at all 🥵
@lyse Probably used one of the filters? 🤔
@lyse Probably used one of the filters? 🤔
This is why you stick to POSIX sh as @mckinley points out 🤣 Prwtry sure this is a "Bashism" right?
This is why you stick to POSIX sh as @mckinley points out 🤣 Prwtry sure this is a "Bashism" right?
@movq Same here. Nothing. Malicious deception!
[47°09′30″S, 126°43′59″W] Taking samples
They promised rain. I ain’t seeing any rain so far. 🫤
They promised rain. I ain’t seeing any rain so far. 🫤
They promised rain. I ain’t seeing any rain so far. 🫤
They promised rain. I ain’t seeing any rain so far. 🫤
@rrraksamam *So* ready for winter. 🥵
@rrraksamam *So* ready for winter. 🥵
@rrraksamam *So* ready for winter. 🥵
@rrraksamam *So* ready for winter. 🥵
@falsifian Exactly! 🥳

So this works:

$ bash -c 'set -u; bar=1; foo=$bar; if [[ "foo" -eq "bar" ]]; then echo it matches; fi'
it matches

Without the misleading quotes:

$ bash -c 'set -u; bar=1; foo=$bar; if [[ foo -eq bar ]]; then echo it matches; fi'
it matches

As does this:

$ bash -c 'set -u; bar=1; foo=$bar; if (( foo bar )); then echo it matches; fi'
it matches

What the person originally meant was what bender said:

$ bash -c 'set -u; foo=bar; if \n]; then echo it matches; fi'
it matches

It’s all rather easy once you’ve understood it … but the initial error message of the initial version can be quite unexpected.
=
@falsifian Exactly! 🥳

So this works:

$ bash -c 'set -u; bar=1; foo=$bar; if \n]; then echo it matches; fi'
it matches

Without the misleading quotes:

$ bash -c 'set -u; bar=1; foo=$bar; if \n]; then echo it matches; fi'
it matches

As does this:

$ bash -c 'set -u; bar=1; foo=$bar; if (( foo bar )); then echo it matches; fi'
it matches

What the person originally meant was what bender said:

$ bash -c 'set -u; foo=bar; if \n]; then echo it matches; fi'
it matches

It’s all rather easy once you’ve understood it … but the initial error message of the initial version can be quite unexpected.=
@falsifian Exactly! 🥳

So this works:

$ bash -c 'set -u; bar=1; foo=$bar; if [[ "foo" -eq "bar" ]]; then echo it matches; fi'
it matches

Without the misleading quotes:

$ bash -c 'set -u; bar=1; foo=$bar; if [[ foo -eq bar ]]; then echo it matches; fi'
it matches

As does this:

$ bash -c 'set -u; bar=1; foo=$bar; if (( foo bar )); then echo it matches; fi'
it matches

What the person originally meant was what bender said:

$ bash -c 'set -u; foo=bar; if [[ "$foo" = "bar" ]]; then echo it matches; fi'
it matches

It’s all rather easy once you’ve understood it … but the initial error message of the initial version can be quite unexpected.
=
@falsifian Exactly! 🥳

So this works:

$ bash -c 'set -u; bar=1; foo=$bar; if [[ "foo" -eq "bar" ]]; then echo it matches; fi'
it matches

Without the misleading quotes:

$ bash -c 'set -u; bar=1; foo=$bar; if [[ foo -eq bar ]]; then echo it matches; fi'
it matches

As does this:

$ bash -c 'set -u; bar=1; foo=$bar; if (( foo bar )); then echo it matches; fi'
it matches

What the person originally meant was what bender said:

$ bash -c 'set -u; foo=bar; if [[ "$foo" = "bar" ]]; then echo it matches; fi'
it matches

It’s all rather easy once you’ve understood it … but the initial error message of the initial version can be quite unexpected.=
@falsifian Exactly! 🥳

So this works:

$ bash -c 'set -u; bar=1; foo=$bar; if [[ "foo" -eq "bar" ]]; then echo it matches; fi'
it matches

Without the misleading quotes:

$ bash -c 'set -u; bar=1; foo=$bar; if [[ foo -eq bar ]]; then echo it matches; fi'
it matches

As does this:

$ bash -c 'set -u; bar=1; foo=$bar; if (( foo bar )); then echo it matches; fi'
it matches

What the person originally meant was what bender said:

$ bash -c 'set -u; foo=bar; if [[ "$foo" = "bar" ]]; then echo it matches; fi'
it matches

It’s all rather easy once you’ve understood it … but the initial error message of the initial version can be quite unexpected.=
@falsifian Exactly! 🥳

So this works:

$ bash -c 'set -u; bar=1; foo=$bar; if [[ "foo" -eq "bar" ]]; then echo it matches; fi'
it matches

Without the misleading quotes:

$ bash -c 'set -u; bar=1; foo=$bar; if [[ foo -eq bar ]]; then echo it matches; fi'
it matches

As does this:

$ bash -c 'set -u; bar=1; foo=$bar; if (( foo bar )); then echo it matches; fi'
it matches

What the person originally meant was what bender said:

$ bash -c 'set -u; foo=bar; if [[ "$foo" = "bar" ]]; then echo it matches; fi'
it matches

It’s all rather easy once you’ve understood it … but the initial error message of the initial version can be quite unexpected.=
@bender Haha, no worries. I do like that you enjoyed your real life and not wasted it online. :-)

But I'm wondering how you discovered it a week later. Are you somehow regularly checking complete recent feed histories?
@bender Hahaha, that's a good one! :-D
@bender @movq That's a pity! :-( In the following half an hour, I only saw two more right of Ursa Major (the only constellation I recognize). Let's see how cloudy it actually will get tonight. The forecast to be clear sky between 1 and 3am. But that's a bit late.
@movq Variable names used with -eq in \n] are automatically expanded even without $ as explained in the "ARITHMETIC EVALUATION" section of the bash man page. Interesting. Trying this on OpenBSD's ksh, it seems "set -u" doesn't affect that substitution.
@movq Variable names used with -eq in [[ ]] are automatically expanded even without $ as explained in the "ARITHMETIC EVALUATION" section of the bash man page. Interesting. Trying this on OpenBSD's ksh, it seems "set -u" doesn't affect that substitution.
yeah its the same dude.

This project is verrrry alpha. all the configuration is literally in the code.
yeah its the same dude.

This project is verrrry alpha. all the configuration is literally in the code.
@bender So far, so good! And why did it complain about bar being a variable?
@bender So far, so good! And why did it complain about bar being a variable?
@bender So far, so good! And why did it complain about bar being a variable?
@bender So far, so good! And why did it complain about bar being a variable?
@movq @bender That's what I thought while reading the code, too. I believe -eq is for numerical comparation only. Weird error message, though. Tells something about the implementation.
@movq it should be:

h
bash -c 'set -u; foo=bar; if [[ "$foo" = "bar" ]]; then echo it matches; fi'
@movq it should be:

h
bash -c 'set -u; foo=bar; if [[ "$foo" = "bar" ]]; then echo it matches; fi'


eq is for numericals.
I love shell scripts because they’re so pragmatic and often allow me to get jobs done really quickly.

But sadly they’re full of pitfalls. Pitfalls everywhere you look.

Today, a coworker – who’s highly skilled, not a newbie by any means – ran into this:

$ bash -c 'set -u; foo=bar; if \n]; then echo it matches; fi'
bash: line 1: bar: unbound variable

Why’s that happening? I know the answer. Do you? 😂

Stuff like that made me stop using shell scripts at work, unless they’re just 4 or 5 lines of absolutely trivial code. It’s now Python instead, even though the code is often much longer and clunkier, but at least people will understand it more easily and not trip over it when they make a tiny change.=
I love shell scripts because they’re so pragmatic and often allow me to get jobs done really quickly.

But sadly they’re full of pitfalls. Pitfalls everywhere you look.

Today, a coworker – who’s highly skilled, not a newbie by any means – ran into this:

$ bash -c 'set -u; foo=bar; if [[ "$foo" -eq "bar" ]]; then echo it matches; fi'
bash: line 1: bar: unbound variable

Why’s that happening? I know the answer. Do you? 😂

Stuff like that made me stop using shell scripts at work, unless they’re just 4 or 5 lines of absolutely trivial code. It’s now Python instead, even though the code is often much longer and clunkier, but at least people will understand it more easily and not trip over it when they make a tiny change.=
I love shell scripts because they’re so pragmatic and often allow me to get jobs done really quickly.

But sadly they’re full of pitfalls. Pitfalls everywhere you look.

Today, a coworker – who’s highly skilled, not a newbie by any means – ran into this:

$ bash -c 'set -u; foo=bar; if [[ "$foo" -eq "bar" ]]; then echo it matches; fi'
bash: line 1: bar: unbound variable

Why’s that happening? I know the answer. Do you? 😂

Stuff like that made me stop using shell scripts at work, unless they’re just 4 or 5 lines of absolutely trivial code. It’s now Python instead, even though the code is often much longer and clunkier, but at least people will understand it more easily and not trip over it when they make a tiny change.=
I love shell scripts because they’re so pragmatic and often allow me to get jobs done really quickly.

But sadly they’re full of pitfalls. Pitfalls everywhere you look.

Today, a coworker – who’s highly skilled, not a newbie by any means – ran into this:

$ bash -c 'set -u; foo=bar; if [[ "$foo" -eq "bar" ]]; then echo it matches; fi'
bash: line 1: bar: unbound variable

Why’s that happening? I know the answer. Do you? 😂

Stuff like that made me stop using shell scripts at work, unless they’re just 4 or 5 lines of absolutely trivial code. It’s now Python instead, even though the code is often much longer and clunkier, but at least people will understand it more easily and not trip over it when they make a tiny change.=
I love shell scripts because they’re so pragmatic and often allow me to get jobs done really quickly.

But sadly they’re full of pitfalls. Pitfalls everywhere you look.

Today, a coworker – who’s highly skilled, not a newbie by any means – ran into this:

$ bash -c 'set -u; foo=bar; if [[ "$foo" -eq "bar" ]]; then echo it matches; fi'
bash: line 1: bar: unbound variable

Why’s that happening? I know the answer. Do you? 😂

Stuff like that made me stop using shell scripts at work, unless they’re just 4 or 5 lines of absolutely trivial code. It’s now Python instead, even though the code is often much longer and clunkier, but at least people will understand it more easily and not trip over it when they make a tiny change.=
[47°09′51″S, 126°43′12″W] 4135 days without news from Herve
It is good to be off work and have time to spend on my personal projects.
It is good to be off work and have time to spend on my personal projects.
@slashdot And we are surprised why? 🤔
@slashdot And we are surprised why? 🤔
@lyse for some reason I didn't see this here on time. Thank you much mate! 😊
Woot! Need to change the nick now to on_grid_living. 😛
Is that from the same guy who made Caddy? Name sounds familiar. It looks neat, let us know what you think of it when you have tried it. 😛
@lyse Neato! Too bad they’re in the northern sky. Can’t see that from my bedroom. 😂
@lyse Neato! Too bad they’re in the northern sky. Can’t see that from my bedroom. 😂
@lyse Neato! Too bad they’re in the northern sky. Can’t see that from my bedroom. 😂
@lyse Neato! Too bad they’re in the northern sky. Can’t see that from my bedroom. 😂
@bender No bubbles burst 💥 hehe 😝 All good! 👍 I think I was aware of the search results and the lack of interactivity there, artifact of borrowed template code from the search engine 😢 Just need to refactor it to use the same template as the normal timeline, but also support highlights, something it doesn't do now either.
@bender No bubbles burst 💥 hehe 😝 All good! 👍 I think I was aware of the search results and the lack of interactivity there, artifact of borrowed template code from the search engine 😢 Just need to refactor it to use the same template as the normal timeline, but also support highlights, something it doesn't do now either.
Solo en la noche
#catsoftwtxt
Solo en la noche
/https://baldo.cat/media/photos/photo_21313-08-2024_13-06-38.jpg) #catsoftwtxt
Solo en la noche
#catsoftwtxt
Oculto
/https://baldo.cat/media/photos/photo_21213-08-2024_13-06-19.jpg) #catsoftwtxt
Oculto
#catsoftwtxt
Oculto
#catsoftwtxt
@prologic I didn't mean to burst bubbles, by the way 😅. It is a baby step; we just need to refine it.
@bender You are right. I'll have to fix the later for sure, the finding "reading" in "foo-reading" is probably a behavior of the indexing and search library being used. It probably behaves that way.
@bender You are right. I'll have to fix the later for sure, the finding "reading" in "foo-reading" is probably a behavior of the indexing and search library being used. It probably behaves that way.
@lyse I envy you. Our always cloudy sky during summer has allowed me to see the grand total of zero. 😩
@prologic couple of issues. That #reading tag also pulls #now-reading. It shouldn't. Second, I can't reply from the search results. If you click/tap on the tag, and get the list containing it, clicking/tapping reply on one of the results do nothing.
[47°09′34″S, 126°43′53″W] Dosimeter still failing
Base: 6.00 miles, 00:09:43 average pace, 00:58:16 duration
i was suppose to go for another 30 minutes. my energy level is off and i may need to reassess some goals.
#running #treadmill
Base: 6.00 miles, 00:09:43 average pace, 00:58:16 duration
i was suppose to go for another 30 minutes. my energy level is off and i may need to reassess some goals.
#running #treadmill
Base: 6.00 miles, 00:09:43 average pace, 00:58:16 duration
i was suppose to go for another 30 minutes. my energy level is off and i may need to reassess some goals.
#running #treadmill
I like how tags like #reading now actually work correctly on Yarn pods 👌
I like how tags like #reading now actually work correctly on Yarn pods 👌
[47°09′57″S, 126°43′42″W] Dosimeter overflow
[47°09′53″S, 126°43′46″W] Saalmi, retransmit, please
i have a cryptographically verified and deterministic operating system with reproducible builds, but the sound still doesn't work right.
i decided that the only good browser is mullvad-browser, though tor-browser is a close second.