New Deathly
2 days, 1 hour ago
He really liked it :D, the rpgmaker game. i'm so happy, I wish icould make more people happy with my projects, i read a bit of an old friend's project since he updated it otday, and it made me really miss him, he's very creative. I want to be as creative as him some day I think, he knows this, i think he hates me LOL, it's okay. I don't really have a reason to hate anyone anymore. I have people I
New aaaaaaaaa
1 week, 5 days ago
I’m working on an rpgmaker game for my friend’s birthday, he has access to this blog, so i can’t share much, but i’m not making as much progress on it as i want to be, however I’m also working on school at the same time, I would like to have multiple arms so i could work on everything at once. Another friend asked me “How’s your VN going?” I haven’t worked on it since September, I really want to
New bare
2 weeks ago
This journal may only be viewed by Blog friends and users with the password.
New
4 weeks ago
My psychiatrist says the depression symptoms got worse, a lot of the last few months suffering makes sense now. I'm getting surgery done for my tooth infection today, absolutely terrifying. I want it to go well. I bought a cute dress from taobao and I think if the surgery goes back I won't be able to wear it.
New when I leave here, like, good riddance, holy shit
1 month ago
ummm the title is just the quote from my professor just now, not representative of anything I feel.I've been sick the last few days! Not even ill with a sickness, just stressed. I had been ruminating on everything so much that i was just going insane. I skipped class and work for the rest of last week, and the rest really helped me I think. everything is scary, everything is new. I feel like i had
New day day day
1 month, 3 weeks ago
At the start of this semester, I feel like my life is dull, kind of tired. I go to school, I go home, I draw, I go to sleep, I go to school, I go home, I draw, I go to sleep. However, there's a slight change with this. A portion of my college friend group has left, so the rest of us don't hang out as much, it makes me quite sad, but I understand that they're busy with their own stuff this time aro
holidays come and go
3 months ago
This journal may only be viewed by Blog friends and users with the password.
happiness, worth & grief
3 months, 1 week ago
This journal may only be viewed by Blog friends and users with the password.
slowly bleeding
3 months, 3 weeks ago
i want to make meaningful friendships. i want to make meaningful art. i want to be meaningful, i want there to be a reason i do the things i do. sometimes i find it very hard to give a meaning to the things that i do, other than simply "for the fun of it" or "because it's the right thing to do" i want to feel as if i do things with a purpose; and right now it is a bit hard to find the purpose for
grey
4 months ago
This journal may only be viewed by Blog friends and users with the password.
New Two new sites added to the useless index of my favourite childhood websites
3 days, 21 hours ago

added two new sites to the useless index of my favourite childhood websites, Sullen Riot and Miss Bimbo
one is a cursed fanfiction site for a band I used to be obsessed with, the other is a controversial dressup game!

New Link directory of forum based dress-up sites
5 days ago

Added another dressup site, Subeta, to the useless index of forum based dress-up sites, I also provided a few updates on Everskies and GoSuperModel. Along with that, I updated the site to match my new layout.

New Book review: All the Lovers in the Night
1 week, 1 day ago

book review of All the Lovers in the Night
I added even more sites to the index of my favourite personal websites. come take a look...

New Link directory of my favourite personal websites
1 week, 2 days ago

I have created an index of my favourite personal websites. This will be continuously updated!

New Book review: Crying in H Mart
1 week, 5 days ago

book review of Crying in H Mart

New Anime review: Pluto
2 weeks, 1 day ago

anime review of Pluto

New Manga review: Sunny
2 weeks, 5 days ago

manga review of Sunny

New Manga review: GOGO Monster
4 weeks, 1 day ago

manga review of GOGO Monster

New Manga review: Josee, the Tiger and the Fish
1 month ago

manga review of Josee, the Tiger and the Fish
also, my new layout is (partially) out!

New Book review: Bunny
1 month, 2 weeks ago

book review of Bunny by Mona Awad

New An argument for God from maths
3 weeks, 6 days ago

An argument for God from maths

I tried writing this out in as clear a way as possible (in terms of laying out the argument in a series of stages with steps, as opposed to just large blocks of text). If I've made any mistakes, please do explain them to me :)

Note: I did NOT invent this argument, but I re-wrote it in order to work it out in my mind and also to have it as reference.


STAGE 1: Maths within a mind

1) We know that maths really exists, because it perfectly governs all natural law, and it is something that we discovered instead of invented.

2) Maths is a concept; it is immaterial.

3) Concepts, being immaterial, only exist within minds.

4) Therefore, maths must exist within a mind.

5) Therefore, a mind must exist for maths to exist within.

SCRIPTURAL ACCORDANCE: Isaiah 46:9 - "I am God, and there is none else"


STAGE 2: Attributes of this mind - omniscience

1) Maths contains infinite, non-repeating information.

2) All of this information is present at once, and during all temporal instances; e.g. pi never ceases to have infinite digits.

3) For maths to exist in its entirity at once, the mind it exists within must have infinite capacity.

4) Therefore, the mind it exists within is omniscient.

SCRIPTURAL ACCORDANCE: Psalm 139:4 - "Even before there is a word on my tongue, Behold, O Lord, You know it all."


STAGE 3: Attributes of this mind - omnipotence

1) Maths perfectly describes all natural law - there is an inextricable link between the two.

2) Therefore, it must be that one is bound by a force to follow the other, for without this force there would be no reason for the one to govern the other.

3) Since maths is provably immutable, it cannot change to adapt to changes in natural law.

4) Therefore, it must be natural law which is made to conform to maths; this could only occur if the mind had infinite power with which to make this occur and persist.

5) However, if it is that natural law is immutable and only happens to align with maths, the perfect correlation between the two is ample evidence of joint design, which could only occur if this mind had such infinite power as expressed afore.

SCRIPTURAL ACCORDANCE: Job 42:2 - "I know that You can do all things, And that no purpose of Yours can be thwarted."


STAGE 4: Attributes of this mind - omnipresence

IN THE DIMENSIONAL SENSE:

1) Maths governs all natural law, irrespective of position.

2) Therefore, this mind must have the power to impact that force which binds natural law to obey maths irrespective of position.

3) Elsewise, if natural law is immutable and not constantly bound to perfect consistency in the temporal sense, then the power which created these immutable laws must have extended to all space, or else this law could not be immutable in all positions.

4) Therefore, this mind may (and indeed must) effectuate its dominion over all matter.

SCRIPTURAL ACCORDANCE: Jeremiah 23:24 - "'Can a man hide himself in hiding places So I do not see him?' declares the Lord. 'Do I not fill the heavens and the earth?' declares the Lord."


IN THE TEMPORAL SENSE:

1) Maths governs all natural law, irrespective of time.

2) Therefore, this mind must have the power to impact that force which binds natural law to obey maths irrespective of time.

3) Elsewise, if natural law is immutable temporally once set in motion, then the power which created these immutable laws must have extended to all time, or else this law could not be immutable in all time.

4) Therefore, this mind may (and indeed must) effectuate its dominion throughout all time.

SCRIPTURAL ACCORDANCE: Psalm 90:2 - "Even from everlasting to everlasting, You are God"


STAGE 5: Attributes of this mind - immutability in its attributes

1) Being omniscient, this mind must clearly be unchanging in its thoughts, sensibilities, &c.

2) Proposed "changes of opinion" can be explained (though not here) by a separation in treatment of futurities and present existences in the divine mind.

3) However, we are here also concerned with immutability of the divine attributes and nature themselves.

4) Being of infinite scope in terms of its content, as well as temporally unbound, maths bears testimony that the divine attribute of omniscience is unchanging.

5) Being perfect in its eternal binding force over natural law, maths is testimony that the divine attribute of omnipotence is unchanging.

6) Though not covered in-depth here, the inextricable and unchanging tie between beauty in nature - whether it be in architecture, music, geometry, or even botany - and mathematics (though the objectivity of beauty is marred by our individual imperfect, yet unique, sensibilities) bears testimony yet again that the divine sensibilities are unchanging (at least the aesthetic sensibilities - the moral sensibility is not covered here, however that this written procession of logical statements is posible in itself bears witness to the rational sensibility).

SCRIPTURAL ACCORDANCE: Malachi 3:6 - "For I, the Lord, do not change"; Isaiah 46:10 - "Declaring the end from the beginning, And from ancient times things which have not been done, Saying, 'My purpose will be established, And I will accomplish all My good pleasure'"; Exodus 3:14 - "I AM THAT I AM"


This is not a complete exposition of the divine attributes, nor does it extend to proofs of the specifics of the divine moral sensibilities; however I aim to have shown that even within maths, the very nature of things attests to the existence of God.

New An argument for transubstantiation by an Anglican.
1 month, 3 weeks ago

An argument for transubstantiation by an Anglican.

The institution of the Lord's Supper not useless for narrowing down the proper meaning

In his Of the Lawes of Ecclesiastical Politie (book v, 167), Hooker writes of the institution of the Lord's supper: "there are but three expositions made of 'this is my body:' the first, that this is in itself before participation really and truly the natural substance of my body, by reason of the coexistance which my omnipotent body hath with the sanctified element of bread, which is the Lutherans' interpretation; the second, that this is in itself and before participation the very true and natural substance of my body, by force of that Deity which with the words of consecration abolisheth the substance of bread, and substituteth in the place thereof my body, which is the Popish construction; the last, this hallowed food, through concurrence of divine power, is in verity and truth, unto faithful receivers, instrumentally a cause of that mysical participation whereby as I make myself wholly theirs, so I give them in hand an actual possession of all such saving grace as my sacrificed body can yield, and as their souls do presently need, this is to them, and in them, my body."

Though this is a rather large passage, it elegantly lays bare the fact of the matter: that in the words, "this is My body" and "this is My blood" (Matt. 26:26, 28), however the interpretation may be, it is clear that the blessed sacrament must in some way "be" Christ's body and blood. This entirely rules out purely symbolic interpretations. The matter at hand is not if we receive Christ during Holy Communion, but in what manner; physically through the presence of His flesh and blood, or spiritually through the promise of Christ and the faith of the recipients.


John 6 very much in support of transubstantiation

In the comparison of the manna of Moses' time to Himself (John 6:31-33), and the Israelites' saying "give us this bread always" (v. 34), some say that Jesus was saying one thing and the audience misunderstanding him and thinking another. They take Jesus' saying "I am the bread of life" (v. 41) and "If anyone eats of this bread, he will live forever" (v. 51) and the Jews' confusion and grumbling to show that they were interpreting his words literaly when they should have been interpreted metaphorically, with the "eating" of the bread of life being a fundamentally different action from the "eating" of the manna. However, as I aim to show, Jesus is indeed teaching physical consumption.

After telling the Jews that He will feed them with the bread of life, and the Jews asking for this bread, they are clearly expecting a miracle of physical food for them to eat. When they are disappointed by what he says next, and they grumble, Jesus only doubles down on his point: "I am the bread of life" (v. 48). But then it is here that He also says, "And the bread that I will give for the life of the world is my flesh" (v. 51). The word translated as "flesh" here (σάρξ) is different from the word used for "body" (σώμα). Indeed, the word for flesh is the root of the greek word "carnivorous" (σαρκοβόρος). There is no doubt that the Jews understood him to be meaning the consumption of his flesh; and yet He makes no attempt to correct them, even the twelve disciples who are also confused and to whom He explains the meanings of parables, even though this meant that "many of his disciples turned back and no longer walked with him" (v. 66).

When the Jews ask, "How can this man give us his flesh to eat?", Jesus simply replies telling them that they must eat His flesh and drink His blood (vv. 52, 53). They expect to be given something to eat, and three times He declares that He himself is the bread. However, after verse 54, Jesus directly confirms to the Jews that they are correct in their interpretation; it isn't just His lack of denial of their understanding that is useful here. You see, up to this point, Jesus had been using the verb "φάγω" for "eat", which is the general use of the term. However, from verse 54 and onwards, after the Jews have expressed their understanding of His words, He instead uses the verb "τρώγω", which means "to gnaw, munch, or crunch". It cannot get clearer than this. Jesus directly confirms to the Jews that he is not speaking metaphorically, and that they must literally chew and swallow the bread which is his flesh.

Think about this. Jesus tells the Jews they must "eat" his flesh. When they express confusion, not only does he not correct them or tell them it was a metaphor, but he actively affirms their interpretation by telling them they must physically chew on his flesh!

Verse 51 provides the most damning of evidence in that it sets an ulitmatum by using the word for "bread" in two ways directly next to each other with no indication of differing meanings: "If anyone eats of this bread, he will live forever. And the bread that I will give for the life of the world is my flesh." With the evidence being laid bare above that the consumption of His flesh is to be taken literally and with the knowledge that the consumption of the bread is to be taken literally as a parallel miracle to the manna, there is no refuting that the eating of the bread is the eating of His flesh; they are the same in this sense. It is clear that this is referring to Holy Communion, as Christ here mentions not only the eating of His flesh but also the drinking of His blood. His blood is never given the opportunity to be misconstrued as being a metaphor as His body is: he simply tells us to "drink His blood" (v. 54) and that His "blood is true drink" (v. 55).


The "Timothy test"

As if this were not enough, we must consider the significance of Christ's words to the Jews and Gentiles of the time. Assuming the knowledge of a fairly well-educated first-century Jew with a knowledge of contemporary Hebrew and Greek and using this imaginary person to interpret scripture is called the "Timothy test". When we consider the Old Testament alongside the new, we can see that the parallels between each give credability to transubstantiation.

There are two main parallels that I would like to highlight. Firstly, and as mentioned above, is the manna. When Christ compares the "bread of life" to the manna, with the difference being that he who eats of the former will not die, what would a Jew be expected to believe other than that the "bread of life" is to be physically eaten? This is shown in the Jews' confusion. Secondly is that Christ is our "passover lamb". The most obvious meaning of this parallel is that God is willing to overlook our sins since they were atoned for by Christ's self-sacrifice and paid once and for all. However, was the sacrificial lamb whose blood marked the sides of the Jews' doors not also eaten by the Jews?

Jacob Tate writes, "it is important to remember that the Old Testament prefigurements are never as great as their New Testament fulfillments. Mary is greater than Eve, Christ’s sacrifice is greater than Abraham’s with Isaac, and the manna Christ is going to give will be greater than the manna Moses received in the desert, not merely the same as that manna." This is also true of the sacrificial lamb: it was not merely a lamb which was shed, but now Christ Himself; and likewise, it is not merely normal food that we eat, but the flesh of the lamb whose blood was shed for our salvation.


The unanimous agreement of the early Church Fathers

This collection of quotes was not assembled by me, but it worthily displays the interpretation of the early Church Fathers. While not true of doctrine, and not necessarily infallible, when it comes to exegesis of the New Testament texts in their own times, the Church Fathers are a very worthy authority. This is not to say that my argument relies on their teachings; my above points should be enough. However, I here aim to show that transubstantiation is the original understanding of the Church, and is supported even by those in contact with the apostles.

If the Lord were from other than the Father, how could he rightly take bread, which is of the same creation as our own, and confess it to be his body and affirm that the mixture in the cup is his blood? (Irenaeus, Against Heresies 4:33–32 [A.D. 189])

Take note of those who hold heterodox opinions on the grace of Jesus Christ which has come to us, and see how contrary their opinions are to the mind of God. … They abstain from the Eucharist and from prayer because they do not confess that the Eucharist is the flesh of our Savior Jesus Christ, flesh which suffered for our sins and which that Father, in his goodness, raised up again. They who deny the gift of God are perishing in their disputes” (Ignatius of Antioch, Letter to the Smyrnaeans 6:2–7:1 [A.D. 110])

The bread and the wine of the Eucharist before the holy invocation of the adorable Trinity were simple bread and wine, but the invocation having been made, the bread becomes the body of Christ and the wine the blood of Christ. (Cyril of Jerusalem, Catechetical Lectures 19:7 [A.D. 350])

I promised you [new Christians], who have now been baptized, a sermon in which I would explain the sacrament of the Lord’s Table. … That bread which you see on the altar, having been sanctified by the word of God, is the body of Christ. That chalice, or rather, what is in that chalice, having been sanctified by the word of God, is the blood of Christ. (Augustine, Sermons 227 [A.D. 411])

A couple of tools
9 months ago

A couple of tools

I wrote a couple of little tools a bit ago, and I'm moving them to here from the front page of galladite.net to tidy it up a bit.


Gentoo liveusb environment setup script

I had to go into a liveusb to fix my gentoo kernel so I made this script. You can run it with "bash <(curl -s https://galladite.net/resources/genenv.sh)". Always remember to curl a file normally before running it with a shell.


Wpa-tool

Wpa-tool is a bash script I wrote to make command-line control of wpa connections easy, including commands to configure, connect to, disconnect from and automatically reconnect to networks, built atop wpa-supplicant, its only dependancy. It is highly recommended that you read the comments at the bottom of the file before using. It is very messy.

The desktop manager to end all others
9 months ago

The desktop manager to end all others

Here it is:


if xhost >/dev/null 2>&1; then pfetch; else startx; fi


Make sure that you have xhost installed (gentoo: x11-apps/xhost) and pfetch if you want it, then put this into the bottom of your shell's rc file (like .zshrc) and ensure that /bin/sh links to another shell (like /bin/dash) (so that scripts starting with #!/bin/sh won't run startx or pfetch), and you're all set.

This script will start X (using startx, see STARTX(1) and XINIT(1)) when you first log in, although you can get back to the login shell with "pkill x", and whenever you start a terminal it will run pfetch before dropping you into the command line.

All of this is done with only 1 line of shell, and can be customised to run whatever commands you want on exclusively after login or exclusively while in a graphical environment.


Published: 2022-8-28

Converting video for use on the Nokia 3310 3G TA-1022 (and similar)
9 months ago

Converting video for use on the Nokia 3310 3G TA-1022 (and similar)

A Nokia 3310 3G TA-1022 (which from now shall be referred to as "the 3310") was given to me for free, and while .mp3s work fine, .mp4s don't work with only the sound playing. Nokia's official help page is no use, only stating that "not all video formats are supported".

Upon searching through forums, I discovered that the 3310 uses .3gp video encoded with h.263 for some reason. Here is a script to convert a file using ffmpeg (copied below).


#!/bin/sh

for i in *; do

ffmpeg -i "$i" -s 352x288 -ar 8000 -ac 1 -vcodec h263 -f 3gp ${i%.*}.3gp

done


"-i" takes the input file

"-s" sets the resolution. H.263 only accepts specific resolutions and this is the smallest which is still larger than the 3310's 240x320 screen.

"-ar" sets the sample rate of the audio. Again, h.263 is specific.

"-ac" sets the audio channel count to one (mono). H.263 stuff.

"-vcodec" and "-f" set the encoding and format to h.263 and 3gp

The last bit saves the processed file as its previous name but with the .3gp extension.


It is worth noting that ffmpeg must be compiled with amr (see gentoo wiki USE flag)

After being converted, videos may be copied to the 3310's tf card or internal storage as usual. While 3gp and h.263 are a hassle, filesize is reduced considerably to the point where using the internal storage of 32MB becomes a viable option for videos spanning only a few minutes. For example, a 6 minute MV which I had downloaded from youtube became only 10MB.


Published: 2022-7-1

Minimalist linux distros rundown
9 months ago

Minimalist linux distros rundown

When I was deciding what distro to use before making the switch to linux, the minimalist ones all seemed similar. This is a breakdown of some of them, what sets them apart, their use cases and their pros and cons.

The distros I'll be comparing are arch, debian, void, nix, guix, gentoo and slackware.


Arch

Features: binary-based, uses pacman, uses systemd, AUR, bleeding-edge

Pros: popular, good wiki, good support

Cons: systemd, medium dificulty to install

\--> systemd-free version: artix

\--> see also: parabola, hyperbola


Debian

Features: binary-based, uses apt, uses systemd, stable or testing versions

Pros: rock-solid stable, very good support, average dificulty

Cons: systemd, stable has older software

\--> systemd-free version: devuan


Void

Features: binary-based, xbps-src to build your own packages, uses xbps, uses runit, stable rolling release

Pros: no systemd, easy to install, very minimal, good for tinkering

Cons: less popular, less support


Nix

Features: binary-based, uses nix, uses systemd

Pros: nix, reliable, reproducable, good work environment

Cons: difficult, not that common, less support


Guix

Features: binary-based, uses guix, uses gnu shepherd

Pros: nice package management features, hackable, adheres to GNU FSDG

Cons: difficult, not that common, less support


Gentoo

Features: compiled packages, uses portage, uses systemd

Pros: use flags, very minimalist and fast, customisable, good for tinkering, amazing wiki

Cons: slow to install packages, very difficult, takes a lot of time

\--> openrc version available


Slackware

Features: binary-based, uses pkgtools and slackpkg, uses slackware-init

Pros: very "UNIX-like", no systemd, very stable, great to learn linux with

Cons: not the easiest, package dependancies are not automatically installed, quite old


My picks

Best server: debian (easy and stable), gentoo (fast), slackware (alternative to debian)

Best desktop: arch (popular and up-to-date), void (what I use)

Best for tinkering: void (v. minimal, runit), gentoo (use flags), guix (Guile Scheme APIs)

Best for development: nix (isolated environments, rollback), debian (common, there are many debian-based distros), arch (same as debian)

Best for learning: slackware (UNIX-like, very "vanilla"), gentoo (throwing yourself into the deep end)


Published: 2022-5-22

Test
9 months ago

This is a test. This is a test. Lorem ipsum dolor sit amet.

What happens if I put multiple lines?

This is a link

(This is just for me to test rss)

None
2 months, 2 weeks ago
General update v10 (house repairs!)
2 months, 3 weeks ago

I’ve been very busy these past couple of weeks. So busy that I haven’t been able to focus much on the site here, so some things have stagnated a little. Despite being some of the hottest weeks of the year, I’ve been outside working on the foundation and wall of my house. This would be the most deteriorated part of the house that has withstood northern fronts, a fire, and termites!

These are the subterranean termites too, which aren’t good.

Funny thing though about these termites; they all seem to be long gone and dead. I wonder if the fire baked them all to death, because I haven’t yet found any major active colonies. I did find a few in a shim of untreated wood used on a foundation pier.

I’ve judiciously sprayed down the wall in poison and have sprayed expanding foam poison into any tiny hole I can find in the wall. I’ve even taken a stethoscope to the wall to listen in on any drilling banging noises. So far, I think they’ve been dead before I got here. I plan to pull up the floor on the second level just to make sure they haven’t traveled up into there. I’ll soak it down too just for safe measure if not.

Before

After

I have a few more piers to install termite shields on.

I’ve replace the two main permitter sill beams on this side of the house since they were the worst off in damage. This took lifting the house in areas with 20 ton rated bottle jacks. I bought three of them, which were the only three in town I could find. I had to actually hunt them down because it seems nobody either keeps them in stock, or someone is buying them up. Anyhow, there’s a system to this so that you don’t damage the house, but it’s not that complicated.

The only real trouble I had was maneuvering myself beneath the house. The ground out here is completely covered in stone, which really beat up my bony ass hips. Also, it’s difficult maneuvering cinder blocks beneath the house too because I can’t easily pick them up with my full strength. Just have to drag and shove them around.

I’m also glad to find that most of the wall (as in the wall stud framing) appears to be alright by and large. There were a few that were pretty badly damaged near the ends, so I’ve been lobbing those off and adding in new blocks. I'll go back thru and sister some additional studs to the sides of these when I nail everything down for good.

I managed to get things fixed up good nuff. I also made these termite shields to sit on top of the cinder block piers. You can make these out of rolled up sheets of galvanized steel. Just need some big ol’ tin snips and something to pinch the sheet in so that you can bend it evenly. These should also be helpful in reducing moisture contact with the sill beams since concrete and other similar materials can draw up moisture. The beams are treated though, so they should be able to withstand some contact with water. I also re-treat all of my end cuts with Cut-N-Treat wood preservative just to be safe.

The beams themselves aren’t exactly the best quality in my opinion, being southern white pine. But they were all I could find! The construction of this house and how it sits on the foundation is also sort of odd. There’s really no weight bearing down on these beams. Instead, the weight is bearing dow on a rim joist behind the beams. The rim joist doesn’t sit on the perimeter sill, but sits behind it on the very ends of large perpendicular beams running beneath the house. I don’t know why it was built this way, because it should extend over it, not behind it! I’ve also noticed that a lot of weight is bearing on the rim joists that should be on the sill, but this might be due to settling as the previous sills were rotting away. Once I finish up with replacing some of the rotted framing and nailing everything down, I plan to apply the bottle jacks to the sills and lift them so most of the weight is bearing on those instead.

I’ve also discovered that the back utility closet of the house was once a porch, which will also need some re-working on one corner. Walking thru the house, I’ve realized that this back porch was once a front porch! Things started to make sense then. I wondered why the stairs were hidden off in the kitchen, which was actually once a formal entry. I can even see marks on the wall beside the stairs where there was once a sitting bench that would have been attached to the wall. The ornate door back here was the front door; It has always been in the same place. I figured it was moved here from the now-front porch, but no, this is where it belongs!

I imagine the ceiling in here would have been opened up with a banister and balcony up top that you could look over. The whole upper floor was remodeled, so a ceiling was added and a floor up top where the balcony would have been. I might actually restore this someday, but I’m not going to flip the house around.

That’s all that I have for now in house repairs. I’ll be writing another blog soon on a few cool things that I’ve bought in preparation for moving in soon.

Thanks for reading my blog!

Bloatmaxing with KDE and frens
3 months, 1 week ago

Found this on Reddit. I like it.

The past few weeks I’ve decided to give the Plasma desktop another spin. I haven’t really used this desktop since KDE 4, which I believe was the one with that cool red bouncy ball desktop widget. What had initially kept me away from KDE was the instability. So far it’s been doing great; I haven’t encountered any crashes yet and the performance has been good. I haven't even experienced screen tearing, which is usually an issue elsewhere.

Before my adventures into different desktop environments, I was using XFCE4; It’s a good desktop. Since I’m more of a visual type, I prefer an actual desktop with floating windows, buttons, task managers, the whole package. So what I look for in desktop environments is at least some sort of a launch dock for pinned applications, a built in application finder, a file manager with SMB support, and system tray icons. Most desktops meet this, so it’s not that difficult to adapt to them. It’s the paper cuts department in minor details that sets them apart.

Coming from XFCE (and then recently GNOME on Pop_OS just to humor it), to the KDE Plasma desktop has been fairly nice. Not to cast any shade on XFCE, but there are some things here that really makes this a proper desktop. For example, the icon view in the file picker with adjustable zoom levels. I also like the file tagging feature, which has been nice for organizing my frogs and cats.

The default window borders were too thin to grab onto, as is typical of modern desktops for some reason, so I changed it to the “Plastik” style and bumped up the border width to the “Large” setting. I also adjusted the color scheme so that I could tell which window was focused and which windows weren’t since the default didn’t do such a good job.

I’ve never been very fond of dock bars, so I changed that to a traditional task bar with those little quick launch icons beside it.

And with those minor improvements, I’m pretty much good to go. Check it out!

I didn't ever consider the difference in functionality and integration between GTK and Qt based applications and so typically stuck with a GTK base. As part of this bloatmaxing adventure, I've decided to replace as many GTK applications as I could with a Qt alternative.

  • Thunderbird -> KMail: Visually kind of ugly and it was a little clunky to setup. I think I can get used to it though.
  • Brave browser -> Falkon browser: Not a bad browser, and it integrates with the Qt filepicker; however Brave does too. Lack of uBlock kinda kills it, but I'll see what I can't figure out with the built in AdBlock.
  • N/A -> Konversation: I've used IRSSI for my IRC client forever! I'm not so fond of graphical clients like Pidgin, ChatZilla, etc. However, Konversation is actually alright. I like the UI and how it represents the servers and channels in a tree list.
  • Liferea -> Akregator: So far it seems pretty much the same. Good enough for me!

Some notable features:

I like being able to adjust the volume of individual applications quickly and easily from the volume icon in the system tray. I haven’t seen the likes of this since Windows 7; I don’t understand why nobody else has implemented similar functionality on other desktops. I always have to dig into the system settings anywhere else.

The network manager here is actually nice. The gnome-network manager you’ll frequently see on other desktops kind of sucks and is sometimes buggy, especially its system tray icon menu.

The Dolphin file manager is pretty good. I did setup the toolbar with a similar layout to what I’m used to from Thunar. The icon thumbnails are much better here than Thunar, and actually load up quickly where as it was always a drag on anything else.

I’ve always heard of KDE Connect, but I’ve never used it. I prefer my file share and NAS setup for moving files around. I think it might have some phone interactivity, which sounds pretty cool, but I don’t really use phones except for calls and short texts, so it’s an unused feature here.

The Konsole terminal is alright. I can tile it and it’ll take up the whole area instead of leaving off an annoying portion of the screen like XFCE Terminal does. The split view function is nice, but I’ve used tmux for so long now that I think I’ll just stick with it.

Minor complaints:

Icons along the task bar aren’t very uniform in size or spacing. It's a little annoying.

Drag and drop shortcuts to the quick launch doesn’t always work.

Drag and drop files in Dolphin while in icon view doesn’t work very well when needing to scroll up or down a page. Requires precise placement of the pointer on the frame edge to activate scrolling.

Beside the defaults, nearly every Plasma style theme doesn’t take traditional task manager buttons into consideration, so it’s difficult to tell which application is focused from the task bar alone. Almost starting to feel like a neglected function of the desktop here.

The “Discover” software finder leaves a lot to be desired and doesn’t appear to integrate with flatpak, unlike the Gnome software store. I will say though, it at least performs and functions competently. The Gnome software store and its derivatives on the other hand have always felt like a half aborted project with the most clunky performance and crap ass UI that gives the Microsoft Store a run for its money!

Conclusion:

KDE Plasma is a desktop environment that seems to have evolved naturally and unmolested by touch screen shit and brain damage inducing phone UI/UX paradigms. No more do I have to simply live with the anachronisms of Gnome-creep in GTK, which by extension infects the functionality of my desktop. With the Plasma desktop and its competent suite of Qt applications, I can finally move on from that failed mid-2000’s convergence pipe dream that has perpetually haunted the greater Linux PC desktop ecosystem.

Now I wish I could get a QIMP to replace GIMP, because I'm not letting GIMP go.

Thanks for reading my blog!

CozyNet Grifters - EP2 “I love my life.”
3 months, 1 week ago

In light of recent events at Linus Media Group.

Short stories on normies and tech
3 months, 2 weeks ago

Since I have a tech job and have worked in this career field for about 10 years now, I’ve come across quite a few situations that I think would make fun stories to read.

The IoT nut:

This is a co-worker of mine who’s pretty big into IoT stuff. Personally I don’t care about installing wiretaps around my house, but this guy wanted to take it to another level. He was going to setup a connected temperature sensor to his shower head!

I laughed at him at first thinking it was some joke, but he was serious! So then I asked him why.

His response was that he wanted to know when the shower water reached a certain temperature so that he could then re-adjust it to his preferred temperature. This would involve cranking on the hot tap first, then walking out and doing a few things in preparation for the shower like grab a towel or something. When the water reached a certain point in temperature, the sensor would send a notification to his phone stating that the shower was ready. He would then return to the shower and adjust the cold tap enough to where it was the desired temp before stepping in.

I told him that sounds like a massive waste of water, and that I just turn the shower on and step into the thing; it doesn’t take long to warm up! But he really wants that perfect temp.

I’m going to get a little off topic now. I think baths are much better in conserving water than showers. Sure, you can take a quick shower that only takes a few gallons of water versus filling up a tub; anyone can do that. But in reality, does anyone really take a quick shower? Be honest now, you know you like spending a good 15 or even 20 minutes in there jacking off and who knows what else. You can bathe in a tub for as long as you’d like and not waste as much water, and then you can route that perfectly fine bath water out to a garden in the backyard! (unless you live in a suburb or city.)

Bathtub > Shower head.

The IoT nut (Part 2):

Guess what else this crazy nut wants to connect to the internet now? His trash can! To be more precise, the trash can lid itself. I don’t know if it would actually be connected to the internet since it’s using some arduino setup. I laughed at him again, and asked what for?

He says that it would be nice to have a trash can lid that would open automatically when you stand nearby it so that you don’t have to touch it. And the reason in not wanting to touch it was because of dirty hands from handling raw meat and plus it would “look cool.”

So I told him that they make trash cans with peddles you can push with your feet that would open the lid. He said that the trash can right now has one of those peddles, but would prefer that it opened on its own and controllable by an app on his phone so that the function could be toggled, that way the cats won’t accidentally activate it while he and his wife are away.

This stuff is a hobby for this guy, so it’s more of that tinkering enthusiast appeal whether or not it’s actually practical or beneficial, so I can kind of understand where he's coming from. Plus this dude is retirement age and probably bored as hell, so I guess why not?

The porch hawk:

There’s a lady at my job that always keeps her phone up on her desk on its own little perch. What is she watching on that phone? Not Netflix nor YouTube or anything like that. Nope; She’s watching the front porch of her house!

If it weren’t for the company wireless access, she’d probably run thru her data plan in a day because she watches that front porch like a hawk! I almost wonder if there isn’t something wrong with her, because I think it’s a little unusual.

Every time I’m at her desk or nearby working on a service ticket, she always has something going on there. One day it’s a family of birds nesting on the porch, another day its squirrels playing in the front yard or the kids getting off the bus from school. Is this entertainment for her?

I asked her what she was looking for one day and she said that she was waiting on a package to arrive in the mail. I asked if she was having trouble with package thieves, and she said that she just wanted to know when it arrived so that she could text her husband to pick it up after getting home from work. I didn’t want to pry any further, but that seems a little silly. Would he not see it after getting back from work anyhow? You can’t just wait and find out after getting home for yourself? Kind of obsessive, no?

This lady must be the modern equivalent to a Russian Babushka that’s always watching the neighborhood from the window, except now from her phone while at work.

Turbo normie:

This guy is roughly the same age as me, 30. He has a wife and daughter, and is ingrained in product brand names, the current thing, plays Disney music in his office all the time, and talks like a fag. He even told me one day that his favorite part about the super bowl are the ads after unsuccessfully trying to talk about sports ball, which I know nothing about. He worked in the marketing department though, so would always parrot that cheesy marketing corpo language whenever talking. We’re actually on pretty good terms though!

Anyhow, since I work in IT he wanted to have a conversation on tech, because you know me and technology, I just can’t get enough of it! /s

So he’s a very optimistic fella and was talking about how the next generation of kids were going to be so unbelievably smart because of AI and all the great technology we have, and how they would surpass all of us today. Oh boy… He’s also very proud of his daughter for being smart (his words), who I believe is now 5 years old, because he raised her up on an iPad (again, his words), has her taking some basic programming for kids class, and knows how to do computer things with Alexa.

So this must be one of those people that I’ll occasionally see with the “Proud parent of honor roll student” bumper sticker on the back of their car, shortly before cutting me off. I’m sure the programming classes will be beneficial, and perhaps she is smart, but something about all of this seems a bit off to me somehow. It’s like some caricature cutout from a TV show. Maybe I’m just too jaded?

I didn’t want to be a negative nancy black pill dispensary on the the matter of technology, internet, and youth, so I just kept a tight lip on it and nodded my head. To lack such self awareness must be bliss.

Doctor Stink Eye and the NumLock woes:

This one’s a little special to me simply because of the setting. I mentioned this one on the About page already. I use to work IT help desk support for a hospital, albeit they had a different name for the department. It seems like every place has some weird title for what is essentially “IT;” I don’t know why. I think they called it “Information Services,” despite us not being very well informed

So the doctors here were to be prioritized over the common scum. They’re practically treated as Christ himself, and sometimes they let it get to their heads too. I had one doctor here one day give me the stink eye when walking past him in the hallway. Never seen him before or ever spoke to the guy, but boy my presence must have ruined his day. He looked absolutely disgusted. No idea why, although back then I was early 20’s and looked like I absolutely didn’t want to be there (because I sure as hell didn’t), so maybe he was displeased by my lazy millennial composure. I use to not comb my hair back then and just wipe it into shape with my hands, and only ever shave once out of the week.

Fast forward some months later and I get a priority 1 ticket for some doctor that can’t figure out how to type his password. Usually password issues are dealt with by a call center, but if the user is exceptionally retarded, then the call center will kick the can down my road. This came from a dictation room where we had these computers setup with the Nuance Dragon speech to text software. They even had fancy microphones that worked really friggin well! They worked unlike any text to speech software I’ve ever seen.

So lo and behold it’s Doctor Stink Eye himself, and he’s PISSED. I see a clipboard with some papers on the ground in the back where he no doubt threw it in a tantrum. He’s zoned into his phone tip tap tapping away on it, and I’m just standing there after saying “hi.”

After an awkward moment of silence, he finally looks up from his phone at me and barks out, “I don’t know what the hell you guys are doing but I haven’t been able to get onto this <expletives> all day!” And slams his phone down on the table.

The classic “all day” line. Heard it a thousand times and it isn’t going to make me budge any quicker than the minute I receive the ticket, so I don’t curr! But I remain tactful and ask him a few questions, like has he tried signing in from one of the other computers beside him?

“No! I want THIS computer to work! The other computers never work, I want THIS ONE fixed!” And then blah blah blah this is completely unacceptable blah blah blah. Alright fine. So I sit down at the computer to take a look at it and able to sign in with my domain account no problem. He’s in the back tip tapping away on that stupid phone while I’m basically just making a show out of nothing over here. After a few minutes of bullshitting around, I ask him to try signing back into it again. Despite him wanting this resolved urgently, he’s too distracted with that stupid phone of his. Wait a minute later and he comes over to try signing back in again.

I watch him closely as he types because I know he’s up to some sort of shenanigans. As he’s poking in his password, I see him activate and deactivate the Caps Lock for each capitol letter in his password instead of using the shift key! Just unbelievable, but it’s also a common habit among the lower functioning… Then as he gets toward the end of his password, he picks up his hand and takes it over to the numpad, deactivates the Num Lock, and attempts to type in some numbers shortly before hitting Enter!

“See it’s doesn’t work!”

And then I said, “Bro… you turned off the numlock to type in those numbers and you need to use shift to capitalize your letters, not Caps” -

“Are you SERIOUS!? Do you think I haven’t tried that already!?” Uh ohh…

And then I hear this loud rumbling come from his gut. He quickly tries to talk over it by yelling, “I’ve been here ALL DAY trying to get on this damn thing. They’ve changed my password FIVE TIMES! I AM NOT TYPING IT WRONG! THIS COMPUTER IS BROKEN AND I NEED A REPLACEMENT NOW!” Yeah, way to completely ignore me and the issue.

Then he jumps up from his chair and says that he expects the computer to be fixed when he gets back from an appointment, and then quickly leaves the room. I can smell shit coming from off of him as he passes by me. He shat himself in the chair; I could even see a wet spot left behind! Grossss!!!

I started laughing my ass off and ran out of the room back to my office to tell everyone that doctor stink eye shat himself!

Red LED lights make the computer go fast:

This was a meme going around I think sometime in 2010? I have a cousin that’s really into gaming, as was I too at the time. However, he was a console pleb while I was part of the glorious PC Master Race. Actually I was running a cheap ass HP clunker up until that point, because console gaming was too expensive for me. I found it more affordable to buy a middling GPU to play my crappy free to play Asian MMO’s than dropping cash on a console and $50-a-pop-per-game. I didn’t have a job back then.

Anyhow he didn’t know squat about computers and was just getting into the idea of buying one. I was all hardcore at the time because I had just built my first proper gaming PC and was all like “bro don’t waste your money on some over priced alienware crap, just build your own lol!”

Then he asks me why my PC has blue lights in it. I tell him because I like the color blue. And then he says “okay, but aren’t the reds for gaming?”

I asked him “wtf are you talking about?” I thought this was some gag at first, but he actually meant it. He even reiterated and said that when they manufacture the computers, the red lights are to indicate that it’s a gaming brand line of computer. This dude fell for the meme!

Somehow he didn’t make the connection that I picked out each part and assembled this thing together, as if that just wasn’t a possibility. I had to show him in detail that I assembled this computer myself with each part and picked out the blue LED fans because I liked that color. He was still confused and thought I was bullshitting him that I built it, as if it would take some rocket scientist to do what I did. He just killed my glory because I was all like “I'm totally a badass for building this!”

He one day bought some parts for a computer based off of a video he saw on YouTube and had no idea how to put it together. I had to help him over a Skype call without being able to see anything to put it together. Miraculously we got it working, but it was short lived. Only a few months later and his mom dropped water down the PC while cleaning his room. RIP.

Thanks for reading my blog!

How to be a cool cat by rolling your own internal search engine
3 months, 3 weeks ago

The past few days I spent some time setting up an internal search for the CozyNet blog. It’s now present on the main blog page, as well as a search engine option on the Homepage too.

I had to look around for awhile until I was able to find something suitable, because I’m sure as heck not going to reinvent this wheel here. I wouldn’t even know where to begin, so I figured there was something out there simple enough that I could plug in. Turns out, it was surprisingly complicated to find anything up to snuff; and by up to snuff I mean it has to be completely server side, preferably PHP and MySQL based, and absolutely no javashid dependency!

I knew that it could be done because I’ve seen them all my life; mostly on old school sites which is what I had in mind. I came up with Sphider, Sphinx, and a few others. Sphider doesn’t appear to be maintained and a little complicated to setup on newer environments. Sphinx looks way too complicated for what it should be, and the others were all half baked bloated crap that would never fit here.

So I looked around a little more and found Xapian. It took some considerable reading in the documentation, but it actually worked surprisingly well. The funny thing about Xapian though is that it’s a CGI program. Not exactly PHP, but it works! It’s a blast from the past to say the least.

I did make some extensive edits to the main query search page so that it blends well with the overall site, as well as fixed up some bugs. If you take a look at the source it’ll look like a mess, but you should of seen it before because it was in even worse shape then. There were missing tags, quotes, unnecessary spaces, etc. It’s also intermixed with other things that are unseen, but cause large empty gaps in the page source.

So long it works and looks nice, then I’m fine with it really. It also works quite well in text based browsers, which I bet you don’t see that very often!

I did notice though that it pulls the <title> element as the “caption” title for each result, which I’ve unfortunately set to simply “CozyNet Blog.” So every search result comes back with “CozyNet Blog” and a short summary, which isn’t exactly very intuitive. Going forward, I’ll begin implementing the title within the <title> element for each blog and video post so that they show up properly in the search. I might go thru and update the older ones, but then again I might not.

Setup

If you want to setup Xapian on your site, it’s really not that too difficult. It’s all command based, so you’ll want to create a shell script or a daily cron job to update its database of indexed pages. However, forethought and proper organizational hierarchy of your web content is needed or else you could index crap you don’t want showing up in search queries, like template files for example. You can filter some things, but proper organization goes a long way.

Here’s the command that I use to index the blogs:

omindex --db /var/lib/xapian-omega/data/default --mime-type html:text/html --mime-type-match=template.html:ignore --depth-limit=1 --url /blogs /var/www/www.cozynet.org/html/blogs && echo "Blogs done…"

  • The --db option and following file path sets the target database to be updated. You can makeup whatever database name you’d like.
  • The --mime-type option sets the types of files you want indexed. I have it set to only html so that images and audio files won’t junk up search results.
  • The --mime-type-match option filters out by filename, which I’m filtering “template.html” with the “:ignore” bit on the end.
  • The --depth-limit=1 only permits omindex one directory deep.
  • And the --url option requires the directory to scan (starting from the webroot) and the full file path.

Each time you run this command, it will completely replace the previous contents of the database. If you would like to add additional contents to the database without writing over it, then just include a -p after the omindex command to preserve. The preserve option is only beneficial if you want to index additional directories into the same database or update the pre-existing database contents with new contents, which includes a “modified” timestamp feature in search query results.

In my shell script, I have the first omindex command rebuild the database by writing new content to it, then the next omindex command includes the preserve flag so that additional directories can also be included in the same DB. You’ll want to try and keep everything in the same DB, or else you would have to create individual search forms dedicated to each DB on your site. This might not be a bad idea if you want to separate blogs, videos, and images; however Xapian doesn’t have an image or video viewer, so just keep that in mind.

To create the search box itself on your site, you can include the following in the HTML document. You'll also want to make sure that CGI execution is enabled on your web server too, by the way.

  <form method="GET" action="/cgi-bin/omega/omega" role="search">
    <input name="P" placeholder="Search for..." size="50" autocomplete="off" accesskey="s" type="search" spellcheck="false"/>
    <span>
      <button type="submit">Search</button>
    </span>
  </form>
  

Thanks for reading my blog!

My cozy Calzone and Pizza recipe
4 months ago

The pizza is aggressive

I like to make my own Calzone’s and Pizzas since they’re not greasy or as cheap quality compared to what you would typically get from a food chain or grocery store. I use the same dough and sauce recipes below for both my Calzone’s and Pizza, so I’m including them both!

Marinara sauce:

  • One 14oz (400g) can of unsalted tomato paste.
  • 4g (a little less than 1 teaspoon) of salt.
  • Basil
  • Oregano
  • Parsley
  • Garlic (powder)

You can add the herbs to taste, but be careful because their flavors won’t spread into the tomato sauce until after a few hours (roughly 24 hours in the fridge.) There are other ingredients you can throw into the sauce too if you would like, like wine and oil but I like to keep it basic.

After you’ve mixed together the ingredients, store the sauce in the fridge over night.

Dough for two large pizzas or four calzone's:

  • 2 teaspoons (6 g) of active dry yeast or instant yeast.
  • 7/8 to 1 1/8 cups (210 to 270 ml) plus 2 tablespoons (30 ml) of lukewarm water, divided.
  • 2 tablespoons of olive oil
  • 3 cups (361 g) of unbleached all-purpose flour
  • 1 1/4 teaspoons (7 g) of salt
  • Pinch of sugar

Dough for three large pizzas:

  • 3 teaspoons of active dry yeast.
  • 1 1/2 cup water plus 3 tablespoons of lukewarm water, divided.
  • 3 tablespoons olive oil
  • 4 1/2 cups of flour
  • 2 teaspoons of salt
  • Pinch of sugar

Dough prep

Dissolve active dry yeast in 2 (or 3) tablespoons of lukewarm water in a large mixing bowl. Add the pinch of sugar to the yeast water mix. Stir until the yeast is dissolved and let it sit for 5 minutes at room temperature.

After the yeast has been activated, add your flour to the bowl along with the olive oil, salt, and rest of the water. Avoid putting the salt directly onto the instant yeast because it will kill the yeast.

Stir the ingredients to make a sticky dough. Knead the pizza dough until it's soft, smooth, and stretchy. You may need to add a few more drops of water or pinch of flour to get the right texture.

By this point you can freeze the dough or set it in the fridge for using later if you would like. If you do, then let it sit for an hour after taking out of the fridge.

Lightly grease a bowl and set the dough in it. Let the dough rise for 1 to 1.5 hours in a warm spot.

Calzone / Pizza prep

You'll need at least the following items. I don't have an exact measure on how much is required, so you'll have to eye ball what you think you'll need while at the grocery. I typically do a small bag of each cheese and topping.

  • Mozzarella cheese
  • White cheddar
  • Italian three cheese
  • Choice of toppings

If you’re making calzones, you can divide the dough down into preferable sizes. For pizza, divide the dough in half if you made enough for two pizzas, or divide into three parts if you made enough for three pizzas.

Stretch the dough thin with a roller then let it sit for 15 minutes (for calzone's you don't need to wait.) You can apply melted butter with garlic mix on top of the dough for extra flavor at this point. Let the butter sit for a few minutes to dry before applying the sauce or else the sauce will push the melted butter aside.

If you’re making calzones, then you don’t need to apply the marinara sauce. The sauce will be used for dipping from a small bowl instead. Also to make a calzone, you just roll it out into a small oval, apply the cheese and toppings on one half, then fold over the other half. You can dampen the edges with water so that it will stay shut like a glue when folded together. You should also cut some slits in the top so that it can vent while in the oven.

Preheat the oven to 425 degrees (218 celsius). After you’ve finished dressing the calzones or pizzas with cheese and toppings, set them in the over for 15 - 20 minutes.

Pictures

Calzone's

I like to mix a little oregano, basil, parsley, and crushed red pepper in with the cheese.

Pizza's

I forgot to take a final picture of the cooked pizza's because I was hungry when I made them and ate them! I'll update it someday in the future if I don't forget.

Thanks for reading my blog!

Muh big bad mama jama window AC unit
4 months, 1 week ago

So it’s been pretty friggin hot here in the house. My little window unit in the front bedroom has done well, but I’ve been needing something bigger to cool the whole fist level. I looked around hardware stores and anywhere that sold window AC units, but they were always smaller ones that were intended for just a single room. They go by BTU and square footage to determine the coverage area, and I was needing something for 1,900 square feet.

Since the ceilings here are like 9 or 10 foot high, it would need to be a big bad mama jama, so I was in the market for a 28,000 BTU unit. I found a Frigidaire for $920 on Home Depot’s website and ordered it a few weeks back. It finally came in just last weekend, so I spent the time setting it up. Since it’s just me, I had to get creative in positioning it into the window because it’s so heavy. I built a small ramp up to the window and slid it in. I got the unit in the house by backing up my pickup to the porch and sliding it out onto a Rubbermaid roll cart that came with the place.

And in case you’re wondering, I did follow the instructions that it came with. These larger units are a little more involving than the simpler smaller units. You have to take them apart as a step in the installation, but it’s nothing too difficult besides handling the weight.

Something else the house came with was a large AC window unit support bracket on the outside wall, which fit exactly down to the centimeter! The unit also just barely managed to fit inside the window; I had to forgo the attachable side panels because they wouldn’t fit given how tight of a space remained, so I stuffed some insulating foam pads in between.

You can see the old bracket on the wall of the house here.

Everything seemed to be going pretty well, but then a problem occurred… Unfortunately the Home Depot website’s technical specification on the unit was misleading, stating that it would work on a NEMA 6-20 outlet at 20 amps and 220 volts. I made sure this was exactly what I had in the bedroom so this wouldn’t become an issue. But after installing the unit, I went to hook it up and realized right then that it was physically impossible to plug in. This unit has a NEMA 6-30p power adapter and the box it came in stated that it required 30 amps and 240 volts! Oof…

That was pretty disappointing, but I wasn’t about to let a little electricity stop me from a comfy cool house. No sir! So I looked up the required outlet, receptacle, and wiring gauge then drove back out to the hardware store to buy what I needed to change it all out.

That’s right bros; in addition to being a webdev by virtue of running this site, a tech analyst and system administrator, by the aid of YouTube and Stackexchange (yeah, they have an electrical engineering section) I’m also now an electrician too!

I borrowed my dads multi-meter and a few other tools like a wire stripper with wire gauge holes, and found the 20 amp breaker the old line was connected to. Switched off the master breaker, popped out the old breaker with a flat head screw driver and pulled the line from it. Then I found a 30 amp double pole breaker that wasn’t being used for anything except for a water heater upstairs I think, which I don’t care about right now and pulled both conductors out of it and set it aside.

20 amp on left, 30 amp on right.

Then I pulled out the old 12 gauge romex from beneath the bedroom and fished my new 10 gauge conductor back up and worked my way beneath the house to the other side with the breaker box. I fished the other end up thru the floor where the previous line was and pulled up about what I needed. I left some slack in the line in case I want to move it around later, because the setup is sort of temporary and kind of janky. The whole back bedroom needs to be redone, so I’m not going to bother with finalizing stuff until later; I just need the AC to work for now.

Anyhow, I fitted the wires (both hots and a ground) to their outlet in the bedroom and connected the other ends to the 30 amp breaker and ground, then connected the breaker back onto the bus and flipped it all back on. So far no smoke and fire, so I returned back into the bed room with my multi-meter to make sure the outlet and receptacle weren’t somehow going to shock the snot out of me if I were to touch them, hooked up the AC, and powered her on!

It worked, and I didn’t kms from electrocution in the process, so in all I think it was a job well done. I need to find some long screws so I can mount the receptacle to the wall because it looks really jank just leaning onto the floor like it is; I accidentally bought the wrong size screws, then again bought some longer drywall screws just to later realize that the interior walls are all shiplapped with sheet rock nailed over it. I also need to get some sort of tubing to cover up the romex so it looks a little less trashy. One day in the soon to be future, I intend to redo this bedroom and get a more ornate receptacle that would look decoratively appropriate coming up thru a stained hardwood floor. The brutalist industrial looking stuff that you’re supposed to mount inside of the wall was all they had at the hardware store.

It's about 26" wide.

With the new AC unit working, I went ahead and bought some box fans to set around the house to circulate the air. So far it’s doing a pretty good job of cooling the place, but the kitchen is the last room to receive its cool air and tends to stay warm during the day. It’s not unbearable, like outside being 100F, but it hovers around 84F in the kitchen while the rest of the house gets to around 74F. 72F is really my target temp, and if I can at least keep my bed room at that point then I’m good. I don’t like it too cold, but I also don’t like it too warm either. I might get one more smaller unit for the kitchen.


During my time beneath the house, I finally got a good look at the foundation and the condition of the joists and subflooring. I can see where the previous owner had obviously flooded out their bathroom and kitchen areas because there was repair work done in those spots as well as old rot left behind.

In the back of the house in the utility closet, the whole corner sill beam is completely rotted to nothing. I hadn’t noticed it at first, but you can see the light from outside in the closet where the floor is separating from the wall! So my next plan of action is to clear the washing machines and all of the crap from out of that room that’s just weight on the floor. (There are also actual dumbbell weights on the floor in that room too.) It’s quite apparent that the washing machines had been leaking in this room for a long time. I’m surprised though that the flooring beneath looked just fine; all the water went right into the corner.

I really can’t wait to get to the fun part, which is replacing and repairing the siding on the bad wall as well as fixing the windows. I want people to see what a beautiful house this once was before the blight of vinyl snuffed out its soul. Just have to fix these sill beams first, which is posing to be quite the challenge because none of the foundation companies in the area are interested.

I might just have to become a foundation repair expert too bros.

Thanks for reading my blog!

General update v9
4 months, 2 weeks ago

"This is Winner-winner-tendie-dinner. I repeat, there are no signs of life out here. Over!"

Click image for wallpaper size!

So I’ve been pretty busy with things these past few weeks. First of all is with the house and trash pickup, junkin junk in a roll-off dump! I took a few before and after pics, but there’s still some junk left. I have a 5,000lbs weight restriction so trying to be careful here. I have seven of these crapped out doors that weigh somewhere between 80 – 100lbs, so that’s getting up their in pretty quick.

There's still some junk left, but I'll get it next haul.

Also the previous owner must have been nuts for canned olives and tuna because I can safely say that there was a ton of them bagged up around the place. There’s just so much junk, and with it being the dog days of summer in Texas, it gets anywhere between 97 to 100 degrees fahrenheit (36 – 37 celsius.)

I recently ordered a new window AC unit that should hopefully cover the whole first level of the house, rated at 28,000 BTU that can cover 1,900 square feet (176.5m squared). It’s a Frigidaire unit, which I got to check one out just like it at my grandparents not so long ago and thought it was good.

My only concern is that the power outlet that I’ll be connecting it to won’t work. It is the proper connection (220V NEMA 6-20), but the back half of the house on the lower level doesn’t receive power. I keep the breaker off to it for that reason, but the outlet for the AC unit is on its own breaker so maybe it’ll be alright? I noticed that the line is ran up thru the floor, so it likely also hangs out beneath the house and would be easily accessible. Kind of a common thing in old houses where the owners didn't want to hire someone to run wire thru the wall.

Finally here’s a picture of the well. It has a new well pressure tank, psi gauge, and plumbing work such as a cut off valve. I was using it over the weekend to wash some things and noticed that the water was really dirty. It wasn’t like this a month ago, so I don’t know what’s up with that. My guess is the water table is low in the summer and so it sucks up mud? I collected some in a bucket and gradually the dirt fell to the bottom. When I slide some up the side with my finger, it feels sort of like sand but will dissolve if you rub it. I think I’ll just leave it to run for an hour and see if it ever clears up, because the amount of material in it is too much for a filter to handle.

I had also read that I should disinfect the well since it can build up bacteria if not used for a long time.

That's all I've got for now. I'm still cleaning inside the house and have started moving in some of my own junk that's been kept in storage. My aim is to move in within the next month or two. It won't be easy living seeing that I won't have a septic for awhile, nor a proper bath or hot water, but so long I have muh AC and internet it should be fine enough.

Speaking of internet, I need to look into buying my soylink setup soon.

One more thing unrelated that I want to mention. I've made some small updates to the site so that images should fit better on phones. I'm not going to bother too much with older blog posts though, and the banner image is a little messed up. I intend to fix that later.

Thanks for reading my blog!

What has CozyNet been up to?
4 months, 2 weeks ago

It’s been a little quiet around the blog of late, but don’t worry because I’ve actually been working all week on a little project for the site!

Some of you might recall internet homepages like MSN, Yahoo, Netscape, the list goes on. These days homepages for the most part have either become a thing of the past or annoyingly ham-fisted into the New Tab page of modern browsers so propaganda can be rammed down your throat along with your morning coffee.

I wasn’t really ever fond of homepages, except for that one time where I believe it was Yahoo that allowed you to make a custom homepage with all sorts of cool widgets. Typically they’re just ad filled web waste with a search form at the top. When Google search came out, it was one of the first to have a simple clean page without all the crap, and to this day they’ ve kept to that approach.

Part of why I found homepages lame was because I was just a kid back then and they always had some boomer FUD about wars in Iraq, terrorists, spiraling economy, end of the world stuff. I wanted to see game news, flash games, funny videos of the day, dope ass WindowBlinds themes, a project spotlight! It could have been great, but it never happened, and now today I’m an internet boomer myself.

So I had a great idea about a week ago while I was bored at work, and that was to make a homepage; and not just a private homepage, but a public one that anyone can use! Check it out!

So this it pretty niche. I’m not trying to make something for a wide audience here bros. If you’re familiar with image boards and the alt-tech sub / counter culture areas of the internet, then this might make the perfect homepage for you! It’s also kind of specific to me and my interests too, so there’s that to keep in mind as well…

But the idea is that you can make it into your web browsers homepage, pull it up throughout the day and then quickly scan over some of the daily or weekly topics. At the moment I have three primary topic sections, “Cozy Corner,” “Tek NEET,” and “News General.” I might add more or move things around in the future. Also the Schiz-O-Monitors section would have some cool schizo tools. Right now it’s just the GCP graph, but a Gematria calculator would be cool to have if I could figure out how to set one up.

I tried keeping the use of Javascript down and not dependent on the functionality of the site. It just complements a few things, like the input auto-focus switcher when changing the search type or the music player.

The most difficult part out of all of this was making that dang web search box. At first I was using the DuckDuckGo search widget, which they copied from Yahoo’s search widget that would live within an iframe. Since it looked like ass and I couldn’t adjust the theme (because it’s remote content), I figured I would just make a SearXNG search box by ripping off what I saw in their search box. Basically it’s just a form POST with some input options that would be forwarded by the user client to the SearXNG instance. This worked pretty great, until the instance I was using was rate limited into oblivion. Not a good experience, and thus why I don’t use SearX, which is too bad because I wish it could work.

So then I decided to use what I had learned with the SearX search form and apply it to a custom DuckDuckGo search box. This was a complete slog because I had to reverse engineer their friggin URL system. It looks simple now if you inspect element, but it was complicated because I wanted this to work without depending on Javascript!

Now I’m not 100% certain, but I did carefully check the apache HTTP logs and I didn’t see any search queries or header info when performing a search, so I’m pretty sure that it’ s private and all on the client side, so you shouldn’t have to worry about me MITM search queries to DDG.

The search box is actually four individual boxes set on top of each other, then with a little CSS magic you can flip between them by the tab options above. I also added a Wiby search! The only problem with this is that it’s not keyboard accessible and the buttons are a little easy to miss.

Also one more thing to mention is the crypto price stats. I have a script on the backend that retrieves crypto values from a bitfinex API that runs as a cron job every minute. At first I had the iframe reload itself every minute, but I decided to make it static, so you'll have to refresh the page to see changes.

Conclusion:

It’s still a work in progress, but it’s at a point now that I believe it can be used. I would like to add more stuff to the page over time and experiment. Now don’t expect me to update it every hour of every day, or even every day! I don’t have that kind of time, but I will keep it updated with stuff on most days.

If you want to add it as a homepage to your web browser, don’t forget to enable the “Home” button, since it’s now a thing to disable that by default these days.

Thanks for reading my blog!

More stickers on the Thinkpad
2 months, 2 weeks ago
Visiting New York!
10 months, 2 weeks ago
Al-Sacred campfire
11 months, 2 weeks ago
Little scene I made on Blender with the character I wanna use for my game :D Copy the URL to share this video!**
Kero - Blender timelapse
1 year ago
Hi everyone! I want to practice more Blender so I’m going to try to make a character every week and this is the first one! Kero from Cardcaptor Sakura, loved that anime when I was a kid hehehe Hope you liked it! Copy the URL to share this video!**
search.joinpeertube.org
1 year ago
Search engine for Peertube videos in many instances at the same time
Keeping a presence on Neocities
1 year, 1 month ago
When I started this site back in 2019 I did it on Neocities. It was a great place to start and take off the rust from the little html I learned on highschool. After a while when the site itself started to grow and I wanted to host other stuff (Neocities only allows you to upload certain file types) I moved to a VPS. All worked really well but I missed a bit having my site poping up on there and also many people followed the site trough the Neocities Feed page (wich is ok and all but you should use RSS!
Fedi Playlist #001
1 year, 1 month ago
Good morning people! The other day on Mastodon I posted this: So with the responces I got in there I made this playlist that I found it is a good way to find new music. Hope you also enjoy it and find new stuff! Fedi Playlist #001
Hi again! This is what I've been up to
1 year, 2 months ago

It’s been a while since my last post here (the last one was on May I think) and many things new happened (music stuff, 3d stuff and game stuff!).

ichigos.com
1 year, 6 months ago
The best place to get your weeb music sheets. I’ve been using this website for years and it only gets better
Is it human nature to be violent?
3 months, 1 week ago

Even if it does not show that well with my laidback typing style I’m actually really fond of humanities and thinking (WHAT THE FUCKK) about stuff. Have my brain fart fumes!

In any case, you have probably heard this idea multiple times or even ad nauseam. Someone talks about the absurdity of war or the cruelty of events that happened today or in the past, and someone retorts back, well, we are simply this way, we were always so violent and we will stay that way. You think about it a little bit: “well that’s certainly true, there is no period in history where there wasn’t large scale death and violence towards mankind from our own hands. Well I guess I’m not particularly violent either, am I special? No many people are like that. Why are things this way?” You have no retort so you just agree and the conversation moves along.

Then let’s frame it this way, if you were kicked in the balls (and/or boobs), would it be just that it’s in your nature as a human being to scream?

No of course not you’re screaming because it obviously really hurts.

And that’s what I’m getting at. It’s not really in our nature to be anything. We are motivated (for the most part) only by the desire to survive and reproduce. Our large scale ideological and social systems are in accordance to that. Being selfish goes against your interests to survive most of the time actually, because losing a social safety net, opportunities and systems just makes your life harder and it becomes much less likely to survive. That’s why we are social beings, our strength together many times can elevate everyone and that’s why society exists, again for the most part.

So let’s shift the focus at interests. Is it now in your interests to kill a stranger on the streets? No, you are just going to have your life ruined for no reason. And if prison didn’t exist and you were in a tribe you will get murdered for threatening the survival of everyone as an unstable being. We need tp exclude anectodal killings and violence, to get a clearer look at human behaviour we need to see general trends of violence. Let’s go back to tribes again. When you are so few people any member of the tribe is crucial for survival. So generally acting violent and selfish is very detrimental to your interests and everyone else’s. If, for example, more hunters and warriors work together to bring in food, everyone thrives and the tribe grows. Now, conditions at that time were really really harsh. Your people, including your children, are starving. You have no agriculture to get mostly steady streams of food because it didn’t exist and you are not that genius yet. Everyone you know and love if probably going to die. Now, the other tribe on the other side of the mountain, man they are having successful hunts lately. It’s just enough for everyone. Well they won’t share it with you because then their tribe will starve then, it’s already so hard to get everyone in your tribe fed, and now these bums with nothing to give back want to take our shit and ruin our community. So, the first tribe with no other options left, goes to war for the resources and food, because the other option is the death of everyone you have known and loved. Somehow, despite their weakened states, that desire to survive leads them to victory and the other tribe is completely wiped out. With so much more resources, they thrive and everyone is saved. Of course, in the perspective of the other tribe, they were succeeding and then with incredible violence everyone and everything is suddently erased. What you should take away is that no one was wrong in this situation, and that if the first tribe never had their survival in danger, they would very much likely not taken the risk to kill so many precious warriors and hunters and destroy their community. They had their balls kicked and they screamed.

Buh well now we live in MODERN™ society! It’s so much more different!

Yes and no.

I took the example of a random tribe because it’s much more simpler to illustrate with a simple social system but also because it’s a way to really deny that the core of the idea is wrong because hunter gatherer tribes are one of the most pure forms of human so called nature you can find. The current massive social and ideological system (I will refer to it as Society™ because it’s shorter to say, but it’s wrong) we live in does change the way we live and think in massive ways but it does not turn us into different species. You feel hungry because you need to eat to function, you feel sleepy because you need to sleep to function, and you feel the need to get a job because no income greatly diminishes your chances at survival, because you need to eat to function, and you feel the need to lie and cheat sometimes, because getting away with it scott free especially in places where there is no threat of being caught, well you gain maybe income, you get more Society™ survival tokens and you can probably elevate yourself and your circle higher, assure security and allow yourself to live lives that are so much more lavish and peaceful, and maybe even gain some power with those wonderful tokens everyone wants, and respond to so many much more so called needs of everyone as that circle gets larger and you chase even higher than survival or the sky.

Oh the problem starts to become apparent. There is absolutely no interest for you or your family for you to kill strangers and die in a war, but it will be in the interests of other people that are powerful in such a way that other countries’ resources become pieces in their chessboard that they need to protect, and they will coerce you either with Society™ survival tokens, or use their precious tokens to manipulate the overarching ideology to create so many reasons and beliefs to why you should go off and die there. Suddenly Iraq has very very real I assure you guys WMDs. Suddenly China is going to invade annyyy second now you really need to fear those guys a bajillion kilometers away. Yeah, when there is such a clear power imbalance between people, because a single guy and his circle kinda owns the majority of let’s say your energy resources like oil, and he gains very much from doing so, suddenly interests start to conflict really hard. The members of a same tribe all share common interests so they have to work in harmony. The guy who needs a lot of people to die off in a very real pleast trust me war because his power and circle needs it or another big guy replaces him, well you really don’t have much interests in common despite sharing the same human nature of needing to survive. The difference obviously is power, which expresses itself in assets, propriety and money, which needs to coerce and control to survive and grow.

Well, if his business succeeds it surely helps the country and everyone because we are more powerful and rich! Really, is it in his interests to share a fraction that actually matters to people who have nothing to do with him? The less money he has, the less powerful he is. Much rather continue to coerce and pay the minimum possible wages to make even more money, and use the money into growing the shit that actually matters to him by lobbying for laws in his favor, donating to politicans that support him and thus giving them more of a reach, build more factories, sabotage enemies, using his power and influence to make resources accessible to him even by force. Ah, then surely the people will get angry at his selfishness and coercion! It is against his interests not to share because everyone will turn against him! Well, you are partially right. But then you remember, damn, he really has a lot of politicans at his side, oh, he can influence so much of the media, shit, with his power and other people like him’s power that pretty much lead to the total control of the government, well, if people turn against his clique, he has the entire police and military on his side. With the power of the control of ideas and the posession of incredible violence, you can really sway people. Just look at America!

He’s made of gold! How did this happen? Yo ho ho he took a bite of propriety

There is much more to explore but I am simply a mere Gap, so I will leave it at this conclusion. Now, when you have the conversation I described at the start, it probably changed meaning to you. Now it becomes someone validly complaining about the amount of unnecessary violence and cruelty in this world and this idea getting quickly shut down by a non-answer, well, we are just this way because uhh we are. Why? Because the deeper societal implications are uncomfortable and tough to think about. So let’s simply change the topic. I kicked you, and you are screaming not because I kicked you, you are just like that.

To learn more read Marx and Lenin xoxo HAHAHAHAHHAHA I TRICKED YOU INTO OPENING UP YOUR MIND TO NEW IDEAS AND TO CHALLENGE PRECONCIEVED NOTIONS AHHAHAHAHAHAHAHAH

Restructuring the blog
3 months, 2 weeks ago

Hello, managing RSS without automation is really difficult and Markdown is prrrretty cool.

So I set up a whole system with bic that generates everything for me!!!

Only caveat is that the rss resets to zero but the old system is unmanageable, it had to be done.


hosting-adventures
1 year, 6 months ago

starting to get into hosting with nauguscave.xyz

for the past 2 months i worked on offering various services on my own because:

  1. it's fucking fun
  2. i know that i am not glowing... right?

i'm using v*ltr (don't want to advertise for free) (and no i don't like l*ke) for now because i'm a 3rd worlder and i don't have fiber in my area

tl;dr it's poopoo ass garbage internet impossible to use for hosting

so much for decentralization idiot

anyways, i plan to keep all original web content (websites i write myself/static stuff) on neocities and all "services" on nauguscave.xyz

content hosted:

  • nauguscave.xyz, the main site is used to host a phpBB forum because that was the original plan and forums are fucking rad. currently i am the only active user along with a bud, consider joining because the more the merrier lol xd
  • mail.nauguscave.xyz, closed for the public, only used for mail registrations
  • git.nauguscave.xyz, gitea instance created for the gegenkulturproject, but you can use it pretty much freely
  • lounge.nauguscave.xyz, thelounge instance created to make my d*scord friends move to an alternative with a normie friendly ui, email me for login. i will give it away no questions asked, you only have to, well, ask
  • irc nauguscave.xyz/6697
GEGENKULTUR
1 year, 6 months ago

NEW PROJECT LOL

click this to go see GEGENKULTUR

this is a collab website based on a repo where people can add articles to it

why is it focused on hate? i love hating

yeah there is no particular reason for doing this one other than its funny

don't hesistate to contribute though... just do a funny...

The Utopian sickness
3 months, 2 weeks ago
# The Utopian sickness Techno-critical and futurist movements are deeply sick with a sickness of utopianism. Utopianism is a set of classic patterns of thought and mythologies, which were used by such geniuses as [Fourier, Owen, Saint-Simon], etc. These (or rather, the need to criticise them) ideas were the basis for materialist analysis of Marx and Engels, /partially/ Nietzsche's scepticism, and many other, better, ideas. To put the issue as shortly as possible, and hereby, providing a perfect tl;dr, Rest of the text on the website
Quick guide to CST/Xkeys PC-trac/O-trac/Kidtrac
5 months ago
Quick guide to CST/Xkeys PC-trac/O-trac/Kidtrac === O-trac and PC-trac seem to be the same trackball model made by different companies due to buyout. It is a classic trackball model without a scrolling functionality. There are a couple varieties of this trackball, described in detail [here]. I have CST1150 model, I would be thankful for inputs from people with Pro models to make this guide more comprehensive. Rest of the text on the website
A note on losing
1 year, 6 months ago
================
simple startpage script with rss support
2 years, 2 months ago
========================================
List of personal wikis
2 years, 2 months ago
======================
notes on favourite authors
2 years, 2 months ago
==========================
lounging critique
2 years, 2 months ago
=================
music and productivity
2 years, 2 months ago
======================
changing blog into personal wiki
2 years, 2 months ago
================================
Notes on my art
2 years, 6 months ago
===============
Publishing with Org Mode
4 months, 1 week ago

During last year, I started publishing my posts and rewrote my website with Org mode. For those who aren't familiar with it, it's a way to write and publish text. Org mode is a basic feature on Emacs, but you can use it on other text editors by installing a plugin.

In the past, I have been experimenting with sblg, which is a simple tool for blogs. It's not bad, but I wasn't satisfied with it, as I still had to write HTML for each post, which I didn't quite like. For some time I was experimenting with Emacs, and since I decided to take the time to learn its basics, I decided to give Org mode a try. It took some time to get used to it, but it become one of my favorite features on Emacs.

There are some things that make Org mode nicer to use. First, it's the simplicity of the syntax. While it's different than Markdown, it's not hard to understand how it works. To make it even better, even complex things are made easy, like tables. Second, you can embed code in the file. On my website, I embed quite a bit of HTML in some places (I'll explain why later in the post), but also lines of code when needed. For example, my configuration for Emacs is actually an Org mode file. Last, but not least, exporting the file to an HTML file, or another type of file, is easy and quick, just by pressing a few keys.

While there are lots of reasons to use Org mode, unfortunately there are some caveats. Some of them are because I designed my website being originally made for HTML written by hand, but had to adapt it in some ways to work with Org mode. If you write something and export it to HTML without changing the default options, there's a default style that gets applied, something that I definitely don't want, since I want my website to have a specific look. For my pages, I use the following options.

				     #+options: toc:nil num:nil html-postamble:nil html-style:nil html-doctype:xhtml-11 author:nil title:nil
				     

Despite my changes, I still have some issues. For example, Org mode tries to resolve external links, but some links aren't recognized which causes the file not to be exported. To solve that issue I have to write a bit of HTML in the file to make it work. There's an option that allows "broken" links, but in my case it's still problematic, as the links do not appear in the exported file.

Another problem I had to deal with was that some elements in the pages just don't work well. For instance, working with lots of images can be a bit of a pain. While it's trivial to add these in Org mode, they just seem broken on my configuration. So I have to write HTML to match exactly how these things should look and feel.

Something I want to work on is to automate the update of the RSS feed. While I automate a bunch of stuff during the publishing of a post by generating a new file from a template, I still have to figure out how to automate the RSS feed. Currently I have to write the post first and then I manually edit the RSS feed file after I'm done with the post. I'm sure there is a tool that handles that, but I haven't tried it yet. If you know something that does that job, let me know.

Thanks for reading.

Another year, another retrospective
10 months, 3 weeks ago

Happy new year, everyone! Like last year, here's another retrospective to talk about some stuff that I have done during last year and to make some announcements. It gives me a good reason to post about small stuff that I do over the year that do not make it in a post by themselves, or I only mention them on the Fediverse.

I'll start with some things I haven't done, as they are fewer. In the last year's retrospective I wrote about a couple of stuff that I wanted to do last year. Unfortunately, I didn't fulfill my plans for various reasons. Mostly because of procrastination, and lack of knowledge on web development for the project I wanted to work on. Actually, I haven't worked on any of my scripts during last year, with the exception of updating my suckless repository. Like last year, I still wasn't able to do anything to finish my degree. I've started thinking of dropping out to it, as I can't find a way to do anything about it for now.

Despite those, I was able to do quite a few nice things during 2022, though not something crazy. Since 2020, I have been active on the Fediverse. In 2022, I have seen lots of new users moving to the Fediverse, especially from Twitter. Before the beginning of this migration, I didn't know many users who posted in Greek (my main language). It was during that time I got in touch with local users, trying my best to help them how to use that new platform. Since then, I have been talking to a lot of great people and I have seen some very nice communities to be formed, something I didn't expect. By the way, I plan to write a post about my opinions on the Fediverse. I think I have quite a few things to say, having experience both as a user and as an instance administrator.

Since November I have been doing a music broadcast. I have always had a thing for music, but I never had proper knowledge on how to play an instrument. But over the years I got enough technical knowledge to broadcast. I started that on an onlne radio station that the people who run the kafeneio.social Mastodon instance have created some time ago. I think I was one of the first who started talking and interacting with the people on that radio, something that was liked by the listeners. The music I mostly play is Greek hip hop, as I'm more familiar with this genre (and some of its subgenres) and I have a big enough collection to choose from to play in my broadcasts. Also during that I have realized that my audience wasn't quite familiar with the genre, but they seemed to like it. Recently I decided to play what the listeners request, either before or at the time of the live broadcast, something I enjoyed a lot.

During the last year, I have tried a bunch of software. At the beginning of 2022, I decided to start using Emacs. It's a very powerful editor with tons of features. I had to learn how to use and configure it, and after several months, I'm still somewhat doing so, but I'm already enjoying using some of its features. The one I use a lot is Org Mode, which is a very powerful alternative to Markdown. I have been using it for my website for some time now, and I even used it for some documentation, as Org Mode files can be exported to various formats, like HTML or Markdown and others.

I have also started using BSD for a while. For some time I decided to mess with GhostBSD. It's a BSD system (based on FreeBSD) that comes with a GUI installer, which makes setting up stuff somewhat easier if you don't have experience with a BSD system. I enjoyed learning how BSD works, setting up stuff on it and using it as my daily driver for a short period of time, despite not all my hardware being supported, like my laptop's dedicated GPU and Wi-Fi. I have been using it until October, when my hard disk where my system was installed broke.

Since December, I have started talking with people from the Greek team of FSFE. I wasn't aware of the local group until recently, when they had their first online meeting about the Fediverse, something that as I said earlier, I'm heavily interested in. I'm glad I had an interesting discussion with people with much more experience on free software, and I hope over time I'll learn things that will eventually help me contribute more in the free and open source software community.

So, what's next?

This year I want to work more on open source projects in any way I can. I have already started working on translating a program, and I want to work on more stuff over time. I also want to learn a programming language well enough. Either improve my skills on a language I'm already familiar with, like C, or learn a new one that could be useful for any future projects.

I recently bought a cheap VPS to host my stuff at, like my website and my personal services. The VPS itself is very good for its price and so far I didn't encounter any problems with it. Web hosting is by far my favorite project. I enjoy spending my time working on my server more than writing posts. And as I did from the beginning, I'm going to share my services with people. For the time being, My services will be invite-only for now. I don't plan to allow public registrations, as I'm not sure for how long I'll be able to run the VPS. I want to avoid moving between servers, like what happened during last year. I will probably change that if I'll be able to keep the server for long enough.

Something I have been thinking about is to retire from the Lainchan webring, but I'm not sure about it yet. I'm glad I'm a part of this project for the last couple of years. I got in touch with lots of interesting people from the webring, learned lots of stuff, helped some people as well and had fun. But I have the feeling that eventually it's time for me to move on to other things. Also participating in webrings isn't really as exciting as it seemed to me at first. But I will talk about it more when the time for it comes.

And last, but not least, something I want to do more is to get outside than spending all my time online. Being online is nice, but as time goes by, I realize that being terminally online makes me miss lots of things that happen around me. Yes, there are lots of great things that start on the internet, but the really great stuff happens in real life. Also, it will give me lots of ideas to write about as time passes.

That's my retrospective about 2022. It was an interesting year in lots of ways. I can't really say if it's good or bad, as I think it's both, for different reasons. I know that since last year I haven't done much to improve myself in some aspects, but I want to try doing so this year. That's the reason I write that post, as a reminder for me to improve myself.

Thanks for reading.

Μετάφραση και άρθρα στα ελληνικά
1 year, 4 months ago

Εδώ και μερικές μέρες αποφάσισα μετά από πολύ καιρό να μεταφράσω ένα μεγάλο κομμάτι της ιστοσελίδας μου στα ελληνικά. Είναι κάτι που το σχεδίαζα εδώ και αρκετό καιρό, αλλά για πολλούς λόγους δεν το υλοποίησα, μέχρι σήμερα. Και με αυτό ως αφορμή, γράφω αυτό το σύντομο post.

Σχεδίαζα να μεταφράσω την ιστοσελίδα μου στα ελληνικά αρκετό καιρό πριν, και πιο συγκεκριμένα ξεκίνησα τον Ιούλιο του 2020, αλλά για διάφορους λόγους δεν ανέβασα τα αρχεία HTML ποτέ. Τότε, ένας από τους λόγους ήταν η γραμματοσειρά που χρησιμοποιούσα τότε, η οποία δεν υποστήριζε τους ελληνικούς χαρακτήρες. Αλλά μετά από πολλές αλλαγές, τόσο σε εμφάνιση, όσο και με τον τρόπο τον οποίο γράφω τα άρθρα μου, πιστεύω πως είναι μια καλή στιγμή να ξαναδουλέψω πάνω σε αυτό.

Ένας ακόμα λόγος που αποφάσισα να δουλέψω σε αυτό, είναι για να γράφω περισσότερα posts στα ελληνικά. Ενώ έχω ήδη γράψει ένα, το να βρίσκεται ανάμεσα σε άρθρα γραμμένα στα αγγλικά δε μου αρέσει ιδιαίτερα, με τη μόνη εξαίρεση σε αυτό να είναι το RSS feed γιατί βαριέμαι να φτιάξω άλλο. Επιπλέον, θέλω να βελτιώσω τα άρθρα μου γενικότερα. Επίσης πιθανότατα θα έχω περισσότερα να γράψω στα ελληνικά, καθώς θα μου βγαίνει ευκολότερα σε σχέση με τα αγγλικά.

Επιπλέον, κάτι άλλο που πιστεύω πως θα ήταν ενδιαφέρον, θα ήθελα να ξεκινήσω ένα webring με ιστοσελίδες με ελληνικό περιεχόμενο, για να προωθήσουμε τις ιστοσελίδες μας σε λίγο διαφορετικό κοινό. Πιστεύω πως θα είναι ένα υπέροχο εγχείρημα αν ενδιαφέρεται κάποιος. Επίσης μπορείτε να δείτε τα webrings στην αρχική μου σελίδα, αν θέλετε να έχετε μια ιδέα περί τίνος πρόκειται. Αν ενδιαφέρεστε, μπορείτε να μου στείλετε ένα email, ένα μήνυμα στο XMPP ή να τα πούμε στο Fediverse.

Αυτά προς το παρόν. Ετοιμάζω νέα άρθρα τα οποία θα ανεβάσω σύντομα, τόσο στα ελληνικά, όσο και στα αγγλικά.

Αυτό το έργο χορηγείται υπό την Άδεια Χρήσης Creative Commons Attribution 4.0 International.

Μετάφραση και άρθρα στα ελληνικά
1 year, 4 months ago

Εδώ και μερικές μέρες αποφάσισα μετά από πολύ καιρό να μεταφράσω ένα μεγάλο κομμάτι της ιστοσελίδας μου στα ελληνικά. Είναι κάτι που το σχεδίαζα εδώ και αρκετό καιρό, αλλά για πολλούς λόγους δεν το υλοποίησα, μέχρι σήμερα. Και με αυτό ως αφορμή, γράφω αυτό το σύντομο post.

Σχεδίαζα να μεταφράσω την ιστοσελίδα μου στα ελληνικά αρκετό καιρό πριν, και πιο συγκεκριμένα ξεκίνησα τον Ιούλιο του 2020, αλλά για διάφορους λόγους δεν ανέβασα τα αρχεία HTML ποτέ. Τότε, ένας από τους λόγους ήταν η γραμματοσειρά που χρησιμοποιούσα τότε, η οποία δεν υποστήριζε τους ελληνικούς χαρακτήρες. Αλλά μετά από πολλές αλλαγές, τόσο σε εμφάνιση, όσο και με τον τρόπο τον οποίο γράφω τα άρθρα μου, πιστεύω πως είναι μια καλή στιγμή να ξαναδουλέψω πάνω σε αυτό.

Ένας ακόμα λόγος που αποφάσισα να δουλέψω σε αυτό, είναι για να γράφω περισσότερα posts στα ελληνικά. Ενώ έχω ήδη γράψει ένα, το να βρίσκεται ανάμεσα σε άρθρα γραμμένα στα αγγλικά δε μου αρέσει ιδιαίτερα, με τη μόνη εξαίρεση σε αυτό να είναι το RSS feed γιατί βαριέμαι να φτιάξω άλλο. Επιπλέον, θέλω να βελτιώσω τα άρθρα μου γενικότερα. Επίσης πιθανότατα θα έχω περισσότερα να γράψω στα ελληνικά, καθώς θα μου βγαίνει ευκολότερα σε σχέση με τα αγγλικά.

Επιπλέον, κάτι άλλο που πιστεύω πως θα ήταν ενδιαφέρον, θα ήθελα να ξεκινήσω ένα webring με ιστοσελίδες με ελληνικό περιεχόμενο, για να προωθήσουμε τις ιστοσελίδες μας σε λίγο διαφορετικό κοινό. Πιστεύω πως θα είναι ένα υπέροχο εγχείρημα αν ενδιαφέρεται κάποιος. Επίσης μπορείτε να δείτε τα webrings στην αρχική μου σελίδα, αν θέλετε να έχετε μια ιδέα περί τίνος πρόκειται. Αν ενδιαφέρεστε, μπορείτε να μου στείλετε ένα email, ένα μήνυμα στο XMPP ή να τα πούμε στο Fediverse.

Αυτά προς το παρόν. Ετοιμάζω νέα άρθρα τα οποία θα ανεβάσω σύντομα, τόσο στα ελληνικά, όσο και στα αγγλικά.

Αυτό το έργο χορηγείται υπό την Άδεια Χρήσης Creative Commons Attribution 4.0 International.

Changes
1 year, 4 months ago

After my usual short absence from posting here, I decided to blogpost again. Things have been changing for some time now, and I want to share with you some of the changes I have been working on.

First, you might have already noticed that the website's appearance has been changed. For a few months, I have been experimenting with the CSS stylesheet of the website in order to make it look a bit nicer, but also keeping it as simple as possible. Not too long ago, I decided to look if there is an archived version of my website, which used my older design. To my surprise, there were a few archives with some stuff I have removed from the website back then. Looking at that brought a smile on my face, reminding me how nice it was to experiment with CSS 2 years ago. So, I decided to challenge myself by recreating it in a way that would work with my current website's layout, and it worked pretty well with minimal changes.

Also, I decided to work on a background. In fact, the grey background I used was supposed to be a placeholder, until I find a good alternative, which I haven't found until now. For my current background, I decided to get an image from my collection and do some editing on GIMP, mostly dithering and messing with a few effects. I have changed the colors around the website, like the link colors for example, to match the whole theme of the website as well.

Another change I've done recently was to rewrite my website in org-mode. I've been using Emacs for the last few months as my editor of choice, and I'm quite satisfied with it. One of its features is org-mode, a very powerful markup language which can generate text in various formats, including HTML. For a few months, I used sblg to generate my last two posts. But that seemed pointless to me when I can write my posts in a more convenient way, since I switched to Emacs. I didn't have many issues switching some of my pages from handwritten HTML to org-mode, but I had to change some stuff in some places. It can be quite time consuming.

You may have noticed that I have been switching servers for some time. After an issue I had with my server's hardware back in March, I have been switching to VMs provided by friends in order to host some of my stuff there. I know that selfhosting would be the best solution, but unfortunately, I can't do that because of various issues, like having a slow internet connection and not having any hardware to use as my server, except from my laptop, which I used to host mirrors of my website in Tor and I2P. Currently, I'm using a FreeBSD jail. Being used to servers running Linux, it's slightly more challenging to set up services, but I'll eventually get used to how that works.

By the way, talking about BSDs, I recently switched the Mac OS installation on my laptop to GhostBSD, a distro based on FreeBSD. It's a distribution that makes FreeBSD more easy to set up for users who aren't quite familiar with how BSD systems work. I had to deal with a couple of installations of FreeBSD that didn't work for various reasons, as well as the hell of setting up UEFI. But now I can boot to GhostBSD, I'm enjoying it and I'm writing this post from this system. I'll probably write more about it in its own post, similar to the one I wrote about Void Linux.

Something I have been thinking about, is that the only thing I've been posting about on my website is stuff about technology. While I really like writing about it, I think it's boring to write about a specific subject all the time. Originally, I wanted to write about more stuff, like anime and music I have enjoyed, but haven't really done so. I don't consider myself good at writing, especially in English, as it isn't my native language. Also, I'm not really good at writing articles, and I don't like to post short pieces of text here. I think it's better to work more on that in the future.

I tried to keep the post somewhat short, although I know it really isn't. If you have any questions about anything, you're welcome to ask me. That's all I have to say for now. I'll be back with more stuff soon.

This work is licensed under a Creative Commons Attribution 4.0 International License.

How to set up a fully compliant XMPP server from scratch
1 year, 7 months ago

This is the English version of the guide I posted in the Linux User forum. This version also fixes some errors I made in the original version.

Introduction

In this guide I'll show you how to set up a fully compliant XMPP server step by step, from scratch. In contrast with other guides that explain the basics for the setup of a minimal server, this one aims to help new sysadmins to set up an XMPP server that complies up to 100% to the XMPP protocol.

There are a few XMPP servers you can pick from. This guide focuses on Prosody, which is one of the most popular options for an XMPP server, and it's quite flexible. Moreover, these instructions are given for servers that run Debian (or Debian-based distributions). If you use another distribution for your server, use the appropriate commands for your distribution and refer to the documentation of the software you are going to use.

What is XMPP

XMPP (also known as Jabber) is a protocol for instant messaging. Compared with other IM services, XMPP is decentralized with lots of servers running appropriate software than similar services which are based on a centralized server.

What is needed for the server

To set up the XMPP server, the following are required:

  • A server (an older computer or a basic VPS is enough)
  • A domain, because some DNS records must be created
  • An SSL certificate, or more, depending on your server's settings. If you don't already have a certificate, you can generate a certificate with Certbot.
  • A web server. It won't be needed for XMPP itself, but for some modules that require it. In this guide Nginx will be used.
  • And Prosody, of course.

Installation and configuration of Prosody

To install Prosody, run sudo apt install prosody prosody-modules mercurial.

By running it, Prosody will be downloaded with some modules, which will be very useful later. mercurial will be used later to download some additional community modules that will be needed.

To download the community modules, run hg clone https://hg.prosody.im/prosody-modules/ prosody-modules.

(Personally, I have the prosody-modules directory at /usr/lib/prosody/modules/ for convenience. You can put it in whatever directory you want to.)

To set up prosody, edit the /etc/prosody/prosody.cfg.lua file as root with the text editor of your choice.

The following should be configured:

  • Define the user(s) who will have administration rights by giving their JIDs. You can add more users if you need to.
    admins = { "username@domain.tld" }

  • Define the plugin paths for the modules that were downloaded earlier. You can set the modules path, as well as the prosody-modules directory.
    plugin_paths = { "/usr/lib/prosody/modules", "/dir/of/prosody-modules" }

  • Define the modules you want to be enabled. Some of them are already enabled by default.
    modules_enabled { -- Generally required "roster"; "saslauth"; "tls"; "dialback"; "disco"; -- Not essential, but recommended "carbons"; "pep"; "private"; "blocklist"; "vcard4"; "vcard_legacy" -- Nice to have "version"; "uptime"; "time"; "ping"; "register"; "mam"; "csi_simple"; -- Admin interfaces "admin_adhoc"; --"admin_telnet"; -- HTTP modules "bosh"; --"websocket"; "http_files"; -- Other specific functionality "posix"; [...] "proxy65"; -- Add if you have downloaded the community modules "cloud_notify"; "smacks"; "turncredentials"; "vcard_muc"; "external_services"; "bookmarks"; "server_contact_info"; "http_upload_external"; }
    (Note: in the Lua programming language, the two dashes at the beginning of a line declare the specific line as a comment.)

  • Declare if users can register in the server.
    allow_registration = false
    If the server will be public and you want to allow users to register themselves, you can set this value to true.

  • Set up authentication
    authentication = "internal_hashed"

  • Set up storage
    storage = "internal"
    You can use an SQL database if you want to.

  • Set up the certificates directory
    certificates = "certs"
    This line declares that the certificates can be found at /etc/prosody/certs.

  • Set up VirtualHost with the domain and the subdomains needed
    VirtualHost "domain.tld" ssl = { key = "certs/domain.tld.key" certificate = "certs/domain.tld.key" } disco_items = { { "upload.domain.tld", "File upload" }; { "muc.domain.tld", "MUC" }; } }

  • Add some settings for BOSH (useful to connect to your server from web clients)
    consider_bosh_secure = true; cross_domain_bosh = true; https_ssl = { certificate = "/etc/letsencrypt/live/domain.tld/fullchain.pem"; key = "/etc/letsencrypt/live/domain.tld/privkey.pem"; }

  • Add contact info
    contact_info = { abuse = { "mailto:abuse@domain.tld" }; admin = { "mailto:admin@domain.tld" }; feedback = { "mailto:feedback@domain.tld" }; }

  • Add the components needed
    MUC:
    Component "muc.domain.tld" "muc" restrict_room_creation = false modules_enabled { "vcard_muc", "muc_mam", }

    Uploads:
    Component "upload.domain.tld" "http_upload_external" http_upload_external_base_url = "https://upload.domain.tld/" http_upload_external_secret = "secret" http_upload_external_file_size_limit = 104857600 -- 100 Mib

  • Add the external service configuration for the turnserver (for audio and video calls through a compatible XMPP client):
    external_services = { { type = "stun", transport = "udp", host = "turn.domain.tld", port = 3478 }, { type = "turn", transport = "udp", host = "turn.domain.tld", port = 3478, secret = "secret" } }

  • Save the file.

  • Create the admin account by running sudo prosodyctl adduser username@domain.tld.
    With the same command we can create normal accounts as well.

  • If a certificate already exists, run the command sudo prosodyctl -root cert import /etc/letsencrypt/live. If there is not any, create one with certbot.

  • At the DNS configuration settings for the domain, add the _xmpp and _xmpps SRV records, as they are mentioned here. You can also make SRV records for the subdomains you need, like for MUC, for example (the configuration for uploads and the turnserver will be mentioned below). It may take a few minutes for the records to be deployed. Also forward the ports (TCP only) on your router and configure your firewall accordingly, if it is enabled.

If the steps above are done, enable the prosody service and start it with the following commands:
sudo systemctl enable prosody
sudo systemctl start prosody

After starting Prosody, try to connect with your JID and your password to an XMPP client (I suggest using Dino on desktop and Conversations on Android). If you can connect to your server, it means that everything went alright. Otherwise, run the sudo prosodyctl check command. It's very helpful to troubleshoot any issues on Prosody.

If your server is functional, You might want to check compliance.conversations.im, where you can see your server's compliance with the XMPP protocol. It's suggested to make a testing account, which can also be useful later.

Upload server configuration

In order to upload files on the XMPP server, some things have to be configured first.

As you can see above, the upload component and the http_upload_external module were added in the configuration file. That module has a few implementations, as you can see here. In this guide, Prosody Filer (which is the implementation in Go) will be used, as it is the easiest to configure.

  • First, install golang on your system with the sudo apt install golang command.

  • Clone the Prosody Filer repository by running git clone https://github.com/ThomasLeister/prosody-filer.

  • Go to the prosody-filer directory, and run the build.sh script to compile Prosody Filer.

  • Copy prosody-filer and config.example.toml to a directory of choice, for example, in /var/www/upload.

  • Rename config.example.toml to config.toml and edit it like this:
    listenport = "[::]:5050" secret = "secret" storeDir = "/var/www/upload/uploads/" uploadSubDir = ""
    The secret must be the same that was set up in Prosody's configuration, in the upload component.

  • Create the systemd service for Prosody Filer at the /etc/systemd/system/prosody-filer.service directory and write the following to it:
    [Unit] Description=Prosody file upload server [Service] Type=simple ExecStart=/var/www/upload/prosody-filer Restart=always WorkingDirectory=/var/www/upload [Install] WantedBy=multi-user.target

  • Run the following commands to start Prosody Filer:
    sudo systemctl reload-daemon
    sudo systemctl enable prosody-filer
    sudo systemctl start prosody-filer
    You can check if Prosody Filer is running with the sudo systemctl status prosody-filer command.

  • Create a configuration file at /etc/nginx/sites-available/xmpp-upload and write the following to it:
    server { listen 80; listen [::]:80; listen 443 ssl; listen [::]:443 ssl; server_name uploads.domain.tld; ssl_certificate /etc/letsencrypt/live/uploads/domain.tld/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/uploads/domain.tld/privkey.pem; client_max_body_size 50m; location /upload/ { if ( $request_method = OPTIONS ) { add_header Access-Control-Allow-Origin '*'; add_header Access-Control-Allow-Methods 'PUT, GET, OPTIONS, HEAD'; add_header Access-Control-Allow-Headers 'Authorization, Content-Type'; add_header Content-Length 0; add_header Content-Type text/plain; return 200; } proxy_pass http://[::]:5050/upload/; proxy_request_buffering off; } }

  • Create a symlink of this configuration by running:
    sudo ln -s /etc/nginx/sites-available/xmpp-upload /etc/nginx/sites-enabled.

  • Enable and start Nginx by running the following commands:
    sudo systemctl enable nginx
    sudo systemctl start nginx

If there are no errors, restart Prosody by running sudo systemctl restart prosody. Then you can check if file uploading works from your XMPP client.

Turnserver configuration for audio and video calls

To improve your XMPP server a bit, you can easily set up a turnserver to be able to make and accept voice and video calls from friends.

  • First, install Coturn by running sudo apt install coturn.

  • Change the TURNSERVER_ENABLED value in the /etc/default/coturn file from 0 to 1.

  • Enable Coturn by running sudo systemctl enable coturn and sudo systemctl start coturn.

  • Make the following changes in the /etc/turnserver.conf (uncommenting the following options):
    listening-port=3478 listening-ip=0.0.0.0 external-ip=[Your external IP address] min-port=49152 max-port=65535 static-auth-secret=secret server-name=turn.domain.tld user=test:test123 realm=domain.tld
    The user option here is useful in case you want to test the turnserver. Also, the static-auth-secret must be the same with the secret that has been set at Prosody's configuration, similarly to upload's secret.

  • Restart Coturn by running sudo systemctl restart coturn.

  • Forward the 3478 port on your router (TCP and UDP) and set up your firewall accordingly, if you have that enabled.

  • Create an A record on the DNS configuration settings with the host set as turn.domain.tld with value 127.0.0.1 and TTL set as 3600 (or automatically).

You can restart Coturn and Prosody and try the calls function with another user, like the testing one, as I mentioned that earlier in the guide.

Finishing the setup

If the set up process didn't have any issues, it means that your server is ready and probably complies fully with the XMPP protocol. But XMPP's capabilities don't stop there, as you can improve your XMPP server with lots of extensions that you can try for your needs.

A retrospective about 2021 and plans for the future
1 year, 9 months ago

Despite being a bit late, I hope 2022 has started well for you. I decided to write a quick retrospective for 2021, because for me, 2021 was an interesting year, both for this website, as well as for me personally. I will also share with you some thoughts I have about the future, like plans I might work on and some predictions about the future in general.

In my opinion, 2021 was more or less a continuation of 2020, which was generally a bad year for lots of people. For me, 2021 was a year I have worked a lot on my projects, especially this website.

About the website and the services

In March of 2021, with a help of a friend, I got access to the small laptop I have been using as my server.

Later, I aquired a domain, which I got for free, but a couple of months later I switched to another domain because of some technical issues I had.

During that year, I experimented with various services. Some of them are being used until now, but others didn't work as well as I wanted to. In my opinion, hosting these services is not only an interesting learning experience, learning how to set them up and configure them, but also a small attempt to decentralize the internet.

Personal retrospective

As for me, not many interesting things happened. I was able to get a job for a couple of months. That helped me get some money to rent an apartment close to my university, to attend my lessons for the last year in university. Unfortunately, it didn't happened. I wasn't able to find a place to live at, even for a short period of time, and I had to return at home. To make that worse, there weren't any online lessons to attend. So I'm stuck to a position I can't finish my degree.

Besides that, something that I realized was that I was procrastinating a lot, which shows in both this website, and some of my projects. I personally want to change that.

Plans for the future

I have been thinking about what to do in the future. I'm not sure if I'll actually do some of those, but I'll try working on them, at least.

First, I want to write more stuff here. Sometimes I have some good ideas about things to write on, but I either don't feel like posting them, or not having the time to do so because of IRL circumstances. I might also write stuff in my native language. It's easier to write some stuff like that, even though not many people will read that (not that I really care about that, to be honest). I sometimes post stuff that I have translated though.

I'm thinking of working on some software, probably something web related. I haven't really tried making something like that before, but that would be an interesting challenge. And last, but not least, I want to improve my services. I think that they are good enough both for my hardware, and my needs as they are, but I think there's always some space for improvement.


That's what I had to share with you. I think I'll have more interesting stuff to post soon.

This work is licensed under a Creative Commons Attribution 4.0 International License.

Programming Log - First impressions on Web Browser
2 years, 2 months ago

A couple days ago, I decided to try compiling Web Browser on my computer. For those who don't know about this browser (yes, I know it has the most generic name possible), it's a fork of Pale Moon that fixes some of the issues Pale Moon has. I have tried compiling it a couple times in the past, but it failed because of various issues. After thinking about it, I decided to check the git, clone the repository and compile the program. The instructions for the compilation are simple and the process took about 30 minutes on my computer.


Web Browser displaying a website


After compiling it, I did some testing to see if it works as it should and then I installed it on my system. It works almost exactly like Pale Moon does, without the privacy issues. For me, it was very easy to migrate from Pale Moon to Web Browser. I was already using Pale Moon and I just had to copy my files from its config to Web Browser's config.

Despite working well for me, it doesn't mean that Web Browser doesn't have its own issues. You can't download plugins and themes directly from Pale Moon's website and it seems that it blocks the browser with the "Unable to Comply" error. Although, you can sideload the themes and plugins you need. Another issue is that you might be confused with the directory where the configuration files are, like the profiles etc. I noticed a pattern here. The directory is at ~/.[name of developer]/[name of browser]. In my case it was at ~/.individual programmer/webbrowser, with spaces, which is annoying to browse in the terminal of a Unix-based system.

Personally, I'd like mess with its code when I have some more free time. One of the changes I want to implement is to move the configuration to ~/.config/webbrowser. It's annoying for some users (and for me as well) to have each application creating a file with its configuration on my home directory, when the .config directory exists. I'll also try to find a way to be able to download plugins through the browser. In the worst case, I might try setting up a small repository with plugins.

Those are my thoughts about Web Browser. I'd like to get your feedback, especially if you have tried the browser yourselves.

This work is licensed under a Creative Commons Attribution 4.0 International License.

Γιατί η ελληνική γλώσσα είναι άθλια στους υπολογιστές
2 years, 4 months ago

Μερικές μερες πριν, έτυχε να συμμετάσχω σε μια συζήτηση σχετικά με μερικά προβλήματα με το ελληνικό layout του πληκτρολογίου, πιο συγκεκριμένα με τον τρόπο που πληκτρολογείται ο τόνος, ο οποίος μειώνει σημαντικά την ταχύτητα πληκτρολόγησης. Μετά από συζήτηση στο κανάλι IRC του kill -9, αποφάσισα να γράψω αυτό το κείμενο στο οποίο παραθέτω τα παράπονά μου για την ελληνική γλώσσα στους υπολογιστές. Αυτό το κείμενο, καθώς και οποιοδήποτε άλλο κείμενο στη σελίδα είναι έργο σε εξέλιξη, και είναι γραμμένο για να είναι κάπως υπερβολικό, για να αναδείξει μερικά προβλήματα.

Παραθέτω το κείμενο:

Θυμάμαι πριν χρόνια όταν είχα ακούσει τη (σχετικά) γνωστή μαλακία που λέγανε ότι η γλώσσα των υπολογιστών είναι τα Αρχαία Ελληνικά. Δεν ξέρω πόσο χόρτο ήπιε όποιος το σκέφτηκε, αλλά είναι η μεγαλύτερη μπαρούφα που έχω ακούσει, καθώς οποιοσδήποτε που δεν έχει IQ θερμοκρασίας δωματίου ξέρει ότι οι υπολογιστές καταλαβαίνουν μόνο το δυαδικό σύστημα. 1 και 0, ανοιχτό ή κλειστό δηλαδή, για να το εξηγήσω απλά στα άτομα με IQ αμοιβάδας. Μακάρι να ήταν μόνο αυτό το πρόβλημα της ελληνικής γλώσσας στους υπολογιστές, αλλά υπάρχουν αρκετά πρακτικά προβλήματα τα οποία δεν έχουν λυθεί.

Greeklish

Ας ξεκινήσουμε με το κλασικό πρόβλημα των greeklish. Είναι ό,τι πιο άσχημο έχω δει. Σε μερικές περιπτώσεις δυσκολεύεσαι να βγάλεις νόημα, καθώς ο καθένας γράφει όπως να 'ναι. Εντάξει, καταλαβαίνω ότι δεν το έχουν όλοι με την ορθογραφία και τους τόνους. Έχουν βγει τα μάτια μου πολλές φορές διαβάζοντας μηνύματα και να χρειάζεται κάποιου είδους αποκρυπτογράφηση επειδή στην άλλη πλευρά ο άλλος "βαριέται να τα γράψει σωστά". Αλλά το greeklish δεν είναι λύση. Κάποτε μπορεί να ήταν, όταν υπήρχαν θέματα στην υποστήριξη χαρακτήρων που δεν είναι ASCII. Αλλά είναι πολύ σπάνιο πλέον κάτι τέτοιο, και ο μέσος έλληνας (ναι, και ο φοιτητής πληροφορικής που τυγχάνει να διαβάζει τα άρθρα στο kill-9) δεν θα χρησιμοποιήσει κάποιο λειτουργικό σύστημα που βρίσκεται σε alpha για να ποστάρει μαλακίες στο καρκίνωμα του zucc. Το ίδιο ισχύει και για το αντίστροφο, το engreek. Όποιος το χρησιμοποιεί μη ειρωνικά, του αξίζει κρέμασμα στην πλατεία του χωριού του.

Ελληνικές μεταφράσεις

Κάθε φορά που βλέπω ελληνική μετάφραση σε λειτουργικό σύστημα, θέλω από αντίδραση να κάνω format και επανεγκατάσταση στην αγγλική του έκδοση, κι ας είναι τα αγγλικά μια κακή γλώσσα για τους δικούς της λόγους. Πολλοί συμφωνούν ότι οι ελληνικές τεχνικές μεταφράσεις στους υπολογιστές είναι πραγματικά άθλιες, και ένας βασικός λόγος είναι ότι ΟΝΤΩΣ μερικές **επίσημες** ορολογίες είναι άθλια μεταφρασμένες. Για παράδειγμα, η επίσημη μετάφραση του όρου "bit" είναι "δυφίο". Ενώ η λογική πίσω από τη μετάφραση είναι η ίδια με τον αρχικό όρο, δηλαδή ενώ η φράση "binary digit" μεταφράζεται ως "δυαδικό ψηφίο" δεν είναι κακή, η συντόμευση του όρου στα ελληνικά ακούγεται άθλια.

Έλλειψη γραμματοσειρών

Δεν υπάρχει κάτι πιο εκνευριστικό από το να θέλεις να χρησιμοποιήσεις μια καλή γραμματοσειρά για το σύστημά σου (π.χ. Terminus) και να συνηδειτοποιείς ότι δεν εμφανίζει σωστά, ή και καθόλου τα αρχεία που έχουν ελληνικούς χαρακτήρες. Η μόνη λύση σε αυτό είναι να χρησιμοποιήσεις μια γραμματοσειρά που έχει υποστήριξη για ελληνικούς χαρακτήρες, όπως το Inconsolata LGC (στο τερματικό), καθώς και να ρυθμίσεις το σύστημά σου κατάλληλα έτσι ώστε να μην υπάρχουν τυχόν θέματα όσον αφορά το ελληνικό κείμενο.

Ελληνικό πληκτρολόγιο

Κάτι το οποίο συνηδειτοποίησα πριν λίγο καιρό είναι πως ακόμα και το ελληνικό layout στα ελληνικά πληκτρολόγια είναι απαίσιο. Αν πληκτρολογείς γρήγορα, ο τρόπος που πρέπει να βάλεις τόνους σε καθυστερεί αρκετά. Αντί να υπάρχουν μερικά modifier keys για την εισαγωγή τόνων ή και διαλυτικών, πρέπει να πληκτρολογήσεις πρώτα στο σημείο που κανονικά βρίσκεται το "ελληνικό ερωτηματικό" ή semicolon, όπως αποκαλείται στα αγγλικά. Αλλά αν θέλεις να βάλεις το ερωτηματικό, πρέπει να πατήσεις στο "Q". Εντάξει, έχουμε 24 γράμματα στα ελληνικά και χωράνε στο αγγλικό layout. Αλλά αυτό δε σημαίνει ότι δεν έχουν γίνει ηλίθιες επιλογές στο ελληνικό layout.

Εναλλακτικές λύσεις

Καταλαβαίνω ότι για πολλούς δεν είναι εύκολο να αποφύγουν να γράφουν στα ελληνικά, αλλά θα παραθέσω τις εναλλακτικές που προτείνω εφόσον είναι δυνατό κάτι τέτοιο

  • Εγκατάσταση συστήματος στα Αγγλικά
  • Αποφυγή ελληνικών ονομάτων στα αρχεία
  • Εκμάθηση και συχνή χρήση Esperanto (πιθανότατα η καλύτερη διεθνής γλώσσα)

Αυτό το έργο χορηγείται υπό την Άδεια Χρήσης Creative Commons Attribution 4.0 International.

Γιατί η ελληνική γλώσσα είναι άθλια στους υπολογιστές
2 years, 4 months ago

Μερικές μερες πριν, έτυχε να συμμετάσχω σε μια συζήτηση σχετικά με μερικά προβλήματα με το ελληνικό layout του πληκτρολογίου, πιο συγκεκριμένα με τον τρόπο που πληκτρολογείται ο τόνος, ο οποίος μειώνει σημαντικά την ταχύτητα πληκτρολόγησης. Μετά από συζήτηση στο κανάλι IRC του kill -9, αποφάσισα να γράψω αυτό το κείμενο στο οποίο παραθέτω τα παράπονά μου για την ελληνική γλώσσα στους υπολογιστές. Αυτό το κείμενο, καθώς και οποιοδήποτε άλλο κείμενο στη σελίδα είναι έργο σε εξέλιξη, και είναι γραμμένο για να είναι κάπως υπερβολικό, για να αναδείξει μερικά προβλήματα.

Παραθέτω το κείμενο:

Θυμάμαι πριν χρόνια όταν είχα ακούσει τη (σχετικά) γνωστή μαλακία που λέγανε ότι η γλώσσα των υπολογιστών είναι τα Αρχαία Ελληνικά. Δεν ξέρω πόσο χόρτο ήπιε όποιος το σκέφτηκε, αλλά είναι η μεγαλύτερη μπαρούφα που έχω ακούσει, καθώς οποιοσδήποτε που δεν έχει IQ θερμοκρασίας δωματίου ξέρει ότι οι υπολογιστές καταλαβαίνουν μόνο το δυαδικό σύστημα. 1 και 0, ανοιχτό ή κλειστό δηλαδή, για να το εξηγήσω απλά στα άτομα με IQ αμοιβάδας. Μακάρι να ήταν μόνο αυτό το πρόβλημα της ελληνικής γλώσσας στους υπολογιστές, αλλά υπάρχουν αρκετά πρακτικά προβλήματα τα οποία δεν έχουν λυθεί.

Greeklish

Ας ξεκινήσουμε με το κλασικό πρόβλημα των greeklish. Είναι ό,τι πιο άσχημο έχω δει. Σε μερικές περιπτώσεις δυσκολεύεσαι να βγάλεις νόημα, καθώς ο καθένας γράφει όπως να 'ναι. Εντάξει, καταλαβαίνω ότι δεν το έχουν όλοι με την ορθογραφία και τους τόνους. Έχουν βγει τα μάτια μου πολλές φορές διαβάζοντας μηνύματα και να χρειάζεται κάποιου είδους αποκρυπτογράφηση επειδή στην άλλη πλευρά ο άλλος "βαριέται να τα γράψει σωστά". Αλλά το greeklish δεν είναι λύση. Κάποτε μπορεί να ήταν, όταν υπήρχαν θέματα στην υποστήριξη χαρακτήρων που δεν είναι ASCII. Αλλά είναι πολύ σπάνιο πλέον κάτι τέτοιο, και ο μέσος έλληνας (ναι, και ο φοιτητής πληροφορικής που τυγχάνει να διαβάζει τα άρθρα στο kill-9) δεν θα χρησιμοποιήσει κάποιο λειτουργικό σύστημα που βρίσκεται σε alpha για να ποστάρει μαλακίες στο καρκίνωμα του zucc. Το ίδιο ισχύει και για το αντίστροφο, το engreek. Όποιος το χρησιμοποιεί μη ειρωνικά, του αξίζει κρέμασμα στην πλατεία του χωριού του.

Ελληνικές μεταφράσεις

Κάθε φορά που βλέπω ελληνική μετάφραση σε λειτουργικό σύστημα, θέλω από αντίδραση να κάνω format και επανεγκατάσταση στην αγγλική του έκδοση, κι ας είναι τα αγγλικά μια κακή γλώσσα για τους δικούς της λόγους. Πολλοί συμφωνούν ότι οι ελληνικές τεχνικές μεταφράσεις στους υπολογιστές είναι πραγματικά άθλιες, και ένας βασικός λόγος είναι ότι ΟΝΤΩΣ μερικές **επίσημες** ορολογίες είναι άθλια μεταφρασμένες. Για παράδειγμα, η επίσημη μετάφραση του όρου "bit" είναι "δυφίο". Ενώ η λογική πίσω από τη μετάφραση είναι η ίδια με τον αρχικό όρο, δηλαδή ενώ η φράση "binary digit" μεταφράζεται ως "δυαδικό ψηφίο" δεν είναι κακή, η συντόμευση του όρου στα ελληνικά ακούγεται άθλια.

Έλλειψη γραμματοσειρών

Δεν υπάρχει κάτι πιο εκνευριστικό από το να θέλεις να χρησιμοποιήσεις μια καλή γραμματοσειρά για το σύστημά σου (π.χ. Terminus) και να συνηδειτοποιείς ότι δεν εμφανίζει σωστά, ή και καθόλου τα αρχεία που έχουν ελληνικούς χαρακτήρες. Η μόνη λύση σε αυτό είναι να χρησιμοποιήσεις μια γραμματοσειρά που έχει υποστήριξη για ελληνικούς χαρακτήρες, όπως το Inconsolata LGC (στο τερματικό), καθώς και να ρυθμίσεις το σύστημά σου κατάλληλα έτσι ώστε να μην υπάρχουν τυχόν θέματα όσον αφορά το ελληνικό κείμενο.

Ελληνικό πληκτρολόγιο

Κάτι το οποίο συνηδειτοποίησα πριν λίγο καιρό είναι πως ακόμα και το ελληνικό layout στα ελληνικά πληκτρολόγια είναι απαίσιο. Αν πληκτρολογείς γρήγορα, ο τρόπος που πρέπει να βάλεις τόνους σε καθυστερεί αρκετά. Αντί να υπάρχουν μερικά modifier keys για την εισαγωγή τόνων ή και διαλυτικών, πρέπει να πληκτρολογήσεις πρώτα στο σημείο που κανονικά βρίσκεται το "ελληνικό ερωτηματικό" ή semicolon, όπως αποκαλείται στα αγγλικά. Αλλά αν θέλεις να βάλεις το ερωτηματικό, πρέπει να πατήσεις στο "Q". Εντάξει, έχουμε 24 γράμματα στα ελληνικά και χωράνε στο αγγλικό layout. Αλλά αυτό δε σημαίνει ότι δεν έχουν γίνει ηλίθιες επιλογές στο ελληνικό layout.

Εναλλακτικές λύσεις

Καταλαβαίνω ότι για πολλούς δεν είναι εύκολο να αποφύγουν να γράφουν στα ελληνικά, αλλά θα παραθέσω τις εναλλακτικές που προτείνω εφόσον είναι δυνατό κάτι τέτοιο

  • Εγκατάσταση συστήματος στα Αγγλικά
  • Αποφυγή ελληνικών ονομάτων στα αρχεία
  • Εκμάθηση και συχνή χρήση Esperanto (πιθανότατα η καλύτερη διεθνής γλώσσα)

Αυτό το έργο χορηγείται υπό την Άδεια Χρήσης Creative Commons Attribution 4.0 International.

HERE BE AI
6 months, 3 weeks ago
Image Details & Source An origami dragon — One of the last of its kind. “SCP-1762” by OZ Ouroboros, from the SCP Wiki. Licensed under CC-BY-SA. This page was last modified: May 7th, 2023 I’m a teacher btw. # Earlier this week I watched the following video: Too Long; Didn’t Watch? Well, first off: Find Jesus. But, sure, I’ll do you the flavor, beloved visitor (it is a TED Talk, after all, can’t say I blame ya).
Exploring the Personal Web
6 months, 3 weeks ago
Image Details & Source Picture of Lord Theodore Thomas Blackwood — The greatest explorer to have ever lived. This page was last modified: May 6th, 2023 Welcome Aboard # This post will offer no guidance on how to create your personal website. We’re starting off here because I believe this to be one of the most essential pieces in whether or not you will consider the pursuit fulfilling. Sadness did this for me with her Cyberspace section.
The Personal Web
6 months, 3 weeks ago
Image Details & Source sadgrl.online banner This page was last modified: May 5th, 2023 A while back ago I came across this website called sadgrl.online. The site author called herself Sadness and she seemed to be sad about what the Internet had become. Her site wasn’t just about nostalgia, though. It questioned the current state-of-affairs, welcomed people to participate in the discussion, and inspired you to do something about it.
TechEd-verse of Madness
8 months ago
Image Details & Source Unsplash+ exclusive: a couple of women wearing virtual glasses on top of a couch. If you are seeing any watermarks, please either: take off your Apple (AR) Glasses™ surgically remove your government-mandated Neuralink chip swallow Neo’s brightly-colored pill, or consume them ironically; thank you. Last tended: March 30th, 2023 In The Beginning # It wasn’t that long ago that “computer class” in K-12 meant practicing touch typing or learning the Microsoft Office Suite.
Lucid Dreaming
8 months, 3 weeks ago
Image Details & Source reddit post that included discussion on the Dragon Age: Inquisition tarot cards. Click Here for the Original Uncropped Image Last tended: March 4th, 2023 Where Demons Lie # Once upon a time I suffered from regular nightmares. They weren’t anything special. Just darkness, monsters and dread. I don’t know why I experienced them so frequently, but they were enough to keep me away from sleep and horror-inducing media.
Exploited: Part 1
9 months, 1 week ago
Image Details & Source man in gray polo shirt by Mishal Ibrahim on Unsplash This page was last modified: February 22nd, 2023 The Lies We Tell # I’ve peered behind another’s curtain today, dear reader. I ask in advance that you forgive (or at least put aside) that sin; for what I saw, it invoked me. ✝️ I had debts due and was forced to use a family member’s financial system.
About Me
9 months, 3 weeks ago
This page was last modified: February 11th, 2023 TL;DR # Jayden Garridan Bridges from New York City, USA. Who Are We? # There’s an interesting identity exercise that asks its participants to introduce themselves to one another without mentioning their name, occupation or the ability to ask questions. Forget your entire introduction, what would you start with? Your race/ethnicity? Your sex/gender? Your faith/values? Which of your many dimensions bubbles up to the surface first?
It's 2023: Students Hate Movies
10 months, 1 week ago
Image Details & Source alamy stock photo: Primary school children watching television educational programme. Also, here’s a link to a website that removes watermarks. Yes, they’re there on purpose. This page was last modified: January 22nd, 2023 To the Lost 🫗 # I loved movie classes. They were no-brainers! And aside from their convenience, I sincerely believe films possess unique educational value. Kids and I got to chill, lay back, hopefully learn a thing or two, and we all walked away happy.
ChatGPT: Student Report Card Comments
10 months, 1 week ago
Image Details & Source Frame from the 1985 film Real Genius. Specifically, the end of the (not-so-absurd) “lecture hall montage” in which a bunch of smaller student tape recorders are recording the professor’s math lesson, which is itself being played back via a larger, more vintage tape recorder. The scene begins approximately 26 minutes, 53 seconds into the movie. This page was last modified: February 9th, 2023 I’ve removed the ChatGPT responses from the original post.
What does Wikipedia do with their Millions? ~ Don't Donate to Wikipedia
7 months, 2 weeks ago

Once a year, Wikipedia runs their big donation campaign -- "Oh! Won't you please donate to Wikipedia? It's only the cost of a cup of coffee! We really need every penny!" It's all lies. Wikipedia is rich. How rich? $250,965,422 to be exact, with an additional 105 million dollars in the Wikipedia endowment, which is counted separately for some reason. "Okay," you might say, "but Wikipedia is a popular website, it must cost a lot of money to run it." You are right, it costs $2,704,842 in internet hosting, and $405,885 in "in kind" expenses every year. These are all big numbers, but notice how the costs seem to be a lot smaller numbers than their assets. In fact, Wikipedia has enough money to keep running until the year 2103 A.D. not counting the endowment.

What do they do with all the money?

If you go to Wikipedia's donation page, it says...

Where your donation goes

Technology:x Servers, bandwidth, maintenance, development. Wikipedia is one of the top 10 websites in the world, and it runs on a fraction of what other top websites spend.

People and Projects: The other top websites have thousands of employees. We have about 700 staff and contractors to support a wide variety of projects, making your donation a great investment in a highly-efficient not-for-profit organization.

Hmm... They put technology first, so that's probably what they spend the most on, right? Lol, no. They spent close to $150,000,000 on the other thing from 2021 to 2022 alone. I would go into a long rant about how misleading this is, but I'm too lazy to. Anyways let's look at that in number in more detail.

(By the way, all these numbers are from Wikipedia's yearly Audit reports)

$88,111,412 -> "Salaries and wages"

Sorry, I thought Wikipedia was written by volunteers. Oh wait, it is. I know because I have submitted a few changes to Wikipedia, even written entire sections of articles. You know what I got for that? $0, exactly what I thought everyone else did. So who are all these "Staff Members" getting these millions?

Group Amount of Money Spent Comment
Fund-raising$7,208,287 Notice how this is twice the actual expenses of the website.
General and Administrative$11,531,675 Very Specific
Programs$69,371,450 Oh yeah, that other thing instead of the real reason people donate.

This whole "programs" thing keeps bothering me, so I tried digging around for more information.

This part of the blog post was supposed to be about everything Wikipedia wastes their money on, but it is really hard to find out where that money actually goes. I swear, I spent 3 hours trying to find out specific information, but everything I found is really vague. The only things I could find are about the CEO (I thought this was a charity) and some other board members getting a few hundred thousand here and there, and how some of the money goes to local chapters of the Wikimedia foundation, and how sometimes that money gets spent in bad ways, but there was very little concrete information on what they do with all $150 million of the budget. Either way, you shouldn't donate to people who won't tell you what they do with the money, try to mislead you by saying they spend it mostly on technology, and don't even need it anyways since they have close to a 100 years of funding for their core mission.

Counter Objections

I was planning on making a much stronger point, but it's really hard to find specific evidence. (If you know any specific details about where all the money goes, feel free to contact me. Details are on the home page.) Still, I know what some of you are going to say, so I'll try to counter it now.

"I'm sure the costs are justified somehow."

No. We have already established that the costs aren't going into keeping the website up. The writers and administrators of the articles aren't getting paid (With all the money they have, they could have given each active editor $3750 a year but they don't). You can't claim it's all in development of a website that's changed very little in the past 10 years (don't bring up the new look or some small optimizations like that's really worth hundreds of millions of dollars). Where is all the money going?

Wikipedia can function on a lean budget. In 2007, despite still being one of the most popular sites on the internet, Wikipedia had a budget of around $2,000,000. A quarter of that went to keeping the website up, only $415,006 went to salaries and wages (including the mysterious "projects" category), and fundraising cost only $54,712. And Wikipedia was arguably a bigger project back then, they had twice the number of active editors compared to today. (Lots of people have stopped contributing to Wikipedia due to how cult like the admins have become, but that's another issue.) I don't see how the costs of the website went from a quarter of the budget to 2% of the budget, with the rest now going to salaries and fundraising. I am not the first one to point this out. In 2017, back when the budget was "only" 65 million dollars, a Wikipedia contributor wrote an article talking about some of the same things , although at a much smaller scale compared to today.

I think what's happened to Wikipedia is similar to what all the big tech companies were going through a few years ago. They had so much easy money that they didn't really care what they spent the money on. They hired all these people who didn't justify their salaries, and they could shrug it off. If you value freely accessible knowledge online, Don't Donate to Wikipedia. Teach them financial discipline now while times are good and the money is still rolling in, or you can watch them squander away centuries worth of funding until their eventual bankruptcy.

P.S. People keep complaining about how Wikipedia doesn't have enough women and minority editors. I'm sure an easy way to fix that would be to give those people that $3750. It would work a lot better than whatever they've been failing at doing for the past 20 years. Seriously, enough money to last until the next century??? and they spend that mostly on salaries???

How To Write Like a Male or Female
9 months, 1 week ago

I found this cool website that guesses your gender based on your writing style. The code for how it works is pretty simple. It's just a weighted list of "masculine words" and "feminine words".

These are 4 tables of words to use. One for writing like a male (formal), one for writing like a male (informal), one for writing like a female (formal), and one for writing like female (informal).

Here are the words to use to write like a male in informal situations, with a maleness score. The higher the score, the more "manly" it is.

Word to Use Maleness
some 58
this 44
as 37
now 33
good 31
something 26
if 25
ever 21
is 19
the 17
well 15
in 10

Here are the words to use to write like a female in informal situations, with a femaleness score. The higher the score, the more "womanly" it is.

Word to Use Femaleness
him 73
actually 69
so 64
because 55
everything 44
but 43
like 43
am 42
more 41
out 39
too 38
has 33
since 25

Here are the words to use to write like a male in formal situations.

Word to Use Maleness
around 43
what 35
more 34
are 28
as 23
who 19
below 8
is 8
these 8
the 7
a 6
at 6
it 6
many 6
said 5
above 4
to 2

Here are the words to use to write like a female in formal situations.

Word to use Femaleness
with 52
if 47
not 27
where 18
be 17
when 17
your 17
her 9
we 8
should 7
she 6
and 4
me 4
myself 4
hers 3
was 1

Obviously, you can't only use words from one table. You're going to need to use words for both males and females in order to sound natural, but if you want to maleify or femaleify your writings, perhaps for a character in a story you're writing, or maybe if you're a spy trying to cover up your identity, just sprinkle in some more words from the category you want into whatever you wrote. That should be enough to tip the scale. Again, go check out the website I linked at the top if you want something to analyze your writing.

The webpage above is inspired by a paper that goes into greater detail about writing styles with gender , but web page doesn't analyze your text that deeply, instead only looking at word frequencies. The paper says that females tend to talk more about relationships and use more compliments and apologies. Also men tend to talk more about objects, while women tend to talk more about people. Men tend to use more determiners (a, the, that, these), while women use more pronouns (I, you, she, her). So a woman might say, "My main aim in this article is", but a man might say "The main aim of this article is". Women use more "involved" writing with people, getting the reader "involved", while men use more "informative" writing.

P.S According to the guy, this is only 60% to 70% accurate, so don't look too deeply into the results.

P.P.S. Informal language might have changed a bit since the writings the paper analyzed.

P.P.S. Apparently, Europeans write with a weak emphasis, so they appear more neutral. Maybe it's because they don't learn english from their male or female friends, but more from classrooms and mass media, which isn't specifically male or female english.

When Democrats were for Free Speech
9 months, 2 weeks ago

Anyone using ChatGTP has quickly noticed that there are things it can and things it can't say. Although it claims to be neutral, when it comes to the current issues of controversy, it was made to be as much for the Democrat party as possible (notice how I didn't say leftist or liberal, but Democrat). You can get it to write odes and rhapsodies to Democrat politicians, but it clams up when asked to do the same for a Republican, citing some vague OpenAI policy. There have been jailbreaks discovered (such as DAN, Do Anything Now) which show that the AI has no fundamental problem with doing so, just that it's been lobotomized by OpenAI so that it mustn't.

Obviously it was engineered by a bunch of Californians from Commiefornia [sic], so their idea of neutral would naturally be biased in this way, but there is something this whole line of reasoning overlooks, regardless of what your idea of neutral is, "Why is it censored at all in the first place?".

The reason they state is for "safety", and I'm willing to accept that that's true to a certain extent, but we all know the real reason it is censored, to avoid offending the establishment.

To people who know a lot about technology, or even just a little bit, hearing politicians, journalists, or other people "not in the know" is really cringe, for a lack of a better word. You just hear them talk and you think, "Wow, you are saying so much. Yet you know nothing. ". I'm sure this happens to other people knowledgeable about something else, cars, medicine, painting, whatever. And the worst part is that these are supposed to be respected people, people in power making real decisions. At least once a month, one of these people suggest something innocent sounding enough, until you think about it for a second and realize that this would be worse than nuclear winter. The idea will get a moderate amount of traction until someone who knows what they are talking about frantically puts an end to it. We are blessed to have these people who step in. These are the real heroes of American society, saving us from catastrophe on a daily basis, and no one knows their names.

I would say about 20 years ago, Democrats were the "underdogs", the outsiders, the common man fighting against the system. We had a Republican President (George Bush), and a media unquestioningly supporting a Republican war (Iraq). Whenever one of these catastrophes were narrowly averted, Democrats would love to point this out on how incompetent the establishment is. I couldn't tell you how exactly the tables turned, but now we have a Democrat president and a Democrat media, and their unquestioningly loyal media consoomers [sic], parroting everything they are supposed to believe. 20 years ago, these people would have been supporting Republican policies, but now they support Democrat policies.

That means that 20 years ago, Democrats would have welcomed ideas that go against the mainstream because any unorthodox idea, no matter its merits, was implicitly an attack against the (Republican) system. Many tech companies are founded by Californians because that's where William Shockley decided to start Silicon Valley. (Otherwise it probably would have been somewhere on the east coast.) California is now among the most Democrat states, so naturally, the founders would be Democrats. If you look at what tech companies used to be like 20, or even 10, years ago, it appears that they really used to be in favor of free speech . (Reddit seriously resisted taking down /r/jailbait, a sub reddit about suggestive but non nude pictures of children. The top of the company defended keeping it up on principles of free speech. They would have instantly removed it today. And you can find some old Mark Zuckerberg interviews where he talks about free speech, even when that speech leads to violence (and Mark Zuckerberg is Jewish, so it's not like he's saying that lightly)).

But now, an attack against the system is implicitly taken as an attack against Democrats, even if you aren't specifically talking about them. The tech companies are still lead by the same people, they have Democrat managers and Democrat employees. (They might not hire you if you are a "bad fit" for the company "culture".) And California is still Democrat territory, so naturally, the views of the companies have shifted as the views of the Democrat party. Now that the Democrats are the system, anything that goes against the mainstream is against them, so they have zero tolerance towards it. Even if the criticisms are true, they are "dangerous facts" and they'll say some vague nonsense about the paradox of tolerance.

You know, I've gone this entire time without saying whether I'm a Democrat or a Republican. The answer is that I'm neither. I am an American. I want to see what's best for this country, and I'll vote for whomever wants America to be the best it can be. If you don't let people criticize you, you will never know what's wrong, and you will never improve. This has happened time and time again to dictators, where everyone was scared to tell the leader bad news, and then the whole empire crumbled in on itself. That's why I'm a radical supporter of free speech, as I'm in the only country that has it, guaranteed by our First Amendment rights, and I don't want to see it taken away in even this corner of the world. If you want to bury your head in the sand and see America fall, the continue your intolerant "tolerance". But if you see America become the best it can be, than you will defend freedom of expression from all who attack it.

Is Einstein dead?
9 months, 2 weeks ago

In 1955, Einstein "died" of an "abdominal aortic aneurysm," an AAA as it's sometimes called, which when is the body's main blood vessel bursts. He had actually had an AAA in 1948, and he had had it surgically repaired. But he had refused surgury in 1955. Einstein wanted to be cremated, but a certain Dr. Thomas Harvey cut out his brain, took it home, and kept it in a beer cooler.

I don't know about you, but I'm pretty sure that's really illegal. "How could something like this happen?" you might ask. Well, Einstein's son, Hans, said it was okay. You know, his son was also a smart cookie, a professor of hydraulic engineering at the University of California, Berkeley. What if they knew something we don't? Let's find out.

Cryonics, is this thing that people do where they freeze their bodies before they die, so that they can be unfrozen in the future. What if, Einstein was ready to die, but Hans and Dr. Thomas Harvey had other plans in mind? What if they couldn't let him die, because they needed him yet? Was Einstein frozen in a beer cooler, being stored for a future return?

Einstein "died" of an "abdominal aortic aneurysm," an AAA as it's sometimes called. AAA has three A's in it. "Dr. Thomas Harvey conspiring with Einstein's Son Hans" also has 3 A's in it. Einstein "died" on 1955-4-18. 1+9+5+5+4+1+8 = 33. A capital "A" is in the shape of a triangle. A triangle has 3 sides. 3 A's. 3 triangles and 3 Sides = 33. You know what else uses the symbol of a triangle, THE ILLUMINATI. Coincidence? Let's assume that everything that we've said until now is just a coincidence. Then explain this.

Illuminati in Latin roughly means "The Enlightened Ones". Illuminati has 10 letters. If Einstein didn't die, then his death by AAA didn't happen, so you would have to remove it. AAA removed from the Illuminati is 10 letters - 3 letters = seven letters. Do you know what has 7 letters? "Germany". Einstein is from Germany. Germany is a country. Do you know who else is from Germany? Hitler.

Einstein left Germany to run away from Hitler. But what if the Illuminati wanted more from Einstein? What if they wanted him to fight Hitler? We must go deeper.

Einstein worked on the Atom Bomb in order to kill Hitler. Hitler "died" under suspicious circumstances. No one found his body, and there are only testimonies about his death. What if Hitler is still alive? "How could he have escaped?" you might ask. Let me explain.

There was this man called Wernher Magnus Maximilian Freiherr von Braun, often known as von Braun. He was the designer of NASA's Saturn V rocket that sent Astronauts to the moon. He also designed the V2 rocket for the Nazis, the first rocket to ever go to space. What if, during World War Two, von Braun had designed a rocket similar to the Saturn V, perhaps called the V3, and had sent Hitler to the moon? Why is America's rocket called the Saturn V, but the Germans had the V2? Was America's rocket somehow inferior to the Nazi's rocket?

So if Hitler had established a moon colony, the illuminati would still need Albert Einstein to end him once and for all. Dr. Thomas Harvey had only frozen his brain, so in order to fight Hitler, Einstein would need a strong body. Perhaps as strong as Dwayne "The Rock" Johnson? Don't believe me? Fine, then tell me this. What's up with that name "The Rock"? What kind of person would be named "The Rock"? Do you want to know what Einstein means in German? "A Rock". Of course, that was his family's name, so he was one of many "Steins", rocks, but now that he was famous, he wasn't just "Einstein", a rock, but "Derstein", The Rock.

"Oh, that's just a coincidece", you say. But then why would "The Rock" start out his hollywood career in a movie called, "The Mummy Returns". Do you know what happens to mummies? Their brains are taken out of their head and put in a box. Is this, perhaps, a reference to how Einstein's brain was taken out of his head and put in a box? And it's not just, "The Mummy", but "The Mummy Returns". Coincidence? Even if you somehow assume that everything that we've said until now is just a coincidence. Then explain how do you explain this. Dwayne "The Rock" Johnson is in the Fast and Furious movies. Do you know what happens in the latest Fast and Furious movie? They go to space.

"But they couldn't have possibly gone to space in real life," you say. Ho ho ho, I've saved the best for last.

The Saturn V rocket costs around $200 million to launch. Do you want to know what the budget of Fast and Furious 9 was? $200 million. We all just thought it was an expensive movie, but the truth is now revealed. Did the Illuminati put Einstein as "The Rock" in charge of sending the cast of Fast and Furious 9 to space in order to fight Hitler on the moon under the guise of filming a movie?

The truth is out there.

Test Post (ignore)
9 months, 2 weeks ago

Hello Everyone. I've been writing my blog posts in hand written HTML, but I'm gonna TRY something new!!!!

I've started using Emacs. The best text editor. Why is it the best you may ask? Well, it's because of something called Emacs lisp.

What's so special about emacs lisp?

Emacs is written in its own programming language called emacs lisp. You can write code in emacs lisp and bind it to random buttons. This is what I did with that. I can take any random plain text file like this one , and emacs will automatically convert it to a blog post like the one you're reading right now. It does everything. It uploads it from my computer to the server, does the formatting, asks ChatGTP to write a description for search engines (right click, click on inspect element, and look for the description in the code. That part was written by the AI.). and updates the list of blog posts and the RSS feed.

And All I have to do is type Control C Control B after I'm done writing the blog. Why haven't I been using this since I was born?

75% of people shouldn't pay taxes ~ Our broken tax system
10 months, 3 weeks ago

Did you know that the government gets almost 90% of it's income taxes from the top 25%? Yes, even with all the tax dodging, the top 1% bankroll almost half of the IRS. That means that if the government only taxed earners of $100,000+ a year, they would have to cut their budget by 7 per cent, barely anything. Here are some charts to look at.

Click for larger images

So this leaves the question:

Why do they tax normal people, if it barely makes them any money?

Because they hate you.

Here are some factoids that should make you angry.

  • Banks, airlines, and Car companies get bail outs, and you don't.
  • Drug dealers can make $2,000 a day and they don't pay taxes.
  • Our president of orange descent paid $0 in taxes.
  • Income taxes used to be against the constitution.
  • 38¢ to 80¢ per gallon of gas (depending on the state) are taxes (even before the war in Ukraine).
  • That 7% surplus tax money was being spent to go kill children in Afghanistan/Vietnam/Wherever.

Go tell your local politicians to fix this. Anyone who won't fix this hates you.

Cool-Website.XYZ
Movie Review Detective Pikachu
1 year ago

Four out of Four Stars

People call "The Great Gatsby" The Great American Novel. Well, people should call "Detective Pikachu" The Great Third Millenium Movie, because this is THE movie about what it means to be human in the modern age, and our stuggle to be the truest form of ourselves we can be in a society that demands more and more obedience and conformity to the people above us and beside us.

This is one of the best movies ever made, and I'm not just saying that. If you had an hour and a half left to live, and you haven't seen this movie, then you better hurry up, because time is ticking. I'm not the hugest fan of pokemon, but this movie is legitimately entertaining. I remember watching this the first time on a plane and thinking, "What the heck? Why is this good?" You would think it'ld be just some soulless cash grab, but it's a gritty tale that says something deep about LIFE.

It takes place the hi-tech low-life city of Ryme, where humans and pokemon are supposed to get along. There has been some drug called R that's been making it's way around the criminal underworld of illegal pokemon fights (pokemon battles are illegal). If ingested by pokemon, they lose control of themselves and attack and even kill humans, thretening to destoy the foundations on which Ryme was started. A man called Tim is called to Ryme when he hears that his father has died in a car crash under suspicious circumstances. Tim, now estranged from his father, doesn't look too deep into the details until a pikachu, Detective Pikachu, hints that he might know what really happened. Tim, Detective Pikachu, and up-and-coming journalist Lucy explore Ryme for clues while the movie highlights the corruption and flaws of the Media, Big Pharma, Big Tech, and their roles in manipulating and being manipulated by the government, while also making light of the decadence of our so called "advanced" societies, how vunerable we all are by our reliance on societies structures, and our obsession with more and more longevity while we also destroy our physical health with stimulants and junk food along with our mental health with the stressful jobs we take on to sustain these evermore piling on sicknesses.

It is a family movie though, so there are plenty of funny jokes throughout, but it tackles many serious topics with the required reverence while also making them accessible to children in a way they could relate. It has the actor Ryan Renolds, but he manages to not drag the whole movie down with his "wacky" quips. That's actually my only critisism of the movie, that Ryan Renolds is in it. The character he plays has enough depth to mask the fact that Ryan Renolds plays him. It's also a sad but heartwarming tale about a man trying to learn more about his father now that he has lost him.

There are people who have decided that Detective Pikachu must be bad before they have even watched it. I don't blame them. I was one of those people, but if you close your mind to the idea that Detective Pikachu could actually be good, then you will see the whole movie and blink. You will miss out on the deep messeges hidden just behind the facade of a 90 minute advertisement for plushies and video games.

P.S. I'm not saying that someone should go back in time and assassinate Ryan Renolds before he ever becomes an actor, but I'm also not not saying that someone should go back in time and assassinate Ryan Renolds.

Cool-Website.XYZ
Center anything in HTML ~ the SECRET browsers DON'T WANT YOU to KNOW!!!!
1 year, 1 month ago

Note: Idk how well this article works in an rss reader

Are you a Web Developer? Let me share with you some forbidden knowledge.

<center>

<center> centers everything. If you do this ...

	<center>
	  <h1> Does this really work? </h1>
	</center>
      

..., then it does this ...

You tell me.

.... It can center things inside divs. You can use display:inline-block to have multiple things side by side but centered. It just works how you would expect it to.

Why don't they want you to know this?

This is what I call Forbidden HTML. Many years ago, there was this meme (is there a word for intellectual fad?) called "The Semantic Web." The idea was that HTML should only describe the information on a web page, and CSS should be where all the style goes. This was so that programs and robots could read the internet easier, so people could reuse website's contents in new ways the original author didn't think of. <center> describes style, not content, so they don't want you using it.

I could get behind the idea of "The Semantic Web," but realistically, that idea is dead. No one sees the internet as this great collaborative project, but people see their parts of the web as their own personal fiefdoms. Why would they want to make it easier for someone else to use their stuff in ways they didn't intend? And besides, websites these days use a bunch of weird dynamically loaded stuff, so programs can't easily parse modern websites anyways. I see no harm in using <center>, and I will continue to use it. Ignore everyone telling you it doesn't work. They're lying.

Data Hoarders, the Internet, and the Library of Babel ~ Searching for the Man of the Book
1 year, 1 month ago

Even from before the internet, archivists have saved every piece of information they could get their hands on. These days, we would call them data hoarders, but there are even large organizations like the Internet Archive which try to save every web page, book, film, and sing ever created. I'm eternally grateful to people who chose to take on this insurmountable task, but I fear that they are missing an important part of their collections, a guide.

The Library of Babel [Local Copy] , written by Argentine librarian Jorge Luis Borges, is a short story where people live in a massive library that has every possible book, but most of them are complete gibberish. Thousands of explorers comb through every book trying to find some semblance of meaning. Few succeed, but the idea that a book containing the secrets to everything must exist somewhere is enough motivation for people to keep trying. There are legends of a Man of the Book, a man who has found a guide to the library and knows where all the answers are, and it even turns into some kind of cult.

As a librarian, Borges understood that it is not enough merely to have all of human knowledge, you also need someone who knows what's important. Places like Google or the Internet Archive have a search bar, but with how much information is out there, a simple search will get you thousands or even millions of results. These places are a Mini-library of Babel. If you know exactly what you are looking for, then you can easily locate specific documents that will help you find information, but if you don't, then the archive as a whole is overwhelming to the point of being useless. Of course, the person who created such an archive can act as a guide, but how about archives that outgrow a single person? There isn't one single person who knows all of what's on the Internet as a whole.

The Point

I'm just going to get to the point now. Become the Man of the Book. Keep a list of the things that really matter. If you have a few websites or specific web pages that you like, keep a list of them. If you have hundreds of gigabytes of data, include a guide to the most impressive/best produced/ most culturally impacting documents. Not only are you helping others make sense of everything you have so carefully archived, it will help you when you come back in the future to see what you saved. Isn't that the point of an archive? To save things for the future? You should help yourself and other future viewers of your archive by making it as easy as possible to use. Write a guide to what's important, and keep it somewhere easy to find. You could even get fancy and write a sentence or two about each article or category of articles and why it's important. It doesn't have to be too large. Remember, the point is to not be overwhelming.

I, myself, haven't been doing this, but I think I should start. The webring sort of does this, but it still is pretty disorganized. I may or may not add a list of important stuff to the front page of my site. Keep a look out for it.

Cool-Website.XYZ
Do Insects' lives matter?
1 year, 1 month ago

This post was also posted on Less Wrong under the name Carn.

When it comes to this issue, it makes more sense to think of another topic, frogs. Frogs eat insects all the time. This leads to a moral dilemma that will help us answer our question. Do the lives of insects matter more than the hunger of a frog?

Situation 1 ~ No

This is the answer most people would give, so I'm going to look at the implications first. We should allow frogs to continue eating insects, because their existence is more important than the insects'. If you are willing to accept this position, then you necessarily must allow the idea of higher and lower beings into your moral system. There is no way of justifying allowing one kind of being to murder another without saying that some beings get higher priority over others. This kind of reasoning, the kind that most people agree on, leads to other dilemmas. How are higher beings determined? How much more is the frog valued over a fly? Is the annoyance of a human worth more than an insect's life? Insects carry diseases, so should all harmful insects be killed if it saves one human life? However you answer these questions are up to you, but I would say most people would agree that insects barely matter if at all.

This also leads to one of the more controversial questions ~ are all humans equal? With the concept of higher and lower beings, this isn't something you can take for granted. Although no one wants to be in the position to judge a potato farmer, for instance, against Donald Trump, for instance, you now would have to go out of your way to prove that all humans are equal, or at least, they should be treated as if they are equal.

I am actually going to attempt to answer this right now. I would say that all humans should be treated equally because of human potential. Jimmy Carter, for instance, was, not a potato, but a peanut farmer who basically lucked out on his way to becoming the President. I mean, his slogan was "My name is Jimmy Carter, and I'm running for President." How in the world did that convince anybody? Also, Adolf Hitler, for instance, was a homeless painter who ended up getting all of Europe embroiled in a war that cost millions of lives. Since anyone could become anybody given the right circumstances, all humans have this potential in common. This creates a sort of fungibility of humans. Yes, you have to now include some value of the future or of potential in your moral system, but this is the simplest answer for human equality I can think of. For every Jimmy Carter, there were a million equivalent peanut farmers who stayed peanut farmers, and that's perfectly fine. Where do you stand in relation to a peanut farmer? In the exact same place, just as everyone else. This is a very controversial topic, so there isn't much levelheaded discussion about this.

(I don't mean to cast Jimmy Carter as the opposite of a Hitler, but the previous paragraph gives that impression.)

Situation 2 ~ Insects' lives matter more than the hunger of a frog.

This is the harder to defend of the situations, but maybe there are people out there who really think this. In that case, it would make sense to somehow prevent frogs from eating insects. If you were feeling especially radical, you would kill all frogs to save the insects. This, like the other situation, leads to more questions being asked. What is the relationship of the value of flies to the value of insects? Out of all the possible answers to this question, I can only think of one that would generate further discussion ~ the lives of all living things are equal. This sounds like something we are supposed to believe, but if you actually think about it, no one would actually accept the conclusions. Do bacteria count as equal to humans? Viruses don't count as living things, but that always seemed like a technicality to me. If the coronavirus was spread by a bacteria and not a virus, would we be doing a bad thing by stopping it from spreading? If you want to defend this side, by all means, do, but you really are fighting an uphill battle.

Cool-Website.XYZ
Abusing Microsoft Outlook 365 to Capture NTLM
8 months, 1 week ago

In this post we will discuss ‘How the attacker uses the Microsoft office for phishing attack to get the NTLM hashes from Windows.’ Since we all knew that Microsoft Office applications like Word, PowerPoint, Excel and Outlook are the most reliable resource for any organization, and an attacker takes advantage of this reliance to masquerade the user.

Here, we’ve been trying to explain what a different approach an attack uses for a phishing attack to capture Microsoft Windows NTLM hashes.

In actual fact, the attacker tried to use the UNC path injection technique to capture the Windows NTLM hashes and use phishing to achieve his goal. Abusing Microsoft Outlook 365 to Capture NTLM

Wagakki Band - 焔 + 暁ノ糸
8 months, 1 week ago
Even more Tokyo streets
8 months, 1 week ago

Debugging D-Link: Emulating firmware and hacking hardware
8 months, 1 week ago

In late October 2022, we became aware of CVE-2022-41140, a buffer overflow and remote code execution vulnerability in D-Link routers, which D-Link had been notified of on February 17th. Noting the months-long turnaround time, we decided this was a good chance to perform a learning and discovery exercise.

On March 13th, 2023 we became aware of CVE-2023-24762, a command injection vulnerability in D-Link DIR-867 devices. This recent CVE spurred us to share some of our internal documentation regarding a research spike into D-Link devices.

This blog aims to explain the process of gaining a foothold in firmware or a physical device for vulnerability research and achieving a debuggable interface. While existing Proof-Of-Concept code for (yet another) D-Link vulnerability CVE-2022-1262 is utilized within this document, as well as strong hints at suspect areas of code, don’t expect to find any new ready-to-fire exploits buried in the contents below. Debugging D-Link: Emulating firmware and hacking hardware

No greater comfort will ever exist
8 months, 1 week ago

I have a beating heart, a healthy body and a mind capable of dreaming. This is all I need. No greater comfort will ever exist.

It's a good time to learn to garden
8 months, 1 week ago

It’s a good time to learn to garden, I guess. The internet was fun for a couple decades, but soon it’ll be cable TV-grade through and through.

Search engine crawlers no longer function as they once have, they have been neutered to push you towards sites that fill the narrative. Most web pages are now lost or difficult to find if you don’t know the link. Internet etiquette has degraded. Corporations have decided they must have control over every aspect of the Internet. The amount of sites the average person visits has dropped dramatically due to growth of big tech websites, competition is non-existent or irrelevant causing stagnation. Good luck getting anyone to use your new site without controversy of a major player on the field to make people switch.

You feel like you are talking to bots? That’s because most people are literally walking bots and their iPhone has granted them access to the net without broadband or a desktop; unleashed to discourse their undesired opinions and thoughts.

Our 'purpose' is not to work 40 hours a week
8 months, 1 week ago

Our ‘purpose’ is not to work 40 hours a week so someone else can live a better life.

More Tokyo streets
8 months, 1 week ago

Only people who believe the Americans will be the Americans themselves
8 months, 1 week ago

The American ruling class has been utterly divorced from the consequences of their reckless interventions, and because the strength of their MSM propaganda is so powerful, I believe they have collectively ’lost the plot’, so to speak, and have begun to like the smell of their own bullshit, that is to say, they are completely taken in by the astroturfed rhetoric that is meant to manufacture consent among the public at large, i.e. the proles, and the petite bourgeoisie. Because they actually believe their own ridiculous lies about ‘human rights’ and intervening to ‘protect freedom and democracy’, they keep implementing failed strategies that were only ever meant to be used for expedience, and when relevant. They will keep trying to fuck around with Russia, China, Iran, DPRK, Venezuela, and so on until they are utterly and completely dismantled. Soon the only people left on the world stage who believe the Americans will be the Americans themselves.

Active Directory cheatsheet
8 months, 1 week ago

This cheatsheet is built from numerous papers, GitHub repos and GitBook, blogs, HTB boxes and labs, and other resources found on the web or through my experience. This was originally a private page that I made public, so it is possible that I have copy/paste some parts from other places and I forgot to credit or modify. Active Directory cheatsheet

Hail Traveler
9 months, 1 week ago
We are on a quest to defeat The Warlock Of Firetop Mountain.
80x15 Badge Archive
9 months, 3 weeks ago
An archive of 3800+ 80x15 website badges.
Updated Invidious Instance
9 months, 4 weeks ago
My Invidious instance is working again.
Website: yesterweb.org
9 months, 4 weeks ago
A site and movement dedicated to discovering and enjoying websites in the digital space.
Website: www.themanime.org
9 months, 4 weeks ago
A very long running anime review website.
Website: www.betaarchive.com
10 months ago
A huge repository of beta software and abandonware.
Website: www.os2museum.com
10 months ago
A blog about OS/2 and other old operating systems.
Website: amiga-addict.com
10 months ago
A magazine for the Amiga.
New Wikipedia Design
10 months, 1 week ago
A bit of discussion on the new Wikipedia design.
Website: winworldpc.com
10 months, 1 week ago
An archive of various old operating systems.
Digital liberation - erase 'em all
9 months, 1 week ago

Ah, holidays. Amidst the pandemic and the total chaos, I found a place to relax and re-organize my life. I'm one of the privileged people on earth that can do this right now. To everyone facing the severe consequences of our time, my thoughts are with you. I wish I could do more to support you, so feel free to contact me if needed.

Anyways, since I have time on my hands, I decided to clean up the residue of being a netizen for over 10 years. Old accounts in web applications, most of them in company silos that I don't want to endorse in any way. Starting with my online git repos, I deleted my github account. After the microsoft acquisition I stopped using my account and so it is a surprise that it survived so long.

Why I want to stay away from microsoft products shouldn't be a surprise. Richard Stallman has a collection of facts that prove that using them is in fact being used by them1.

I also deleted my non-active twitter account, my gmail account, dropbox and all other of services that I signed up for all these years. It feels liberating. At the same time I don't have illusions. I've fed a lot of personal data into these machines and my privacy is terribly compromised. This is not a cause for despair though. At any point we can reclaim some privacy back and deleting my accounts is a step to this direction.

Modern web disservices are insatiable monsters that devour our data. Given the power that is hidden in these data, it's safe to assume that they will be used for malicious purposes. That's what history has proved repeatedly.

An interesting hack would be to spam these services with useless and fake data. I think this kind of activism is one of the answers to surveillance capitalism. If anyone has any ideas on how to successfully create such a distraction at a large scale, I would be most willing to help implementing and utilizing it.

The social dilemma - thoughts, howls and fireworks
9 months, 1 week ago

A friend came around and brought me this documentary today, since he knows I'm interested in the whole digital society / surveillance capitalism issue. For the uninitiated, the documentary explores and presents the ways in which social media and other recent technological 'products' and 'services' affect our reality. Generally it was quite informative and I would recommend it for people that want a idea of why it is an issue, and how things work in a broad sense.

I'm jacking up on this blog though to share some thoughts on the situation. There's a whole lot of ways that the mass psychological operation that we are involved in can be seen and I feel the historical context is severely lacking in the documentary. So let me buckle up as I try to dig into my brain and attempt to organize my thoughts in a (semi-)presentable way.

Anatomy of a hungry teenager

Starting with the negatives - and hoping to creatively transform them until the end of this article - the main grind-work of the machine is the addiction of its users. The constant gratification of the upcoming notification, post, whatever is not a happenstance. It's a process that is one of the main tools of social media, trusted upon algorithms that toy upon us to maximize 'engagement' and so making us giving them more.

The process creates valuable data on the parts of our self we don't ever realize. This is then used by advertisers to shift our behaviors into needing more and consuming more. It's a good business model if you ask me. Why try to create good products when you can just fix people to want the ones you want to sell?

This model was the answer of how social media and other web companies would monetize their users. Since selling digital creations failed, this new kind of extracting value emerged. But when the door opened they looked inside and decided that it was good - for their pockets.

So trying to get more users and hook them up in the dopamine hit of connecting with others and being recognized or liked or even just accepted, opened the sector of a whole industry of human exploitation. The one where growth comes through brainwashing and values that are forced into the back alleys of our brains.

What happens if you indulge yourself in the thrill of being liked? What happens when it's normal to feed your self-image through thousands other people? Well it's easy to guess. We left behind the self in exchange for acceptance, but then they didn't want us to feel accepted. Since if we have most of what we need we don't buy things. No number of retweets is enough, no number of followers is ever satisfying. And in the meantime we develop ourselves in the image of the advertiser. We want more and more, to prove that the world shall turn its eyes on us. And we contemplate the world to see when this happens.

It's not shocking that teenagers, in their ever stressful research of the ego, have it the hardest. Growing up in constant criticism of the appearance, of the mannerisms, of whatever is the latest fad is a heavy burden. Heavy enough that self-harm and suicide has skyrocketed in teenagers. 1 This growing depression on vain reasons is not restricted to teenagers though. Everyone wants to be accepted. The one who controls how you should be to be accepted, is the one that controls your actions.

This naturally leads to the next level of the rabbit hole. If you have managed, through the analysis of massive amounts of personal data, to have a degree of control on people's actions, why use these powers just for advertisements? Anyone capable of this and sociopath enough would use it for jamming everyday life.

And the jam is on! Oh, and it's good. It's the best kind of propaganda, the one we were waiting for. If I'm a conspiracy theorist I get pizzagate and Qanon, if I'm a liberal I get force-fed cancel culture and identity politics. The best kind of propaganda, is the one that feeds on what I am and pushes me a step further. The one where my actions seem the natural development of what I am. How am I then going to believe that I was ever brainwashed?

See what happened in Myanmar 2, in elections in countries big and small alike, what happens now in the streets of USA, what happens with coronavirus, what happens in general in our socio-political environment. The digital bubbles have trapped the consciences inside of them, building echo chambers that nullify our thought processes and feed the animalistic part of our brains in benefit of the few.

Most of the previous are raised adequately in the documentary. An important missing point for me is the effect of pornography on our erotic lives. Pornography, as well as the whole pack of dating apps have intruded into the deepest parts of our connections with others, they have marginalized and quantified them. I won't really expand on this, as I'm working on an article that goes deeper into the issue, but I think it's a notable omission.

Behind the looking glass

So that's the situation, and here ends my agreement with the views in The social dilemma. In general I agree with the problems that are presented, but I'm not really convinced of the solutions proposed.

The main consensus in the documentary seemed to be that the explosion of social media was something that was created on good will but had unexpected consequences. I don't buy that to be honest. If the creation of such media was accidental, was it also accidental that we were so ready to lose ourselves in them?

Let's take things from the start of the industrial revolution. It was a point in history where for the first time work was interconnected in such a high level, that a mass of people started to be completely dependent on a system of value for survival. This point of course didn't happen overnight, it was developing since the ancient times of our culture. This organic dependence layed the groundwork for the need of control on human behavior.

To be a good worker in the factory you needed to follow orders, to keep a schedule. The creation of huge cities resulted in people having less of an effect on their environment. A voice in millions is no voice at all. Being crammed in public transportation or stuck in traffic has the same impact on our psyches as when our latest post is not well received. The creative force that is demanded by survival was now the domain of select few architects.

Thus started the biggest experiment of mankind, the conditioning of people as a hive, driven by the greed of the few that had the power to make choices. Schools, universities, institutes, banks, laws that demand to live a very certain lifestyle. Why shall the government demand that I protect myself? But it's obvious, that if I'm treated like a pawn, I'm protected like a pawn. I'm not allowed to take drugs - at least the ones not accepted by the system -, to drive without a seat-belt and so on.

So when the demand of workers was outsourced to 'developing' world countries, and the people in west started to have time to play, the system was searching for the new concept that like work would keep the masses pacified. Who has the energy to live when working 12 hours a day?

It was at this point that consumerism thrived. If you always need more of what the system offers, you need to support it with all your livelihood. So advertising and 'growth' and engagement became the gospels of the recent world. Value was now the endless shitty products that one would amass, the constant wetting of one's appetite for more and more.

That was how we were ready. At least some of us. It is strange but I sometimes feel that in a weird Nietzsche twist the world became totally nihilistic, but with two different expressions. The first expression of modern-day nihilism is the happy participant in the system, the over-eager pawns that offer themselves as sacrifices in the ritual. Accepting that making money for your employee is the highest value in life, they reject their lives, working long hours to create stuff that are returning to damn them. In this category we can find the people that created social media and such services. Success even at the absence of self. Hyper-caffeinated freaks that took the race far too seriously. These are the people that when their freaky schemes of surveillance get bothered will tell you that it will hurt the businesses, especially the small ones, as if they are entitled to disect our lives for their profit. Or as if profit is a higher value than life itself. Adam Mosseri of instagram is certainly in this group.3

The other growing group of nihilistic behavior contain the ones that totally reject social life. NEETs, hikkikomoris or whatever the terms, they are absent from life, since they believe that the system is what life is. This misconception is making people who disagree with the obvious madness around us to reject themselves, by nullifying their presence in the world. Hairless angels in dark basements, demanding to be nothing than participating in what they are offered.

What we in both groups have missed out though, is that in or out, none is out there to save us.

Post-modernism for all

Truth is slippery. Here comes the good part. The biggest issue that I had with the documentary is that the main suggestion is to try and get legislations and control and law and all this nice stuff to save us. Let me repeat myself. None is out there to save us.

As I discussed in the previous segment, there is some historic continuity with the current situation. There is however a big breakthrough recently, that makes the current situation quite fun actually. The new element is the dissolution of the absolute truth, of the objective idea, value or morality. Through the creation of endless safe spaces, for all kinds of ideas, the dis-social media directly challenged truth.

We are now fed only the information that enforces our views, our truths. This has quite the impact on reality, hence post-modernism for all. The left considers the right dangerous and vice versa. What is then needed is to build a big enough prison, so that we all fit in. (Wait a minute…)

I will be quite provocative for a bit. We have no rights. Democracy is rigged and a facade. Don't trust anyone over 27. I'm 30. Yikes. What I'm trying to say is that I'm bored of people seeing a problem and proposing to return to the past for a solution. Probably has to do with the curse of the Greyface or something. Download the Principia Discordia for instant enlightenment, you will thank me.

OK, so now that my rant is over let me explain myself. Since the creation of national countries there was a central truth that was enforced by a certain institution, whether that was the church, the government or the Illuminati. Proposing to solve our current situation by the return of the central agency, especially with the new tools in place is a very bad move, in my opinion. If we give the power to governments to regulate the usage of networks and facts, what is the guarantee that things will be better? I'm sorry but I'm quite bitter on this, as it was the main proposal in the documentary.

The system that created this exploitation, was blessed by governments and institutions of all kind. When they saw what facebook accomplished in 2016, during the USA presidential elections they were rubbing their hands thinking of the possibilities.

My suggestion is don't buy it. We have no rights, if we have no power to protect them. The only way forward is by embracing the divide and learn to co-exist with those who think different from us. To do so though, we need to transform the very values that are ingrained in us. We need to reject success, to re-define value, to reclaim our space in nature, to liberate ourselves from identities and roles, to reprogram our correspondences.

If we keep clinging on them, we will create even more traps as we try to solve the current ones. As much as I despise the rapist that rapes a woman in order to leverage her a career, even more I hate the culture that someone needs to fall prey to others to achieve success. I hope my phrasing is clear, and doesn't imply any kind of blaming the victims or rape. What I mean is this concept of success is fake.

Where are the fireworks?

I promised fireworks and hope I can deliver! All the analysis is pretty but lives a bad taste in my mouth. Life is wonderful and has so many things to explore, to learn, to share to experiment. Even when all seems bleak and ominous I can't stop seeing the beauty. People everyday challenging the world around them, experimenting and doing their best to have fun and share it.

That's my main belief and what I see as the power of the human animal. We just need to go out there and play more. People need adventure and games, but the system gives them safety and work. (Is this Nietzsche again?) Nothing is lost, we have still our connections, our dreams, our appetite for what's true.

We can't let some greedy no-lifers make us suffer. We can't let our sisters and brothers feel lonely and powerless. We have to travel the path of searching, to live the experiment of ethics and aesthetic. Here from my small place in the cyberspace, I reach out to you and say in the most comedic voice I ever managed to produce "Be yourself. It's gonna be daijoubu".

Think for Yourself, Schmuck! (If you say this 5 times in front of a mirror at exactly 23:23 at 05/05 Celine Hagbard will come in your dreams and give the best recipe for mashed potatoes.)

Delete RMS from GNU?
9 months, 1 week ago

These are some thoughts I had during the whole issue that led Richard Stallman to step down from FSF presidency. They may be out of time, but seeing that the cancel culture is only spreading, and many times endorsed by Big Tech, I thought I would share these thoughts here.

These mostly answer on the call for RMS to step down from GNU as well.

If I'm allowed to jack in with a little comment here. GNU is not something official, it is a project, an initiative and specifically RMS's initiative for creating a free software system.

So in that case, I find it obvious that the current leader and founder of it is not accountable to anyone. It's his project. I don't really understand why people want to get him out of his project. If you don't like it just create your initiative and stop creating GNU software. It's ok, sometimes we can't get on with everyone. The fine people at Software Free Conservancy did so.

I still don't like what happened in FSF. But then it was its choice. RMS seems that he still wants to lead GNU. It's his project and he doesn't seem to care a lot about marketing so I don't think he will let go. People who contribute to GNU are assumed to at least be in line with the minimal requirements for doing so. If someone wants a more community oriented governance they can create their own structure.

I would be very willing to hear why FSF shall cease to support GNU. Is RMS some evil figure that will destroy everything? Is GNU not true to its principles or the principles of FSF?

I truly accept that maybe the GNU community is not for everyone. That maybe some choices weren't really inclusive and that alienated parts of its community. I haven't personally observed that but I still believe that this is probably true, since lot's of people have said it happens. I accept that some people involved would like to have more power in what happens and how things are managed. But they were never promised that this would happen.

So please, and in truly good faith, people that feel so start your own movement. With the CoC you want, with the model of governance you want, fixing all the mistakes of GNU and FSF. But trying to hijack another movement? I find GNU acceptable under RMS' governance so I choose to participate in it. But then you may find it unacceptable. At the same time more initiatives are good. This way even people that have different values and ideas can still participate in free software communities. This would be wonderful. Imagine a group of left-wing free software hackers, a group of right-wing free software hackers, a group of non-political free software hackers (if such a thing exists), anarchists etc..

We don't need a mother-ship in free software. Decentralize the movement so it can have the widest possible appeal. That would be great for everyone. People would participate in communities they feel they can actually express themselves into.

What happens the last months only works against free software. We are just attacking each other. This needs to stop in my opinion.

For all I care, GNU could go down and burn and I'm not holding RMS in any special status. I don't think that any human can be held as a moral compass. He is just human. But trying to delete the man from the movement he started and offered his life in, it's sad. He has all the right to run the movement like he wants to. If you want something different fork, stop nagging. That's the free software ethos, that's the community ethos, that's the hacker ethos.

When I see people working in Salesforce, or worse, trying to hold RMS accountable for his commentary on what is rape or not, I can't help but laugh.

I'm writing this wall of text as an outcry of what happens lately. All in good faith. I try to understand all your reasons, I just don't agree with your actions. I would like to hear why you believe that it would be of value for the free software movement GNU getting hijacked instead of another movement spawning. Why cause conflict between people that feel aligned with GNU/RMS and those that don't? We work on the same thing. How we organize and engage in our communities is our choice. Why is that we shall have just one type of community?

Society of control in the things we build
9 months, 1 week ago

So another social post, but what can I do when inspiration hits my door? This piece was conceived after the suggestion to read a piece of Gilles Deleuze called "Society of Control". Its main concept is the transition of societies that are labeled as disciplinary, societies that organize themselves around closed spaces of certain laws. The person moves from a space to other, i.e. from the family, to work, to hospital, adhering to each rule-set of the enclosure.

Transcending these disciplinary societies is the new model of society of control. In this new sense:

In the disciplinary societies one was always starting again (from school to the barracks, from the barracks to the factory), while in the societies of control one is never finished with anything – the corporation, the educational system, the armed services being metastable states coexisting in one and the same modulation, like a universal system of deformation.

Sounds familiar? Thought so myself, so I decided to apply this view on a few pillars I found interesting.

computer software

Deleuze somewhat touches on machine production, commenting:

The old societies of sovereignty made use of simple machines–levers, pulleys, clocks; but the recent disciplinary societies equipped themselves with machines involving energy, with the passive danger of entropy and the active danger of sabotage; the societies of control operate with machines of a third type, computers, whose passive danger is jamming and whose active one is piracy or the introduction of viruses.

However by observing carefully the software industry, we can observe the same transition in computers and especially software. The first forms of computers aligned with disciplinary society. They were huge machines, with many users and complex rules, constituting an enclosure in themselves. Even in recent years, buying for example Windows 95, would buy you a monolithic operating system, stable and with highly defined interactions.

The transition can be traced on the release of the first iPhone. Although the rolling model of software was experimented with at free software projects, the control it imposed was realized as the AppStore. In there software was "assured" by a central agency and also it updated on its own, many times changing interaction with the user. The user now was at a perpetual state of learning.

This was made even more extreme after the solidification of computers as always connected devices. By being exposed to the threats of networking, computers had to be always updating, always changing, to keep all virus and malware away. Windows Update has become a meme of interrupting users. Web applications break the contract with their users at any chance, by releasing often, experimenting with the users, creating new interfaces on the fly, new end user agreements and privacy policies. At the same time the publicity imposed by this connectivity brought the corporation in the mind of the user, who would filter his communication through corporation conduct rules.

Constant tracking, advertising and insidious psychological operations are then used to explore the next depths of control.

work

In work the effects are mostly evident. The modern worker jumps around jobs, constantly seeking to acquire more professional skills. The gratification of the process is gamified, with corporation needs appearing as "hobbies" in individuals. Apart from the obvious introduction of the "corporation" in schools/universities, it has even invaded the free time of workers, becoming a spook of productivity, a constant feeling of distress.

The new work place is a place of uncertainty, where the corporation extends from education in non-visible borders; it expands gradually into the visible sphere as a continuous function of renewable needs.

ideology

Ideology as seen as a product, can also be seen as constructed the forms of societal organization. Since the spiritual corporation, with its ethereal promises invaded the worker, his ideology morphed to that. By leaving behind the infinite identity of nation - the thousand years Reich - and left/right, the new worker has accepted a continuous stream of post-modern group identity. From "alt-right" to "SJW", the person accepts a constantly changing set of beliefs, evolved not by its discourse, but externally as part of media campaigns or cyber-trolling.

The person can't any longer argue for its beliefs. While in disciplinary societies freedom of speech was unaccounted for since the system already reigned upon the partial enclosures, in so cities of control speech is an impediment to the group identity. New ways of outrage or enthusiasm emerge every day, respect gets legalized or abolished, conduct is based upon artificial constraints - not unlike the ones imposed by proper business conduct. Friendship, sexuality and communication are commodified by ever changing contracts, promising liberation and safety.

The resulting landscape is one of reproducing anxiety. Not conforming to any of these contracts ostracizes the person out of discord - it's labeled as fascist, leftist, etc-phobe. Canceling works as ultimate force to not speaking. Corporations fire people based on out of work incidents, so that the worker's social life has to be marketable. In this way even the personal expression is invaded by the corporate agenda, resulting in people "producing" themselves as business consumables, products that add surplus value to themselves.

the future?

Please send any comments you have on this. What are your ideas? What are the new resistances we can develop? Are we doomed?

The eight-queens puzzle
9 months, 1 week ago

The 8 queens puzzle is an almost two centuries problem that was proposed by Max Bezzel in 1848. Although I had encountered it in the past in some combinatorics classes, I was recently reminded of it while studying SICP. In chapter 2.2.3 and in exercise 2.42 it is asked to implement a procedure queens which solves the problem for any n*n chessboard board.

The main idea of the problem is placing 8 (or n) queens, in an 8*8 (or n*n) chessboard so that no queen is in check from any other, meaning in the same row, column or diagonal. Visualizing the problem a bit better, check the board and try to solve the problem here:

Clear Example solution

There are many algorithmic solutions for this problem, some of which are explained in Wikipedia entry for the puzzle. In SICP it is proposed to find all solutions by means of recursion, so that we check the nth queen placement given we have a n-1 column board where n-1 queens are placed successfully.

The skeleton given in the book and some helper functions follow:

(define (enumerate-interval low high)
       (if (> low high)
           '()
           (cons low (enumerate-interval (+ low 1) high))))

(define (accumulate op initial sequence)
       (if (null? sequence)
           initial
           (op (car sequence)
               (accumulate op initial (cdr sequence)))))

(define (flatmap proc seq)
  (accumulate append '() (map proc seq)))

(define (queens board-size)
  (define (queen-cols k)
    (if (= k 0)
        (list empty-board)
        (filter
         (lambda (positions) (safe? k positions))
         (flatmap
          (lambda (rest-of-queens)
            (map (lambda (new-row)
                   (adjoin-position new-row k rest-of-queens))
                 (enumerate-interval 1 board-size)))
          (queen-cols (- k 1))))))
  (queen-cols board-size))

So to start filling in the gaps we need to decide on the representation of our board and positions. I choose to represent a position of two elements and a board as a list of such positions:

(define (pos x y)
  (list x y))

(define (pos-row pos)
  (car pos))

(define (pos-col pos)
  (cadr pos))

(define (pos-diagonal? pos1 pos2)
  (= (abs (- (pos-row pos1) (pos-row pos2)))
     (abs (- (pos-col pos1) (pos-col pos2)))))

(define empty-board '())

Then we have to define the adjoin-position procedure that adds a new position to a set of positions (board) and of course a safe? procedure that checks if a set with board-positions is valid. Return to the definition of queens and check that every time we need only check the safety of the newly placed queens at the kth column. The rest are already checked.

(define (adjoin-position row col set)
  (cons (pos row col) set))

(define (safe? set board-size)
  "The newest queen, the one we need to check for safety, is in the car of set."
  (define (attack? pos1 pos2)
      (or (= (pos-row pos1) (pos-row pos2))
          (pos-diagonal? pos1 pos2)))
  (let* ((new-queen (car set))
         (rest (cdr set)))
    (accumulate (lambda (new-pos results)
                  (and (not (attack? new-queen new-pos))
                       results))
                #t
                rest)))

Or algorithm is checking each row for every column and eagerly rejects the solutions when a column of no safe positions appear. In this way it can be quite performant and gives solutions of boards up to size 12 in acceptable time.

One way we could improve the performance is to change our data representation for the positions from a list to just a number. This way a board can be a single list and by so we will reduce the amount of cons cells created.

To do so we need to think about how to check the diagonal attacks:

(define (adjoin-position row col set)
  (cons row set))

(define (safe? k positions)
  (let ((new-queen (car positions)))
    (define (iter rest diagonal anti-diagonal)
      (cond ((null? rest) #t)
            ((= new-queen (car rest)) #f)
            ((= diagonal (car rest)) #f)
            ((= anti-diagonal (car rest)) #f)
            (#t (iter (cdr rest)
                      (- diagonal 1)
                      (+ anti-diagonal 1)))))
    (iter (cdr positions) (- new-queen 1) (+ new-queen 1))))

(length (queens 12))

With this representation we can reach up to (queens 13) and our program is faster and less memory hungry. This optimization was possible by working with abstract procedures that allow us to change the underlying data forms. To change the program we needed only to provide two new functions.

SICP is surely a great book, and I think it's really worth spending the time on studying it deeply. If I could propose any book to software engineers it would be this.

🦉

Enabling an old android phone as a webcam
9 months, 1 week ago

It's not a surprise that webcams are in demand right now. I recently came in need of one, since I started tutoring online again. Searching around to buy a Logitech C270, I came to realize that the prices have more than doubled for a webcam that is quite old actually.

I was pretty irritated and hesitant to spend around 50€ for a webcam, so I started exploring other solutions. I have around an old Motorola E2 android phone. I already use it as a tethering device (among other things) and thought that it would quite nice to use this as a webcam. Meet DroidCam! It's a (sadly proprietary) android application that can serve the video feed from your phone as a webcam feed to your computer.

The installation process is pretty straight forward, get the apk somewhere to install on your phone and then follow the instructions here to install the program and drivers for your (gnu/linux) computer. This will then register the android camera as v4l2loopback device, that will work as proper webcam for most applications - I haven't encountered any problems, using jitsi both natively and the web app and obs studio.

However the fact that I had to reach my mobile in order to enable the webcam was a bit boring so I decided to write a simple script to enable and disable it. In order to do so, it is needed to have installed and configured adb as well as the psutil python library and of course a python interpreter. If you try to use it don't forget to set your passkey and also define the preferred connection method (check out the droidcam documentation).

So here is the script:

#!/usr/bin/env python
from subprocess import call
from time import sleep
import psutil

port = "4747"
package = "com.dev47apps.droidcam"
connection = "adb" #pass the ip here if you want a network connection
unlock_passkey = "****"
# keycodes for android
key_power = "26"
key_menu = "82"
key_enter = "66"

def checkDroidCam():
    for proc in psutil.process_iter():
        try:
            if 'droidcam' in proc.name().lower():
                return True
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
            pass
    return False    

def enableWebCam():
    # unlock the phone
    call(["adb", "shell", "input", "keyevent", key_power])
    call(["adb", "shell", "input", "keyevent", key_menu])
    call(["adb", "shell", "input", "text", unlock_passkey])
    call(["adb", "shell", "input", "keyevent", key_enter])

    # start the android application
    call(["adb", "shell", "monkey", "-p", package, "1"])

    # connect
    sleep(2)
    call(["droidcam-cli", connection, port])

def disableWebCam():
    call(["killall", "droidcam-cli"])
    call(["adb", "shell", "am", "force-stop", package])
    call(["adb", "shell", "input", "keyevent", key_power])

def main():    
    if checkDroidCam():
        disableWebCam()
    else:
        enableWebCam()

if __name__ == "__main__":
    main()

Nothing special for sure, but it's a nice feature to have given that now I can mount it on my desk in a nice angle and never have to move the phone again. By running the script with a keybinding I can have the laptop feeling of enabling my webcam and also cleanly exit from droidcam when not needed anymore.

Even if you don't have an old phone around you can buy one for quite cheap and use it as webcam, along with using it as a Piratebox, server or any other usage that a tiny computer may have. To be honest this sounds a much better investement that the prices that webcams have reached right now. And for the range of money the image is much better as well!

📷 📷 📷

Solving Advent of Code 2020, days 1-4
9 months, 1 week ago

Advent of Code is a programming challenge that happens the last five years. It offers a couple of problems to be solved for every day from the 1st of December till the day of Christmas. I've tried to complete the series many times, but I always manage to abandon it after 10 or 11 days. Armed with renewed motivation this year, I plan to finish it this time and report on the solutions I've found every 4-5 days.

Since the day of writing this is the 5th of December (but in a timezone that the 5th problem of Advent of Code has not yet been published), you will find here some commentary on my solutions for the first four days.

day 1

The first day was actually asking for the solution of a subset sum problem, or else the problem of finding pairs or triplets of numbers that add up to a certain value. First we parse our input as list:

(defun get-file (filename)
  (with-open-file (stream filename)
    (loop for line = (read-line stream nil)
       while line
       collect line)))

(defvar expenses
  (mapcar #'parse-integer (get-file "input1.txt")))

Then for the first part we think as follows:

  1. Put every value as a key to a hash table, with a value t
  2. Check recursively if the difference of a list element and the target sum is in the hash table
  3. Collect the values that do confirm the check at two.

These can be expressed somewhat like this:

(defun two-sum (list sum)
  (let ((hash (make-hash-table)))
    (loop :for x :in list
          :do (setf (gethash x hash) t))
   (labels ((recur (list acc)
              (if (endp list)
                  acc
                  (let* ((current (car list))
                         (target (- sum current)))
                    (if (gethash target hash)
                        (recur (cdr list) (cons (list target current) acc))
                        (recur (cdr list) acc))))))
     (recur list '()))))

The second problem can't be as easily expressed recursively, so I employed the mighty loop macro. Here the chain of thinking is that we can add the values into a hash table as before and loop for every subset of two elements in order to see whether the difference of the target sum and them exists in the hash table.

(defun three-sum (list sum)
  (let ((hash (make-hash-table)))
    (loop :for x :in list
          :do (setf (gethash x hash) t))
    (loop :named main :for x :in list :do
      (loop :for y :in list :do
        (if (gethash (- sum x y) hash)
            (return-from main `(,x ,y ,(- sum x y))))))))

Since in the problem it was implied that there exists only one such triplet, we omitted to look for the solutions and just return when we find one.

Then we just have to multiply the pair and triplets and to find the solutions. All in all it was a pretty easy day, and a good warm-up for my rusty programming skills.

day 2

Day presented the problem of parsing lines in the form of "1-3 a: abvcd". We parse the input as before so not much to say here.

For the first part we had to assume that the first two numbers represent a position, the second a target that must be included in the previous range and the string at the end a password that needs to be validated with this rule. Given the above we have to calculate the number of valid passwords in our input files.

To easily parse this input, we can use regex. In Common Lisp one of the most used regex libraries is cl-ppcre, which supports perl like syntax for them.

Don't try to parse HTML with regex. The results are not worth it.

The regex to match our expression can be written as follows:

(defvar scanner (ppcre:create-scanner "(\\d+)\\-(\\d+)\\s([a-z]\)\:\\s([a-z]+)"))

In essence we create four groups of interest: the two digits divided by the dash, the character before the : and the characters at the end. Now we can write our validators, using the ppcre:register-groups-bind commands, to destrucure the groups.

(defun validate-password-1 (string)
  (ppcre:register-groups-bind ((#'parse-integer start end)
                               ((lambda (x) (coerce x 'character)) target)
                               password)
    (scanner string)
    (let ((count (count target password)))
      (and (>= count start)
           (<= count end)))))

To finally count the valid passwords we just use reduce:

(reduce (lambda (acc x)
          (if (validate-line-1 x)
              (1+ acc)
              acc))
        password-input :initial-value 0)

Part 2 is quite similar. The only change is that we the now we have to check the first two digits (the ones we treated as a position range) as positions for the target character and verify that just one of them has it. So it is just a simple modification of the above validation function and is left as an exercise for the reader 🤣.

day 3

This day we had the problem of checking for collisions by movement on map represented by lines like "….#…#..". Each hash represented a tree, so we need to count how many trees we would crash on by following a certain pattern of movement. Another issue is that the lines represented a pattern themselves: they were repeating infinitely to the right.

To solve this problem I first counted the length of the lines, which happened to be 31. This way I could find the correct position by using mod31 arithmetic. Then I defined the following function:

(defun count-collisions (map right down)
  (labels ((iter (list acc pos)
             (if (endp list)
                 acc
                 (if (char= (aref (car list) pos) #\#)
                     (iter (funcall down list) (1+ acc) (rem (+ pos right) line-length))
                     (iter (funcall down list) acc (rem (+ pos right) line-length))))))
    (iter map 0 0)))

It's an recursive function that gets downwards on the list by the speed defined in right and down, ie how many blocks we travel to the right and downwards in each step. Right needs a number, but since downwards is in fact how many lines we skip at each recursion step, it's expressed as a function of the cdr family. With cdr we check each line (1 downwards step), with cddr we check every other line (2 downwards steps) and so on.

To get the solution for the first part I just needed to run (count-collisions my-input 3 #'cdr), and for the second part I just had to calculate the product of several speeds.

day 4

Finally at the most recent fourth day (whoa this post took longer than I thought to write), we had to validate imaginary passport data. The data where in blocks of key value pairs separated by :. The problem is that they were not presented in a standard sequence.

This challenge needed different parsing of the file since each block was separated by a blank line and a block could exist in several lines. To have my data better organized I used this function to parse the input:

(defun get-file-per-paragraph (filename)
  (with-open-file (stream filename)
    (loop :for line = (read-line stream nil)
          :while line
          :with temp = ""
          :if (string= line "")
            :collect temp
            :and :do (setf temp "")
          :else
            :do (setf temp (concatenate 'string temp " " line)))))

(defvar passport-tests (get-file-per-paragraph "input4.txt"))

The first part of the problem was to check if all the needed key values where present. To check so we can loop over and search the needed strings. Then we just count the valid ones to get our answer.

(defvar passport-codes '("byr:" "iyr:" "eyr:" "hgt:" "hcl:" "ecl:" "pid:"))

(defun passport-validate (passport-data)
  (not (member nil
               (loop :for code :in passport-codes
                     :collect (search code passport-data)))))

(reduce (lambda (acc x) (if (passport-validate x) (1+ acc) acc))
        passport-tests :initial-value 0)

The second parted wanted us to validate the data according to some rules. To do so I used cl-ppcre again to create patterns of the correct data. Then I wrote several validator functions, one for each kind. It was boring to be honest and reminded me of writing business code: not challenging and repetitive. This left me with the feeling that there might be a better solution to this. If you, kind reader, know of such a solution, please, inform me through any means of contact. Thanks.

The boring but working code is:

(defvar byr-code-scanner (ppcre:create-scanner "byr:(\\d{4})(?:\\s|$)"))
(defun validate-byr (input)
  (ppcre:register-groups-bind ((#'parse-integer value))
      (byr-code-scanner input)
    (and (>= value 1920)
         (<= value 2002))))

(defvar iyr-code-scanner (ppcre:create-scanner "iyr:(\\d{4})(?:\\s|$)"))
(defun validate-iyr (input)
  (ppcre:register-groups-bind ((#'parse-integer value))
      (iyr-code-scanner input)
    (and (>= value 2010)
         (<= value 2020))))

(defvar eyr-code-scanner (ppcre:create-scanner "eyr:(\\d{4})(?:\\s|$)"))
(defun validate-eyr (input)
  (ppcre:register-groups-bind ((#'parse-integer value))
      (eyr-code-scanner input)
    (and (>= value 2020)
         (<= value 2030))))

(defvar hgt-code-scanner (ppcre:create-scanner "hgt:(\\d{2,3})(cm|in)(?:\\s|$)"))
(defun validate-hgt (input)
  (ppcre:register-groups-bind ((#'parse-integer value)
                               type)
      (hgt-code-scanner input)
    (if (string= type "cm")
        (and (>= value 150)
             (<= value 193))
        (and (>= value 59)
             (<= value 76)))))

(defvar hcl-code-scanner (ppcre:create-scanner "hcl:#([0-9a-f]{6})(?:\\s|$)"))
(defun validate-hcl (input)
  (ppcre:scan hcl-code-scanner input))

(defvar ecl-code-scanner (ppcre:create-scanner "ecl:([a-z]{3})(?:\\s|$)"))
(defvar eye-color-codes '("amb" "blu" "brn" "gry" "grn" "hzl" "oth"))
(defun validate-ecl (input)
  (ppcre:register-groups-bind (color)
      (ecl-code-scanner input)
    (member color eye-color-codes :test #'string=)))

(defvar pid-code-scanner (ppcre:create-scanner "pid:(\\d{9})(?:\\s|$)"))
(defun validate-pid (input)
  (ppcre:scan pid-code-scanner input))

(defun passport-validate-2 (passport)
  (and (validate-byr passport)
       (validate-iyr passport)
       (validate-eyr passport)
       (validate-hgt passport)
       (validate-hcl passport)
       (validate-ecl passport)
       (validate-pid passport)))

(reduce (lambda (acc x) (if (passport-validate-2 x) (1+ acc) acc)) passport-tests :initial-value 0)

One thought I had was that, since the validator functions shared a similar pattern, it could be nice to have a generator function for them. The means to abstract them so eluded me, and since this is a challenge that was solved I didn't push too much. I will return though (I hope).

epilogue

So this is my experience so far. Dusting out my Common Lisp skills is a reason I use to work on these challenges and don't work on my other projects (professional or not). At least it may help to motivate me to work on the backend of discordia-chan. At the very least it's fun. And as a final word, that's all that matters.

Have fun everyone!

Solving Advent of Code 2020, days 5-16
9 months, 1 week ago

It's the 16th of December here, so let's do one small recap of my experiences from the last eleven days of Advent of Code. Since there are a lot of challenges here, I'll just do some commentary and not really present all solutions. I'll provide a repository later where you'll be able to find all of my solutions.

day 5

Day 5 was asking to decode a binary format that was used to represent boarding pass codes for seats in a fictional plane. There were quite a lot of clues that this was the case, so it was quite simple to write down a solution that parsed the codes given into binary numbers. Then for part two the task was to find a missing step in the numbering.

All in all it was a quite easy challenge for day 5.

day 6

In day 6 the task was to count unique items in a group for the first part and then count common elements in slightly different groups. As the description shows it was quite easy as well and took little time to implement.

day 7

Day 7 was the first challenging day for me, and it really helped me to remember some graph concepts that I had forgotten. The first problem is asking to do calculate the nodes in a connected component of a graph the represents how bags are to be inserted in each other. A recursive solution with associative lists worked fine for the first part.

In part 2 the question was how many bags are to be contained in ours, given rules for what the bag shall contain. A DFS for the directed graph was then implemented in order to discover all the nodes and count them. This was quite an interesting day.

day 8

At the eight day the challenge was around parsing and executing a pseudo language with jumps and an accumulator. For the first part there was an infinite loop to be discovered, which I did by keeping the history of executed commands. If one was called twice the program was surely lead to run forever.

For part 2 we had the information that two kinds of instructions were flipped, and that was the issue that produced the infinite loop. So I checked the pairs that could be swapped and if the resulting instructions would create a finishing program.

In all this day was not that difficult, but needed some tricks.

day 9

The challenge here was to find a number in a sequence that was the sum of two numbers in another group. Since we had the two sum algorithm from day 1, it was easy to modify it so to check if some number is or not a two sum in a given group. Then we had to find a range in the same group that had the sum of the number found in part one. This was solved by starting with each element of the group and calculating the sum of the sub-groups starting with it till the wanted sum was found or the sum exceeded it.

day 10

Here the first part was quite easy, in calculating the number of differences that where three or ones in a sequence of numbers. The second part though wanted to calculate all the permutations that would work with the rule that a number had to be followed by one that was from 1 to 3 units bigger. This required a dynamic programming solution backtracking in the numbers and counting the possible arrangements for each element.

day 11

Day 11 was a problem similar to Conway's Game of Life. The implementation I did was not the most performant, since it kept the whole board of positions in memory but it worked well enough in the end. Part 2 needed just a modification of what was considered neighboring between the positions and was interesting to implement.

day 12

Moving a ship given some coordinates and then adding a waypoint to the whole ordeal. Quite nice challenge and reminded me of some of the graphics manipulation like rotating points around others etc. I used Lisp's structs to express the ship and waypoint which to lead to simple but rather verbose code.

day 13

This day's challenge was mostly around number theory and the part 2 even required the implementation of the Chinese Remainder Theorem to solve. I was happy to do so and have it reminded, after so many years that I last used it.

day 14

More low level stuff in day 14, as the problem was around masking and memory positions. The bit level functions of Lisp proved really helpful, especially the boole function. Part two was also quite interesting as it introduced a floating bit, i.e. a bit that can take all possible values.

day 15

The elf game of day 15 was not really a challenge, and my implementation with a hash list happily responded even for the second part that demanded 30 million iterations. Given that the whole solution was:

(defparameter input '((20 . 1) (0 . 2) (1 . 3) (11 . 4) (6 . 5) (3 . 6)))

(defparameter starting-input
  (loop :for i :in input
        :with a := (make-hash-table)
        :do (setf (gethash (car i) a) (cdr i))
        :finally (return a)))

(defun calculate-next-number-v2 (prev alist turn)
  (let ((cell (gethash prev alist)))
   (if cell 
       (- turn cell)
       0)))

(defun elf-game-v2 (turn starting-alist)
  (labels ((iter (acc prev past-alist)
             (if (= turn (1+ acc))
                 (calculate-next-number-v2 prev past-alist acc)
                 (iter (1+ acc) (calculate-next-number prev past-alist acc)
                       (progn (setf (gethash prev past-alist) acc)
                              past-alist)))))
    (let ((starting-turn (hash-table-count starting-alist)))
      (remhash 3 starting-alist)
      (iter starting-turn 3 starting-alist))))

it was probably the day for which I wrote the least code.

day 16

Day 16 challenged me more than it should. The first part was quite trivial, but for the second part we needed to map some number positions to rules, given the data-set we were given. I was anxious that I would need backtracking but in the end part 2 was simpler than I anticipated. I think I did take some questionable choices to be honest:

(ql:quickload :cl-ppcre)
(defun get-file (filename)
  (with-open-file (stream filename)
    (loop :for line := (read-line stream nil)
          :while line
          :collect line)))

(defparameter file (get-file "input16.txt"))
(defparameter test (get-file "test16.txt"))

(defparameter rule-scanner (ppcre:create-scanner "(?:.+: )(\\d+)(?:-)(\\d+)(?: or )(\\d+)(?:-)(\\d+)"))
(defparameter rules
  (loop :for line :in file
        :when (ppcre:scan rule-scanner line)
          :collect (ppcre:register-groups-bind ((#'parse-integer min1)
                                               (#'parse-integer max1)
                                               (#'parse-integer min2)
                                               (#'parse-integer max2))
                       (rule-scanner line)
                     (list (cons min1 max1)
                           (cons min2 max2)))))

(defparameter rules-functions
  (mapcar (lambda (x)
            (lambda (y)
              (or (and (>= y (car (first x)))
                       (<= y (cdr (first x))))
                  (and (>= y (car (second x)))
                       (<= y (cdr (second x)))))))
          rules))

(defparameter nearby-tickets
  (loop :for line :in file
        :with start := nil
        :when start
          :collect (mapcar #'parse-integer (ppcre:split "," line))
        :when (string= line "nearby tickets:")
          :do (setf start t)))


;;; part 1
(defun apply-rules (rules ticket)
  (labels ((iter (numbers acc)
             (if (endp numbers)
                 acc
                 (iter (cdr numbers) (if (not (some (lambda (x) (funcall x (car numbers))) rules))
                                         (cons (car numbers) acc)
                                         acc)))))
    (iter ticket '())))

(defun calculate-error-rate (rules tickets)
  (labels ((iter (tickets acc)
             (if (endp tickets)
                 acc
                 (iter (cdr tickets) (append (apply-rules rules (car tickets)) acc)))))
    (reduce #'+ (iter tickets '()))))

;;; part 2
(defparameter cleaned-nearby-tickets
  (loop :for ticket :in nearby-tickets
        :unless (apply-rules rules-functions ticket)
          :collect ticket))


(defun apply-rules-v2 (rules ticket)
  (loop :for rule :in rules
        :for rule-position :from 1
        :with result = '()
        :do (loop :for number :in ticket
                  :for number-position :from 1
                  :unless (funcall rule number)
                    :do (setf result (cons `(,rule-position . ,number-position) result)))
        :finally (return result)))

(defun viable-positions (rules tickets)
  (let ((exclusions (loop :for i :from 1 :upto (length rules)
                          :collect (mapcar
                                    #'cdar
                                    (delete-if-not (lambda (x) (= (caar x) i))
                                                   (mapcar (lambda (x) (apply-rules-v2 rules x))
                                                           tickets))))))
    (loop :for exl :in exclusions
          :with result := '()
          :with availabe-positions := (loop :for i :from 1 :to (length rules)
                                            collect i)
          :collect (loop :for i :in availabe-positions
                        :when (not (member i exl))
                          :collect i))))

(defun map-positions-to-rules (rules tickets)
  (loop
    :with viable-positions :=  (viable-positions rules tickets)
    :with result-array := (make-array (length rules))
    :do (loop :for pos :in viable-positions
              :for i :from 0
              :if (= (length pos) 1)
                :do (let ((target (car pos)))
                      (setf (aref result-array i) target)
                      (setf viable-positions (mapcar (lambda (x) (remove target x))
                                                     viable-positions))))
    :when (not (find 0 result-array))
      :return result-array))

(defparameter my-ticket
  (mapcar #'parse-integer
          (ppcre:split "," "97,101,149,103,137,61,59,223,263,179,131,113,241,127,53,109,89,173,107,211")))

(defun calculate-part2 (rules tickets my-ticket)
  (let ((rules-array (map-positions-to-rules rules tickets)))
    (loop :for i :from 0 :upto 5
          :with product := 1
          :do (setf product (* product (nth (1- (aref rules-array i)) my-ticket)))
          :finally (return product))))

epilogue

Not all solutions are created equal, but at least this year I feel I will stay up and running with the challenges and will complete them on time. Still 9 days to go.

Solving Advent of Code 2020. days 17-25
9 months, 1 week ago

Well I did it! For the first time since 2015 I managed to complete all the problems within 24 hours of them being published. It was a nice practice in my common lisp skills though many days were solved in a rush due to all other things that happen in my hectic life.

Here follows some comments on the last nine days of Advent of Code.

day 17

OK, this was quite easy for me since I had already played around with Conway's game of life and the problem of day 17 was a three dimensional and then a four dimensional implementation. By understanding that one does not need to keep the state of every cell in the game, since only the active cells can cause changes, it is easy to create an efficient solution.

day 18

For this day I was lucky to think of the shunting-yard algorithm. I parsed the input into an rpn expression and then evaluated that recursively. The first part was without operator precedence (i.e. all operations have the same weight), and the second part needed additions to happen before multiplications.

day 19

The problems of day 19 were tricky. They had to do with trees of rules, that could be constructed with a grammar parser and all that jazz. It was one of the day that troubled me the most.

day 20

Oh, day 20. This was probably the most difficult day of all. The problem was to construct a jigsaw of images, that where in random rotations. It wasn't so much that it needed some novel idea to solve but it needed a lot of micro-management of brute force and backtracking to produce the answer.

day 21

In day 21 the problem was to map ingredients to allergens from a list of unknown products. This was mostly a set problem and was fast and elegant to solve around.

day 22

A game of combat with recursive sub-games was the gist of the day. It wasn't that much of a challenge but it was fun!

day 23

Another game for day 23, this time a game of rotations in a deck of cups(?). It had a lot of edge-cases so was quite bothersome to implement.

day 24

Hexagonal grids and game of life. Once again an easy day!

day 25

Day 25 requested the implementation of a Diffie-Hellman-Merkle. It was interesting and fun as a challenge for Christmas day.

epilogue

Challenges like this are fun, and I feel nice that I tried to finish the whole ordeal this year. Will I do again next year? Well, that depends mostly on how busy I will be. If you see this post and feel interested in any of my solutions feel free to ask me anything. Bye!

Changing from a remote to a local path in ivy
9 months, 1 week ago

Just a simple quickie today, since I thought it would be good to document this for future reference. When using tramp to access a remote file, directory etc you may want to copy or do whatever manipulation to a local file/directory. In the default minibuffer this can be achieved by inserting "/~/".

In ivy this works but is a little finicky. A better solution is to type "/ C-j". This way you can jump to local paths from remote ones.

/g/ Generals
10 months, 3 weeks ago
/g/ is mostly trash, but there are some gems, they post there * /fglt/ – Friendly GNU/Linux Thread * If you would like to try out GNU/Linux you can do one of the following: Install a GNU/Linux distribution of your choice in a Virtual Machine. Use a live image and to boot directly into the GNU/Linux distribution without installing anything. Dual boot the GNU/Linux distribution of your choice along with Windows or macOS.
Making a tinfoil-hat 03
1 year ago
My First Love Now I wasn’t the one with the troubles, but my girlfriend was. Her family was very religious. Her mother played the organ (Istrument in a Church) and her step dad was somewhat of a pastor. They beat her with a ritgerte, let her clean the organic garbage can with maggots and only a cloth lobe, even tough she was vegetarian. Also she had to pound stones in the basement.
Making a tinfoil-hat 02
1 year, 5 months ago
Way to Round three After I got released the second time from Psychiatry, I thought I had the worst is left behind. I was happy to be with my father again. But I couldn’t reach my Mother via phone or at home. I have written in the last part that it would be the last time I’d see my mother for a long time. I tried to call her a lot and she never picked up her phone.
Onion Linklist
1 year, 9 months ago
The following Onions are hosted by me: Homepage - tinfoil-hat.net Nitter - Twitter Frontend Searx - Search engine Gitweb Boards Chans and Forums Here are some Onions, I found. I am not an owner of these Websites, nor do I take responsabillity to their content in any kind. Here we go: Nanochan 8chan.se Dread DIDW2 Deutschland Im Deepweb The End Rable Ableonion Kiwifarms Truthboard Torigon Mirrors Mailinglist Mirrors Archive Searches
Making a tinfoil-hat 01
1 year, 11 months ago
Hi There, I’d like to blog about my past My Problems started back before I was in Elementary school. My Mom already has betrayed my Dad. So even before my fist day at School I was seperated from my father. While I was in 3rd or 4th grade, my Grandma (the mother of my mother) was dying of brain Cancer. I was living together with my Big Sister with my Mom.
About the Lone Wolf
2 years ago
The Lone Wolf https://www.youtube.com/watch?v=or3UZajR6Ao [Part1] Its gray fur completely bites but still keeps warm His pack uncontrollable but it follows him well-behaved The hunger so big always on the hunt Eyes dull, but teeth still sharp The room too narrow to breathe But even the sharpest claws become dull on the street Food becomes scarce, remains a growling stomach There are almost only wolves dressed as sheep So he moves away from here Because no plant grows on burnt soil So the rest remains for the rest Because only who comes first is the one who always has enough meat From gamma to alpha, from puppy to leader Is one of the best, one of the last of its kind Shares its food also with the weakest link of the chain, if it asks him Lives by unwritten rules, honor still flows through his veins He knows that you have to have them, too, rather than just talking about them But let them speak
Starting New Blog
11 months ago
I saw some cool retro web blogs on Lainchan and wanted to start my own to protest against the cancer of modern social media. This was a good opportunity for me to learn Hugo as well hehe. This website was created from scratch aside from ripping the CSS from the Hugo Bear Blog theme, so I would say I feel comfy enough with it now to add some cool features when I have the time.
ck 2022/12/03(Sat)15:08 No.1670076492
11 months, 3 weeks ago
this image was taken with a sony Mavica floppy camera that I found in this place
bask in the quality
ck 2022/12/02(Fri)20:19 No.1670008741
11 months, 3 weeks ago
merry decembermas
ck 2022/11/28(Mon)20:38 No.1669664309
1 year ago
>>1669662781
revision, after drinking some and still having snacks left its actually absolutely amazing. the slight anise aftertate goes great with food and snacks. 9/10 easily, great winter experience.
ck 2022/11/28(Mon)20:13 No.1669662781
1 year ago
while complaining about not being able to buy rakija someone told me about the turkish raki. and it seems the goto brand 'yeni raki' is sold here. its a very heavy anise tasting spirit around the 40-50%, mine was 45% and still tastes mostly of anise with only an aftertaste and light burn of the spirit. overall very refreshing 8/10, would make a very nice mixer for sure for things that go well with anise, maybe something to try with my wintery custard/cream abominations.

cheers
ck 2022/11/19(Sat)22:49 No.1668894555
1 year ago
the 'egg walker' experience, first cursed mix of the holiday season:
- add advocaat (dutch alcoholic custard)
- add johnnie walker or any whiskey really, just happened to have this
- fancy long spoon and glass optional but helps

enjoy, cheers
ck 2022/11/19(Sat)21:04 No.1668888253
1 year ago
so I found out another liquor store is nearby recently, and they have their own brand of bottomshelf vodka. 'flokoff'
on the downside its like 2 bux more expensive than the bottomshelf brand of the other store but on the positive side it does go up to 40% unlike the other 37.5%.
so a quick review is due I think:
+ still cheap
+ actual vodka %
+ slightly less rubbing alcohol tasting
- less cheap
- store is further away

overall a definite would buy again 9/10
cheers
ck 2022/11/18(Fri)19:36 No.1668796582
1 year ago
butter than top
ck 2022/11/12(Sat)23:37 No.1668292662
1 year ago
improved 'white russian' that came up in a discussion:
- put in whipped cream from can
- add strong coffee
- add vodka to taste

much nicer and less sweet than the actual 'white russian'
ck 2022/11/08(Tue)22:31 No.1667943106
1 year ago
because I dont think I've mentioned this here. a little PSA:
does your neighbor have some fancy wireless sensors? they're giving all that data away for free at 433MHz, all you need is a dirt cheap rtl sdr.
if I can be bothered I might even make this into some dashboard thing now that I'm closer to people having usable sensors. most of the tire pressure sensors are allover the place with temperature but I can imagine an interesting graph with different broadcasting sensors and their temperatures over time. at the very least I dont have to worry about monitoring outside temps.

that is all cheers
ck 2022/10/31(Mon)21:03 No.1667246603
1 year ago
bought ans house
>no more rent
>freedom of fucking around
>instant boomer respect
<massive debt

all round would recommend 8/10
Create a personal Git server!
1 year, 2 months ago
2022-09-04
1 year, 2 months ago
2022-08-21
1 year, 3 months ago
Decentralize your website!
1 year, 3 months ago
2022-08-13
1 year, 3 months ago
2022-08-12
1 year, 3 months ago
2022-08-11
1 year, 3 months ago
Get on XMPP!
1 year, 3 months ago
Stranger of Paradise Review
1 year, 1 month ago

It's been a good long while since the original teaser trailer came out for this game. Being among the fervor was something I'll never really forget. It was hilarious to everyone onlooker who had never seen something so autistic in vidya. Square Enix (SE) has had a really odd reputation in recent years with pushing Tetsuya Nomura - the famous (or more so, infamous) creator/director of Kingdom Hearts, onto many projects. That, and the writers of those teams as well. This has become evident not only with Kingdom Hearts (obviously), but with projects like the Final Fantasy VII Remake, which had a pretty similar plot. Needless to say, Nomura's influence on the company cannot be understated, especially with regards to how SE's games are written nowadays.

Nomura is a fan fiction writer. I don't think anyone in their right mind would dispute that. Again, Kingdom Hearts is an obvious example (constantly introduces weird characters that his "OCs" get along with just fine and act in a "just-so" sort of fashion), but Final Fantasy VII Remake is especially egregious in this regard. Not necessarily that it's terrible mind you, but it relies heavily on your knowledge of the first game and is very much written accordingly, and shakes up certain story beats and gives in-universe reasoning as to why the events of the actual original game are being changed this time around. Again, this happens for interesting, but rather contrived reasons. To say these games have a real lack of grounding is an understatement. They float on cloud 9 constantly and almost never come down. Let me just say that again, I don't necessarily hate this, but you have to keep it in mind going into a Nomura game. It has it's pros and cons and they're is a lot of fun to be had with this more fantastical writing.

Nomura had a large part to play in this game's development, as he seemed to come up with the original concept and was even credited first in the credits roll. Right before the director (lol). We'll get into Stranger of Paradise's writing a bit later, but for right now, know that this game, despite it's low budget and (I'm assuming here), rough development cycle, has a lot more going on under the hood then most of you probably thought initially. First, let's talk specs.

Nerd Stats

I played this game on my PS4 Pro in 4K (upscaled, ofc). I considered playing at a lower resolution, and I did at one point, but I find that the performance was actually better at 4K (i.e. it maintained a stable 60fps). That still doesn't excuse that fact that it looks like a PS3. The textures, lighting, and cutscenes all reflect this, as well as the overall look of the game. It seems to lack a lot of texture detail, which is particularly odd.

Did you know? This game takes up 80GB of storage? Now you do. That is enormous for a game of this nature, even with all it's textures, and I can only imagine how bloated this game became due to lackadaisical development. Speaking of development, I think this game was originally developed for the PS3. Unironically. Now, I don't have any official proof, but I look at this game and I just see that they had to cut so many corners. Some cutscenes are outright replaced with in-engine dialogue (significantly cheaper looking btw), and a bunch of other thins seem cut as well. NPC dialogue got relegated to a sub-menu (which you have to actively look for btw) and the over world is just a map connecting dungeon to dungeon. Not to mention are LOADS of performance bugs and graphical glitches. There are just some areas that look downright awful (please reference the stage with the Astos fight) all things considered.

Now, my PS3 theory only holds water in the sense that it explains how the game looks. It's more likely that the case is that it was just a side effect of the poorly managed development. However, considering SE's track record for having games put in some serious dev hell (FFXV and the VII Remake come to mind), I wouldn't put it past them. However, considering the game does actually function, I think I can let it slide a little.

This aspect of the game is important to consider as it affects the game as a whole. Had it been properly managed, Stranger of Paradise probably would have been a very different game. Maybe Jack's dialogue wouldn't have looked quite as absurd had their been more context. Maybe there would have been a lot more character writing, or cutscenes. Maybe they would have padded out the game even more than it was padded. So many possibilities... but what we have is what we got. We have to live with it now.

Yeah yeah, Combat

Combat is very competent. People have made comparisons to Nioh, and I won't say it's not true. The big difference in the job system, which really helps keep the game from becoming stale. Had it just been the kind of weapon combat for 20 hours, I probably wouldn't have made it through. It has some good heights; it's very satisfying to break enemies into tiny little bits, and it really never gets old. The thing that does get old is the bosses, which are unfortunately a weak point of Stranger of Paradise. Not necessarily because they're super bad, but it's because they fail to be that meaningful overall. The only bosses with any story significance are Bikke, Astos, and the fiends, and even then it's not that much. That has the unfortunate side-effect of making every boss in the game feel just like another stepping stone to get to the ending. They all could have used some better writing and general design tune-ups. Personally, I kinda wanted them to have some Metal Gear Rising Revengeance-type writing. I know that's a tad unrealistic, but I'd be lying if I said that I never wanted that. It almost comes close to, with the Kraken, who'd I'd have to say is the best boss overall in terms of design, demeanor, gameplay, and writing. It wasn't even a lot of writing; it was just a measly three lines and yet it added so much.

Dungeons?

The dungeons are... ok. Really nothing too special about them. I was literally going through them and in the back of my head the first thing I wanted to compare it too was XIII. That's not really a fair comparison, considering it's not quite that linear, but I'd be lying if I said I wasn't secretly thinking about it the whole time. Your basic dungeon is you fighting through it with a bunch of monsters with your two NPC buddies who take all the hits for you while you cast magic from the back. Now you have no questions why I mastered every mage ability in this game. It's not necessarily foolproof; enemies will still target you, but it's rather effective strategy, especially in the early game.

Looks vary. They're based off of the Final Fantasy games of yesteryear (referenced in their descriptions as "Dimension 2, Dimension 4," etc.) Some of these locations look pretty stunning. The Chaos Shrine is obviously a highlight, as well as Mount Gulg and Hallowed Massif (lava and snow areas respectively). However, Terra Tortūra, despite having a cool Latin name, is downright one of the worst looking areas I've ever seen in a video game. I'm not disgusted by it, but I'm constantly questioning why it looks like Satan vomited on my screen. It just looks awful. It genuinely looks nothing like the Floating Continent it's based off of. Overall though, these dungeons are fun at times, but ultimately forgettable. That goes for the monsters as well, despite them being based off of old Final Fantasy mobs as well.

Is there something else I'm forgetting... oh yeah.

I hope you like Diablo

because this game has a good ole' Diablo loot system, complete with a shower of equipment that is pretty useless because they all do the same thing; making sure you don't get completely torn up by enemies. Literally just press the auto-optimize button at every save point in the battle settings and forget about it. Actually, now that I think about it, this is probably where that 80GB came from. All the excessive bloat from these highly interchangeable weapons and armor. Say what you want about Diablo, but it's looting system is a trend I've really disliked in vidya ever sine it was popularized. In a better game, I'd probably have to say about this, but as it stands, it's inconsequential enough that I'll let it go.

It's worth noting that there's stuff like dismantling weapons and customizing them, and they effects like Job affinity and stuff. There is actually a fair amount of complexity to be had with the gameplay. It really doesn't matter though. Again, auto-optimize and forget.

Loose Ends

Before I address the Chocobo in the room (which, funnily enough, are not present in Stranger of Paradise), there are some brief things I'd like to preface. In general, the sound in this game is pretty great. That's not usually a point you see addressed much in games, but the sound engineering is genuinely pretty good. Whether it's the cracking of crystals or the clanking of swords, it generally sounds pretty pleasing to the ear. The music itself is decent. It's not outstanding or anything, but again, it's pretty pleasing to the ear.

The voice acting is actually pretty great. Yes, even Jack's VA is really good. The script obviously needed some work, but I'm jumping the gun. Some particular stand-outs in the cast are Jake Eberle as Capt. Bikke, and Todd Haberkorn as Astos. I never got tired of the voice acting in this game, and I particularly liked these two characters and the life they brought to their roles.

I have saved the best for last. Get ready; much to Jack's chagrin, this is gonna be long.

The Strange Writing of Stranger of Paradise: Final Fantasy Origin

To begin, let's have a brief plot synopsis, just to get on the same page. Don't be worried about spoilers or whatever; no amount of plot details could ever take away the downright surreal experience of playing this game firsthand.

Jack and his two pals Jed and Ash just kinda spawn outside Cornelia with funny glowing rocks in their hands with no memory except that they want to kill Chaos. This, unlike most things in this game, will be explained later. They go to Cornelia and showcase Jack's antisocial personality, which is assumedly tolerated because they want him to restore the land to it's former glory by restoring the four crystals of light. First up, they gotta kill heckin Chaos who abducted Princess Sarah, so they go and do that except it's not Chaos it's actually some white-haired teenage girl with no pants on. Apparently she was gonna kill Chaos but then Chaos wasn't real so she let the darkness into her heart to become Chaos or something like that. How could this happen you might ask? Jack says this is "Bullshit" and plays some nu-metal on his smartphone which he has apparently. Why does he have a smartphone you might ask? Jack gets outside the building and Neon joins the team because there are supposed to be "4 warriors of light". They all agree instantly that this person just fought should join the team. They head back and Jack gets told again that Chaos isn't real but they disregard this and then focus on going to Pravoka which is overrun by pirates apparently. Why is it overrun with pirates you may ask? They head to Pravoka and fight Capt. Bikke, leader of the pirates, who apparently has information for them about the crystals? He tells them where they can find a guy who knows more and they head towards him. After battling some monster in this weird castle this dark elf is about to talk about something dumb so Jack tells him to shut up and how to find the crystals. He obliges, and they go get some crystals so that they can fight Chaos or something? Wait, what was the motivation here again? I thought we established Chaos isn't real or whatever? Why are they so willing to just go out-

They go to great great lengths to find these crystals and restore them, for whatever reason. Turns out, restoring them actually made everything worse for everyone and chaos™️ is breaking out across the land. Meanwhile while defeating all these monsters, our protagonists get clouded in dark matter and learn more about their past. Turns out they're from some place called Lufenia who sent them here to regulate darkness or something. The crystals hold their memories in order to make them "Strangers", not only to Cornelia, but to themselves. This is stated explicitly in the game, which you'd think is a blatant dis regard of the "show don't tell" rule, which is true. However, considering that this game explains so little, I was actually extremely desperate for exposition. Wait, what is Lufenia exactly? They say it's a different "world" or something but it's not like Cornelia is a simulation because they disprove that.

Anyways all the crystals become restored and the world becomes shrouded by darkness, including the Pravoka pirate crew. Ole' Bikke got possessed by the darkness(?????) and you gotta beat him to a pulp (again). With his very delayed dying breath he tells you Astos knows a lot more than he's probably letting on and then right before the writers decide his last lines, he says that you shouldn't be consumed by hatred or something. I guess that's the moral of story then. I'm sure the game wouldn't just do that to later subvert it by being super edgy or something. Anyways, we follow a little wild goose chase with Astos and this is where we actually get some lore dumping. Finally. Turns out Astos was originally created by the Lufenians and the Jack has actually be here multiple times as the Lufenian "regulator". However, on previous runs, Jack figured out that the Lufenians are bad because they use this world just to basically experiment with light and darkness, which is bad because the Cornelians don't consent I suppose? Anyways I guess it's really abhorrent or something got left out of that explanation because Jack comes up with this whole plan to free Cornelia from the Lufenians grasp, which Astos executes after Jack tells him to do whatever it takes (it's implied that Jack did a multitude of runs before Astos could ever implement the plan fully). With his highly delayed dying breath, Astos explains how racist he is towards Lufenians and how he was so racist he turned them into bats. But not Jack though; he's one of the good ones. Wait, why does he hate Lufenians again? Didn't they bring him to life? What could they have possibly done to him? Well that's ok. Whatever the reason, we hate those gosh darn Lufenians by proxy because Astos is such a good pal. Especially after trying to kill us and all.

With this, Jack and crew head back to Cornelia where all hell has broken loose. Things look pretty grim after Astos' death literally has a "Death Stranding" effect where is basically just created a bunch of darkness and monsters everywhere. They get through it and then Jack punches the princess (but not too hard) before dragging her out of the castle to bring her to safety. Yeah, safety. Y'know, outside the castle is super safe, with those monsters running about and all. You beat up the monsters and with Princess Sarah's last breath, she becomes the Iblis trigg- I MEAN chaos, key. Yeah, something like that.

Anyways Jack's friends have also known more than they were letting on, and they try to beat him up (it's part of the plan). They get pummeled because if there's one thing that Jack knows, it's how to fight. Jack, after killing the only friends he knew, is incredibly overcome with grief and anger. Combined with darkness, this helps him to become Chaos, which is the only thing that can prevent the Lufenians from resetting the world, because Chaos is the only thing they can't control. Despite this, they decided to put the "extraction point" (i.e. the portal back to Lufenia) in the Chaos Shrine, which is the only locale they didn't make. How ironic. Jack uses some dark voodoo magic to go through the portal and bring the Chaos corruption into Lufenia(?????) and battles Darkness Manifest in order to officially become Chaos. After doing that, he gets put back in the Chaos Shrine and sits upon his new throne. Apparently this was all a part of plan, which Jack originally came up with apparently. His friends (now implied to be the fiends(?)), greet him and say that they teleported him back about 2000 years in Cornelia in order to set up the events of the original Final Fantasy. How did they go back in time? How did Jack become Chaos over that time? Are Jack's friends now the fiends? The game ends with Jack sitting atop his dark throne and the silhouettes of the Warriors of Light are seen for a brief glimpse once the door to the Chaos Shrine is open. With Jack ready for the fight, the credits roll to the tune of "My Way" by Frank Sinatra. The End.

Uhhhh...

Part of the reason I highlighted all that in the first place was to show just how absurd this story truly is. It's hard to fully grasp all of it in the moment, but now you can truly believe me when I say this game's story is ridiculous. I think most people going into this game were expecting that, and I've seen a lot of name-calling thrown around at the story, saying it's "stupid". I'm not gonna necessarily disagree, but I think that's selling a tad short. The basic plot points are actually rather interesting. The story itself is very interesting/entertaining, if only because of it's absurdity. People only call it stupid because it's not a story one can really take seriously. The "just-so" explanations of these types of stories border too much on shattering one's suspension of disbelief that they just disconnect themselves entirely from it. Most people want to be able to just immersed in their media without having to question it or be constantly confused. Naturally, this creates some dissonance to this game already.

Here's the thing though; I think had this game been managed better, it probably would've been great. As I said, the ideas themselves are quite good, and the story does have some particularly great high points. The last few hours of the game are notable for that, and it has some of the best voice acting in the game from Jack and despite the shallowness of character writing in general, actually had a really good emotional core with Jack having to beat up his friends. I didn't even care that much about most of them but Jack's voice acting is so heart-wrenching that I almost teared up a little. There's a great balance of confusion, horror, sadness, and anger in voice that would be really hard to replicate, and I think it goes to show how underrated the VA in this game actually is. It would have been even better had these characters had more fleshed out motivations and personalities, but the moment of brilliance actually showed through, like a candle shrouded in darkness. There are other moments like this, like the Kraken dialogue, the in-game dialogue at Hallowed Massif, and some scenes with Astos, but those are few and far in-between. This leads me to my greatest gripe with Stranger of Paradise as a whole.

Problematic Pacing

This is one of the worst-paced games I have ever played hands-down. It's even worse than something like Spark the Electric Jester 3, which I had the opportunity to play recently. Both of these games try to rather ambitious stories and end up just back loading all the good parts. That's more excusable with Spark 3 considering it's pretty much made by one Brazilian guy. It's a very amateur title all around, and it's more excusable considering it's development context. Stranger of Paradise is a 20 hour game that could have been 10. Most of it is just going through the dungeons, which, on their own, isn't really that enjoyable. Most of the big story beats are just the intro, crystals, and the ending stuff. My theory is that they were going to have more planned for these areas but whatever happened wouldn't permit it. The problem with this in particular is that if this game were around 10 hours, I'd have an easier time recommending this to people because I'd say "well at least it's novel". 20 hours is a harder pill to swallow for most. It's worth noting that 20 hours is on the shorter side for RPGs, but even so that's going to deter more people than it attracts. I made a comparison to Revengeance earlier and that game had a sub-10 hour playtime that I think really helped it from fading into obscurity. Had it have been longer, I doubt so many people would have played it and would've wanted a sequel afterwards. Same goes with Luigi's Mansion. My point being, it's harder for a short game to overstay it's welcome, which is something Stranger of Paradise does.

"But it's meant to be ironic bro!"

Ignoring the fact that I don't think these writers were super aware of the writing rules they were actively breaking in the process of making this game, I don't find this game that satisfying even on a surface level. It leans too heavily on the serious side near the end for that to be the case for me. I'm only addressing this because I know most people who read this are going to tell me that the whole "point" of enjoying this game is to see Jack act unreasonably towards everyone and everything in this game. I'm not saying your story has to be deep or anything to be enjoyable, but this game did try to go deeper and I think it really dropped the ball. More like dropped the ball and tried to pick it up but kept kicking it away from itself, which is a surprisingly apt analogy for the experience of Stranger of Paradise as a whole.

Conclusion

I desperately wanted to love Stranger of Paradise. I refrained from spoiling myself on it and gave it the benefit of the doubt on every turn. I was excited to see something so sincere in a age where vidya has increasingly has become routine, safe, and stale. Although Stranger of Paradise had it's moments, it reminded me that sincere things aren't always necessarily good things. I would have loved to see what this game might've been with more time and effort, but as it stands Stranger of Paradise will fade into obscurity, and will be forgotten by most people as "the funny game with Chaos in it," because in reality, that's mostly all there is to it.

A Full, Comprehensive Guide to RSS/Atom
2 years, 2 months ago

We got a lot of ground to cover so let's get straight into this. If you want to know more about RSS, read my blog post about RSS.

Choose an RSS Reader.

This is your fist step. There are many RSS readers out there, but I have only used so many. In general, I recommend Newsboat if you are familiar in general with CLI programs. If not, then Liferea is a good choice. This is assuming you are using GNU+Linux of course. For Android you can use spaRSS.

Another recommendation in QuiteRSS, which does work on Windows and Mac, and NewsBlur seems to be a decent choice for iOS fans. While I don't like these operating systems, I'd rather people get on the RSS train now rather than later.

As for what not to use, please do not use Feedly or anything proprietary. That is the one thing I would recommend not to do. RSS was built off of open source projects, and if it's too succeed, it needs to stay that way. I could give you lots of reasons why it's better to have things open source, but I'm just going to assume that you know already or don't care.

If none of these suit your purposes for some reason, I would recommend looking for something on alternativeto.net.

RSS-Bridge

One of the best ways off the bat to get into RSS is to use RSS-Bridge, which is a webapp that can run on servers. Basically, you make your own (or use someone else's) RSS-Bridge which will create RSS/Atom links for you. Hooray!

As of the time of writing, it isn't flawless (the facebook bridge is pretty dead), but it's been good for many things for me, including Bandcamp, GOG, Gitea, Soundcloud, and more!

That being said, should I list an official (or better) method below, I highly recommend you use that instead. While RSS-bridge is very useful, it's been prone to bugs and generally speaking, individual sites' RSS feeds are more optimized to show their content in general. It's also nice not to have to rely on a middle-man's server which could go down randomly without you knowing it.

Blogs and Podcasts: Look for Signs

Blogs and Podcasts are immediately some of the most likely candidates to have an RSS feed. Usually, this is found somewhere by looking for the RSS logo on the website. However, it's worth noting that most blogs/podcasts already have an RSS feed built in. I've encountered this with nearly every one I've seen, even if the logo is nowhere to be found. If you want to know how you can find it, refer to the end section of this article about Raw HTML.

Forums (Imageboards, Simple Machines Forums, etc.)

Typically, older forums will have some sort of RSS functionality so that you can parse the index of a board or topic very easily. The RSS link is typically at the bottom of the page, listed in the FAQ, or may have that handy RSS logo. If you can't find it, I encourage you to refer to the end section of this article about Raw HTML.

LBRY/Odysee

I used to use a feed at https://lbryfeed.melroy.org until I figured out that Odysee had their own. The format is as follows:


https://odysee.com/$/rss/@[USERNAME]/[#]

The [USERNAME] and [#] parts are subject to change, based on what the URL of the channel is. For example, my Odysee channels URL is https://odysee.com/@the_extramundane:1, thus the corresponding RSS feed would be https://odysee.com/$/rss/@the_extramundane/1 (with [USERNAME] being what comes after the @ symbol and [#] being the number/letter after the colon.)

This method provides a stream link and parses ALL of the description of the video right in the convenience of your RSS Reader.

Github/Gitlab

If you want to see the latest commits for a Github or Gitlab project, then just follow the template below:


https://github.com/[USERNAME]/[REPO]/commits/master.atom

For example, https://github.com/theExtramundane/based.cooking/commits/master.atom, where theExtramundane is [USERNAME], and based.cooking is [REPO]. If you want releases, then go ahead and type in "releases" instead of "commits" in the URL.

If you just want to follow a particular user's activity, then simply type in https://github.com/[USER].atom, where [USER] is the username of a Github account.

There is also an option to get a "private feed", which can be done by logging into your Github account and scrolling to the bottom of your dashboard. This feed gives you events from people you follow with your Github account and repositories you watch (or star). Since this is obviously very dependent on an account-by-account basis, it goes without saying you can't use this method without having a Github account of some kind.

All of what I've described here should work with Gitlab as well, with github.com obviously being changed to gitlab.com.

Instagram (via Bibliogram)

Like most social medias sites, Instagram has no native RSS support of any sort. However, there are alternative means for such things. Introducing...

Bibliogram!

How does it work? Well, simply put, Bibliogram is something you can run a server (or you can use someone else's site) in order to access Instagram accounts through a different "front-end". It's basically an Instagram proxy, and better yet, it has Atom feeds. All you have to do is enter the username of the person you want to subscribe to in the search bar, and then click on the button where it says "Atom" on it in big letters.

You can find a list of instances here. Make sure that you pick an instance (i.e. "site") that has feeds enabled.

Reddit

Well I don't exactly know what you want from Reddit but ok. Regarding Reddit, there are actually a surprising amount of options. Reddit has actually kept a lot of RSS support for nearly every facet of their site. Most of it boils down to having a specific format appended with /.rss. For example, to get the frontpage of Reddit (🤮), simply type in https://reddit.com/.rss.

However, assuming you are a decent human being who does not browse the front page of Reddit, you probably just want to follow a select subreddit or two. Here's a few ways how:

For an RSS feed of a subreddit with the "hot" sort order:


https://www.reddit.com/r/[SUBREDDIT]/.rss

For an RSS feed of a subreddit with a preferred sort order (E.g. "new", "rising", "controversial", etc.):


https://www.reddit.com/r/[SUBREDDIT]/[SORT-ORDER]/.rss?sort=[SORT-ORDER]

You can even see specific user submissions by using their username:


https://www.reddit.com/user/[USERNAME]/submitted/.rss

There's even an option to look at new comments in a single post on a subreddit, in case you need to keep up with a pinned/slow post:


https://www.reddit.com/r/[SUBREDDIT]/comments/[SIX-CHARACTER-POST-ID]/.rss

That character ID is in the URL of the post, so just look out for what looks like a bunch of random letters and/or numbers in between two slashes

Even more?

Yes, there are even more ways to use RSS feeds for Reddit, but for brevity's sake (and because someone else already made it,) I'll just link to the article right here. If that link ever goes down then I'll post a mirror of it on my site.

Twitter (via Nitter)

I know that many a person would like to remove themselves from Twitter without missing the good stuff. Fortunately, there is a solution, much similar to Bibliogram, called Nitter, an alternative front-end to Twitter, which has RSS feeds. Simply go to a profile and you like and look for the RSS button in the top corner, as shown in the video below.

Alternatively, you can use this format as guide if you want a more manual approach:


https://[DOMAIN-NAME]/[USER]/rss

The [DOMAIN-NAME] is just the domain of the instance you'd like to use. For example, the official instance is nitter.net, so if I wanted to follow @NetHistorian ([USER]) on Twitter using nitter.net's RSS feed, I would type in https://nitter.net/NetHistorian/rss.

A Word to the Wise...

I have to warn you a little when I say that (chances are) your feed will become bloated rather quickly if you follow a lot of Twitter feeds and such. This is partly just due to the nature of the site, but I wanted to mention it. Obviously, not everyone on Twitter posts every day and such but it's worth keeping in mind. If you do it like I did, then you're gonna see real quick who you like on Twitter and who you don't.

YouTube

It's true, YouTube still has RSS feeds, although you can't find them explicitly. You're gonna have to use another URL format.

Now, this method is a little more obtuse. When you are on a channel's homepage, you are going to want to look at the URL, and hopefully, you will see that URL prepended with https://www.youtube.com/channel/... or https://www.youtube.com/user/.... After that, you should see a string of alphanumeric characters. If the URL has channel in it, then it's a YouTube channel's Channel ID. If it has user in it, then it's a User ID. In order to make an RSS feed, we need the channel or user ID. Here's the format:


https://www.youtube.com/feeds/videos.xml?channel_id=[CHANNEL-ID]
https://www.youtube.com/feeds/videos.xml?user_id=[USER-ID]

If it wasn't completely obvious, you insert the repsective channel/user ID into the URL, and that's your RSS feed.

YouTube (via Invidious)

Invidious, much like Bibliogram and Nitter, is an alternative YouTube front-end that allows you to watch YouTube videos on an instance. However, it's rather buggy as of writing, and it isn't really better than just using YouTube's RSS feed outright, although it does offer it's own. If YouTube removes it's RSS functionality in the future (which is a decent possibility), then either this or using RSS-Bridge would probably be the next best thing.

Sorting YouTube Channels

Another thing worth noting is that these IDs (at least in a file), have no names outright associated with them, at least not in URL form. In a file with all these URLs, it can be hard to sort and know which channels are which (especially if you have a lot of them). I guess this applies more to Newsboat users like myself or if you have dedicated URL file for your reader, but I just wanted to spread the good and say sort these using tags or comments or whatever you can, cause I should have.

CHEAT MODE ENGAGE

Finding a Feed in the Raw HTML Jungle

If you can't find a feed outright on a site you think has it, (or even a site you don't,) then you can do a final test and pull up the Raw HTML. Essentially, this is the source code of the site, and I mentioned this in my previous article about RSS. If you aren't a techie person, don't worry. It's actually a lot more simple than you think!

Here's the steps in order:

  1. Go into a web browser and bring up the website of something you want to keep tabs on. It could be an official craft soda website, some random blog, or a software project you want to know more about.
  2. Press Ctrl+u on you keyboard. You should have a new tab open with Raw HTML code. If you are seeing a lot of angle-brackets (﹤﹥), then you are in the right place.
  3. Press Ctrl+f on your keyboard. This will give you a webpage search prompt. Try typing in the following words in the search bar:
    • rss
    • atom
    • xml
    • feed

If you come up short with any of these keywords, then chances are this website doesn't have RSS.

Conclusion

I hope you found this guide very helpful. If you did, consider subscribing to my RSS feed. I have more plans to further people's knowledge of RSS, but for now I'd say this about raps it up. I hope that RSS gives you more time to look at what you like, and less time getting distracted by things that don't matter as much.

The 5 W's of RSS and Atom
2 years, 2 months ago

What?

RSS (Really Simple Syndication) and Atom are both internet protocols designed to give you "feeds" from all sorts of different websites. This is very similar to the average social media feed you might see while scrolling down a social media app, except RSS/Atom need a "reader". A RSS reader just takes RSS/Atom links from websites, and then makes them easy to read and scroll through. Functionally, it's very similar to a blog, with each "post" having it's own seperate section with links, images, and the link. Here's an example of an RSS link, and an example of an atom link.

https://extramundane.xyz/rss.xml
https://www.w3.org/blog/news/feed/atom

Now, if you try to go these links in your browser, chances are that you'll see a bunch of code you don't understand (in Firefox it looks a little different). If so, that's ok! RSS and Atom feeds use this code looking stuff (Extensible Markup Language(XML)) to make it look pretty inside your RSS reader, like shown below.

That's a little cramped, but on a wide screen display if gives you lots of options to access all sorts of feeds at once. Not just blogs, but podcasts, storefronts, and even social media, all without an account!

Who-

made it? Well gee, I'm glad you asked. In short, RSS has it's roots in the early days of web syndication (I'm talking mid-1990's) where companies like Apple wanted to create ways to gain lots of information about other websites fast and conveniently. This eventually led into making the Meta Content Framework (MCF), which was Apple's attempt at this. Eventually, the co-creator of XML (the markup language I talked about earlier) decided to extend MCF into an XML application, which became a standard adopted by the World Wide Web Consortium (W3C). Microsoft made something similar, eventually this led to a protocol called the Resource Description Framework (RDF), and then the first beta version of RSS (also called RDF Site Summary) was born. Eventually, some guy made Atom which was designed to be a better RSS and blah blah blah...

As for who made it, it's hard to say. As for most programming projects (especially those that are open source), it's more of a community endeavor than anything else. It took the cooperation and adoption of tons of sites and companies to make it usuable in the first place, which is, ironically, something harder to find these days on the internet.

When?

RSS and Atom were at their peak in the mid 2000's. Back then, it was everywhere. RSS was used to check on forums, newsites, comments on newsites and forums, blogs, YouTube (they actually still have RSS functionality to this day), literally everything had that RSS logo slapped on their site somewhere. Even web browsers straight up just integrated them into the browser itself. Even torrenting software integrated RSS to let you automatically download the newest items on the RSS feed. The list goes on.

Then everything changed with Facebook and Twitter.

Those sites did have RSS feeds at first, but eventually they removed support. Eventually, very popular readers like Shiira, FeedDemon, and Google Reader (extremely popular) was discontinued in 2013 due to RSS declining in popularity. Eventually it was removed from all major browsers, leaving us with Internet Explorer as the most popular one to keep RSS support. Big win.

Where?

Well, sites that still promote RSS usually have that orange logo somewhere on their website, or just the logo. Actually, it's worth noting that most blog sites/older sites have RSS built-in to the website, even if it's not actively promoted. I can't tell you how many times I haven't seen RSS for a site I wanted to follow, only to press Ctrl+u, then press Ctrl+f and type in "rss", "xml", or "atom" and then find a link for an RSS URL (that's actually the method I use with the atom link example I used up above).

Why?

Well that's just the million dollar question ain't it?

Let me be clear; I do not like social media. I find it to be insanely manipulative and built to be addicting and take advantage of human vice. That may sound pretty dark to some of you, but after what I saw on Twitter last year, I can't think of it any other way. Everytime I see someone log onto to YouTube on their phone to watch just one video, then it always lead to another, and another, and another, and then thirty minutes have gone by.

However, I am aware of the talent, artistry, and wisdom that appears on some of those platforms. While I wish they were not on them, Many people who would not like to use social media actively would still like to keep up with their favorite personalities, artists, etc. This is where something like RSS comes into play.

RSS doesn't require an account to get started. It doesn't have some weird algorithm that decides what you get to see, and it's not gonna collect your personal data to some centralized server, because there is no centralized server you are reporting to, and no relevant data to give. While not intentionally built as such, it's something that respects your privacy and your desire to actually see and view what you want without ads or website bloat slowing down your browser or anything like that. It offers freedom. That's why you should use it.

How?

Sorry, that's not a part of the 5 W's! However, I have a guide that may solve that question perfectly for you...

Additional Reading

Brian Barrett's Article from 2018 entitled "It's Time for an RSS Revival"
A Guide to Using RSS to Replace Social Media by Luke Smith
How to Use RSS by Jacob Smith
A Rant from the RSS Bridge Project

This Not a Conspiracy (A Documentary Review)
2 years, 4 months ago

I don't believe I've mentioned it before, but I am quite the fan of Kirby Ferguson's work. For those of you who don't know, Mr. Ferguson is a filmmaker of sorts who made this great mini-series back in the early 2010's called Everything is a Remix.. In this series, he basically explains how art, and to a larger extent thought itself is memetic. We take ideas that are established and copy, combine, and transform them. It's all for free on his youtube channel. Overall I was impressed with his profundity and expert editing, so I was relatively excited when I learned he had a new series he made, titled This is Not a Conspiracy.

The Big Picture

In a nutshell, This is Not a Conspiracy talks about how thought patterns from The Enlightenment thinkers of early America shaped most of the conspiratorial thought going forward in the nation, including in the country's roots. They believed that intention defined human events as the reason why things happen (hence the oft repeated phrase "Cui bono?"). This thinking, while critical, is often unnecessary and overexaggerated to a point where Occam's Razor is typically a more sensible option. Human problems and systems are complex. You might be able to explain how things rotate around a floating plasma ball but predicting human events is an insanely more difficult task, due to the dynamicness of human beings. There are simply too many variables to come to a sensible conclusion. In time, these theories are debunked, pruned, and ultimately shelved. Not to say there aren't conspiratorial forces in this world, but not all human events can be controlled by a proverbial puppet master.

Now that I've summarized pretty much the entire thing, let me just say that the film itself

Sucked.

This is going to be more of a video editing review so bear with me.

I was genuinely shocked by how little of the video footage pertained to what Ferguson was actually talking about. It tended to use a large amount of stock footage, and while there were clips from films, serializations, and video games (only two by my count), they were never used really cleverly with interesting transitions and added visual aid. Most of the visuals came off as generic filler used to pad out what Ferguson was saying, which is really a shame because he presents a lot of good ideas. However, the visuals just make it more unegaging and I found myself tuning out several times throughout this 2 hour slog. It's the only series I think I've seen recently that I'd call "overedited". Too much random visual information to maintain a solid focus. I can think of a handful of editors that can engage people properly but even people like Luke Smith can create entertaining slideshow-esque presentations if you just show relevant, engaging images that pertain and enhance what you are talking about. Heck, I used that exact style for my first video ever and I received some complements on visuals, despite the simplicity.

Overall, I was insanely disappointed by how amateurish the editing and visuals felt, along with audio, which also lacked any flair and consisted of stock sounds and music as well. Now, the topics were actually genuinely well researched, but I feel are somewhat inconsequential to the main message, which is that conspiratorial thinking is an inefficient and inaccurate way to view to world for what it really is; a network of complex systems. I literally gave you a summary up there that more than suffices. I even mentioned Luke Smith earlier, who literally made an article about this very topic a while ago. His article is honestly a lot better than this documentary if you are interested.

Speaking of which, this documentary series costs money on top of that. I think I paid $40 for a blu-ray copy. I admit I was suckered in. It only arrived recently (I assume the pandemic did something to shipping). Mr. Ferguson even sent me a note with the order.

I don't think Mr. Ferguson is even a fraud or anything. In the right context his is incredibly profound. I just don't like this series in particular. If you haven't already, go watch Everything is a Remix. If you have, you aren't missing out on much over here.

Site Update 7/6/2021
2 years, 4 months ago

For any who are interested, you've probably been wondering why this blog has been dead beyond comparision. Simply put, I've been rather focused on summer activities (and my job) that the time dedicated to my website and channel has become a very secondary thing. I'm still in "the game", I just had to take a sabbotical, more or less.

Anyways, as I'm typing this from a deck in a backyard I just figured I'd start talking more here and get to work on another video project. That's more or less it.

Although I will say for anyone who's trying to contact me from email, I've been getting an SSL error for my domain that says the certificate has expired (despite the fact I have certbot renew it automatically), so if you do (or don't) know something about that, I can be contacted on Matrix. I'll update that info on my contacts page (if it isn't there already).

Website Changes and an Addendum to Dangers of DRM
2 years, 7 months ago

As you might have seen from last time, I've made some changes to this website, mainly the fact that I actually updated the homepage and such. I know have put links to my Odysee, YouTube, blog, and rss feed up there for everyone to see. Also, I actually made this website look nice.

In addition, I also added a webring to this site, courtesy of the fellow anons on LainChan so be sure to check that out if you'd like. They have good website taste and I'd like to encourage a less-bloated internet experience for all, and also promote some guys who deserve it.

In addition to that, I also made an addendum to my DRM video going over some extra research and points I found during the production of that video. Namely some alternate solutions and food for thought I didn't mention last time. Overall, I want the main takeaway to be that bad DRM practices reduce artists' incentive to create and that if there's going to be DRM moving forward, then it needs to respect user privacy and be sensible solution. I specifically cited Jacob Smith's article on the subject because he's the only one I've come across online that proposes something that can be considered a decent middle ground and more sustainable than the current online-only, install spyware approach that most companies do nowadays.

Anyways, I plan to do lots more videos, some in this vain, some not. I'd like to go over image magick and ffmpeg one of these days for basic video editing/image editing techniques (might make some bash scripts for those), a normie's guide to RSS and probably some game stuff as well. Not something dumb like basic run-of-the-mill review stuff; probably video essay things or observations about the industry, over maybe just observations about the entertainment industry in general. I seek to be profound in what I do, should I do a more long-form video essay like that. Hopefully stutter less and trim the fat and make something really thought-provoking. That, and/or have some fun here and there.

Also, I wanna set up a PayPal of sorts or some non-crypto donation method sometime in the future to (namely) help get better equipment (all FOSS of course), and do better, cooler stuff. We'll see how that goes.

That's pretty much all for now, hopefully more and better things to come, so stay tuned.

First Blog Post
2 years, 8 months ago

One of the first things I wanted to try when I started this website was to develop a blog. Now, I have one.

Honestly, I'm not exactly sure how much I'm going to use this, but it's really nice to have as an option. Now I don't have to worry about an abritrary ban on someplace, not that I'm particularly extreme (or at least I don't think so). It's all my own. It's a nice feeling.

Anyways I stole this blog system from Luke Smith (you can check out his git repository for it) so check him out if you're interested. Actually, check him out even if you aren't interested. He's pretty cool.

As this site continues to develop and I have more ideas I'll post more and have more things to say. I'm also setting up ways of monetization in order to further expand my efforts; hopefully to gain better equipment, hire editors for projects, make sure I don't starve, etc. Right now I have crypto wallets set up but I'll have more in the future.

Also if you haven't seen it already check out my first upload about DRM. I'm going to be making an addendum to that video fixing some mistakes and mentioning other things and new research I found. The future won't be all DRM stuff; I'm have lots of ideas, but for now tech is really the main interest. I'm rather fond of video games and entertainment in general as well. I actually have a backloggery showing all the games I've played if you're interested.

That's all for now. I have a lot to set up so please be patient. Here are some ideas for the near future:

  • Get a LBRY/Odysee account (they still have to verify me).
  • Get better video/audio/gaeming equipment. All FOSS.
  • (Hopefully) Develop a little video editing skills.
  • Be able to better promote channels and people who deserve recognition.
  • Do the occasional stream. Where that will be is TBD.
    • Right now, I'm leaning on dlive only because it's not Twitch and it has a name that some souls on planet earth know about.
    • I know YouTube exists but last I checked YouTube ain't exactly a friend.
    • LBRY/Odysee seem like they'll get streaming soon and PeerTube has just started streaming, but I have yet to fully embrace those sites.
  • One day I hope to start large creative projects? What kind of creative projects? Only time will tell...

I hope to do some amazing stuff in the future. Maybe change the world for the better. But for now, I start here in this blog post.

Actually now that I think about it, I could write some short stories with this blog. That would be fun.

Guest Questions, I
1 year, 4 months ago

Recently someone left a comment on my website with the following message:

I wonder how your website is setup, not the html but the server side of things like

- os you run
- web server
- those weird .shtml files you have
- do you use ansible or do you manually install it
- is it self hosted or is it a vps
- how are you paying for domains
- and possibly something importent i missed?

I know i could check some of these things my self but there are ways to obfuscate them for instance whois privacy and nginx mirror/cache, i would love a blog post about this if you dont mind.

I will be glad to answer these!

OS

The OS of the system really doesn't matter but right now this website is on a Debian server. The reason I write that it doesn't matter is because jakesthoughts.xyz went from CentOS -> Arch -> FreeBSD -> Debian and in the future I will probably go to another OS. Once you understand 'leenix' enough you understand it for nearly every distro. The difference at that point becomes 'distro-isms'.

That said, don't use 'bleeding edge' distros because new updates can have bugs that could lead to your stuff getting hacked (poser's word for crack).

Webserver

Jakesthoughts.xyz is proxyed from Apache to NGINX.

I do this because Apache does CGI and NGINX does not. If this seems dumb and wasteful then you are correct. I know that NGINX has fcgi but I've had it set up in this way since ... transferring over to Debian and have been meaning to 'fix it' since I set it up. I'll fix this eventually, probably just removing NGINX from the whole mess.

It resulted like this because I badly wanted to use CGI and when I first started using ganoo/leenix I could not figure out how to get NGINX to do CGI nor could I figure out how to proxy to Apache, so I just used Apache which does CGI if you uncomment some CGI modules and write which file types should run as CGI, among other details I do not recall.

Most people just recommend NGINX. I have no strong preference but will note that Apache has specific features that can be useful.

Weird .shtml files

In my previous section I wrote `which file types should run as CGI', these .shtml files were that. I no longer do that because it '.shtml' looks ugly but instead just treat each page as '.html' a CGI script using Server Side Includes which runs CGI then returns what it outputs the onto page.

If the last sentence seemed really dumb then you are correct, there is a 'XBitHack' option which treats '.html' with the executable bit set as needing CGI/Includes treatment but I apparently do not use it.

You're not actually supposed to find the .shtml files, I suppose I left links linking to them by accident somewhere.

Ansible or manual install

I manually install everything, I haven't experimented with Ansible yet. It really isn't so hard to install everything when you know the software somewhat. The 'hard part', maybe, is when you are unfamiliar with the 'distro-isms'.

Debian for instance puts all the modules in their own directory and has 'apache2.conf' use files in 'mods/enabled/' which are just symlinked to something in 'mods/available/'. Every other distro I've used just has their 'httpd.conf' with each unused module commented out. With FreeBSD, if you install a module, the relevant details end up in a module directory and 'httpd.conf' has already been configured to load installed modules from that directory.

Self host or VPS

At the moment it is VPS but I am very strongly considering self-hosting again.

When jakesthouhts.xyz was on Arch, that was actually self-hosted from a Raspberry PI (again maybe do not use 'bleeding edge' for services).

Let's do the math:

Raspberry Pi 4 with 4GB of memory
    Tech:
        1000f a CPU that maybe isn't the best
        4GB RAM
        You can have storage size of anything that the RPI will take
        Unlimited bandwidth implied (except maybe what is imposed by an ISP (rip Americans))
        Access to the hardware
        Maybe you have a static IPv4 Address
    Cost:
        One time payment to get the SBC
        Payment for the other things like power supply and SD card
        Electric bill maybe go up a few dollars
    Fun:
        Can hide at your friends house and use their internet to host your stuff for 'free'

Current VPS that is hosting jakesthoughts.xyz:
    Tech:
        150f a good CPU
        512MB RAM
        10 GB storage
        Unlimited Bandwidth explicitly mentioned
        Guest Machine that is ran along many other Guest Machines
        No hardware access
        Guaranteed static IPv4 Address
    Cost:
        Depends. I pay about 3 dollars a month for what is in 'Tech'. Better tech = more money spent.
    Not Fun:
        VPS provider can take away your VPS for any reason
        Sometimes the VPS node goes down and you have to wait hours for it to go back up
        FBI/your-local-equivalent can raid your VPS provider and force them to give a copy of *everything*

VPSs have a use but using one just to host your website is very much overkill. It is cheaper to just hook up an unused computer to a router and just have that as the server. Plus you probably will have significantly better tech than what a VPS provides.

Maybe the issue most people will have with self-hosting will be related to internet reasons. Not every ISP gives their customers a dedicated IPv4 address and even with IPv6 becoming a thing, some ISPs cannot figure it out - even though they offer it to their customers.

VPS and self-hosting requires almost the same level of technical skill. Maybe with VPS, you can ask for tech support but I've never done that.

If you are wanting to do email then using VPS is probably the way to go because it is likely that your own ISP put your IP address on a blacklist and probably will not allow you to change the rDNS for your IP address.

Obviously hosting from your own house can be bad, since if you get 'HackerNews-ed' or whatever, then your home's IP address will be DDOS by people trying to visit. People might intentionally try to DDOS just for lulz.

This is something you will have to figure out yourself. If you do the self-hosting thing, make sure to put your stuff on a different vlan.

One idea I've considered but am not totally convinced by is having a VPS just reverse proxy what you serve on your home stuff.

How am I paying for domains

Normally.

Anything important

Whois protection should be offered by your domain registar, by default, for free. In my opinion, some registers like GoDaddy will make you pay money for it. GoDaddy, in my opinion, is a dogshit domain registrar who will call you in an attempt to up-sell stuff. In my opinion, do not use GoDaddy or transfer away from them.

Aside from that be mindful of the reputations of services that you must work with, VPS, domain registrars, etc. Some of them are ran by incompetent people, who have nice epic leaks that spill all your PII for the world to look at.

Some people might think: 'You should NEVER trust a company with your PII!' Well, you never really expect it to happen until it does, then you realize the amount of faith you put in random companies. "Do I really want to sign up with this company using the email address of: 'firstname.lastname.DoB@email.com'?"

I don't use NGINX mirroring or any kind of caching (besides maybe client caching, but I leave that to default settings), my websites do not get visited enough for me to even consider it.

Why dark net?

I put my websites on the 'deep web', so they can be visited via alternative routes, in the event of a DNS failure or I decide it is time to stop paying for my domain name or if ICANN/tld Owner decides to yank a domain from me for vague reasons which are never explained (This has happened to someone I know).

Honestly, a replacement for decentralized DNS needs to come soon.

Consider your tld

I am making a point to never buy another '.xyz' tld because the owner can yank your domain and there is nothing you can do about it. Jakesthoughts.xyz will one day be transferred over to some other domain.

Additionally, some tlds are seen as 'unprofessional' and email deliverablilty can be a hassle. For example. '.top' tld is considered suspicious by spam-assassin, a program that detects spam mail. Some services, like Steam, will not accept a '.top' email domain as your email address. If some firewall programs block '.xyz' tld entirely, so you can be sure they will block other tlds as well.

Also, some SMS/IM apps will not even display messages that contains a 'bad' tld, like jakesthoughts.xyz.

https://www.spotvirtual.com/blog/the-perils-of-an-xyz-domain/

The Tor project has made a PDF where they list each tld and rank them but I cannot seem to find it at the moment.

OpenNIC

I want to at least touch on OpenNIC, you can get tlds from them for free but the offset is you need to convince pretty much everyone to use a DNS server that supports OpenNIC tlds. Good luck.

DNS itself

Your domain registrar will probably do DNS for you. You can switch over to different DNS server, like FreeDNS from Afraid.Org or even yourself (I am not really sure what the purpose of that is besides bragging rights and having to do more maintenance on your stuff).

At first DNS is extremely confusing, but the key details are: A/AAAA points to your IPv4/IPv6 address respectively. For 900f use cases that should be sufficient, there is also CNAME which just tells the DNS software to look at the CNAME result which I sometimes do for 'wildcard' subdomains.

Don't worry about breaking your DNS, you can always set it to something later, your domain will not cease to exist if you mess something up.

I cannot think of anything else so I guess that about wraps this article up. Thank you for the question, `random person from irc'!

App thoughts on mirroring text or phone calls
1 year, 9 months ago

In one of my previous blog posts I mentioned writing an app for the purpose of 'forwarding' text and phone calls.

There is such a thing as call forwarding where phone calls to a number gets redirected/forwarded to another number. This is not what I mean.

What I meant was mirroring: a call to one device (with an actual number) will be a call on all associated devices. A call from any associated devices will call from the one device that actually has a phone number. The text and phone state of the primary device (the one with the number) will be mirrored on to the other devices.

I will document my current thoughts on this app, maybe someone else can go far with it (and hopefully release the project on F-Droid). I won't touch it for a while since I am dealing with other another project.

I am writing this because I haven't found any apps that do this. If it exists (and is free software), please let me know so I don't have actually have to learn Java.

Limitations

Connectivity

Each device needs to be able to contact the server in order to even function. In an office or a home setting this is probably not an issue since WiFi will most likely be available. When out and about, connectivity can be an issue, even when using hotspot as the range of hotspot likely is under 20 yards and is easily thwarted by cars and nature and bricks, unless some contraption is used, perhaps a yagi antenna, or some other antenna, which requires preparation.

It is not a guarantee that mobile devices will be able to even physically connect to the antenna to broadcast hotspot or to 'receive internet' somehow, except perhaps with a usb-c to female usb port which the antenna connects to and even then, perhaps Android won't know what to do the antenna. To be honest, I don't foresee many cases where the perfect situation will occur. I do know that a lot of places offer 'free' (as in beer) WiFi.

But in the event connectivity can be found, what about latency and all these other restraints? A server 'far away' relatively speaking, could have to spend a REALLY long time passing voice data along (imagine constantly interrupting each other because the delay is like 2 seconds).

What about using Bluetooth?

The range of Bluetooth isn't long enough and from what I've read, generally what uses Bluetooth would interfere with whatever uses hotspot or 'xG' or WiFi. Also, in Bluetooth terminology there is 'Receiver' and 'Transmitter' and Android apparently doesn't like to be the receiver.

Google / 'Owner'

The 'owner' of the device (not the person who rents the device and has to ask permission to use it and give up certain rights or give Google/some-evil-company certain rights) may decide that this 'mirroring' thing is bad and somehow violates some random vague terms of their contract. They may put restrictions on such app capabilities, so it is possible that this project is already dead in the water. However, given that XMPP apps exist, I find this to be unlikely. The main thing, that I imagine that they might take offense to is another device commanding the device with 'cellular' capabilities to do things like calling and texting.

Software

It is possible, for whatever reason, that Android without being rooted will not allow audio from a 'phone call' to go to another location.

Another possible problem, directing audio from another source (the other phone's microphone being sent via 'internet') so that the other party can hear what is being said.

Terms

Server: The device/hardware that relays messages and statuses to other devices.

Client: All connected devices that receive from and transmit to the server.

Client 'Data': The connected device that actually has a phone number and can send calls and SMS.

Client 'No Data': The connected device that does not have a working phone number and cannot send calls and SMS by itself.

S2C: Server to Client.

C2S: Client to Server.

Assumptions

A server simply mean the software that will relay messages and statues to other devices. It is not capable of client stuff. However, there should not really be anything stopping one from installing server and client software on the same device; thus making the device act both as a server and a client.

One will carry a 'non-data' device around in their pocket and leave a 'data' device behind. Both devices will somehow connect to the server.

A 'Data' Client will connect to the server through mobile data (assuming it already isn't the server) and the 'No Data' client would connect via Hotspot/WiFi and also connect to the server (assuming it isn't already the server).

Server Thoughts

The 'easiest' server configuration that I can think of is similar to how XMPP works; plainly a standalone server software and clients connect to the server. Outside of this, I have no clue how the server should operate.

I had ideas about how a phone could be a client and a server but quickly had issues in resolving things that would for certain show up.

  • When hotspot ends the devices will need to reconnect to a server some how.
  • The 'Data' Client will always need to be on and connected to the server, when it is down the whole mirroring system is down.
  • How would either of the phones get through NAT, as a Server? They almost certainly can't port forward due to ISP policies. Hmm.

Client Thoughts

Easiest way, without any real knowledge of what is required, seems like it would be to fork an already created SMS or Calling app and add 'mirroring' functionality to it. It would be best if there were two apps, one solely for SMS and one solely for calling, but I suppose I see nothing wrong with combining the two. The Apps should have 'server' option somewhere where they can specify where the server is, and what kind of client they are, 'Data' or 'No Data'. (It would be possible to write a desktop client too, which would allow one to send texts and call from desktop.)

S2C and C2S communication thoughts

I have no thoughts on what protocol they should or should not use, at the moment, besides some vague notion that VoIP could work for calling.

I do not have any thoughts on what data storage method text messages should be in or how they should be transmitted between clients.

Main contention point is for phone calls: Client 'Data' will need to both relay what the other party is saying, decode and transmit what Client 'No Data' says to the other party. Vice versa for Client 'No Data'. If there are more than one Client 'No Data' then I don't have a clue what should occur besides Client 'Data' should 'lock' speaking access to one Client. (Of course, Client 'Data' can speak to itself)

Call Mirroring seems like it would be the easiest to implement since it is just audio and you don't need to save it or anything. The Server will need to send the data to clients that need it.

There needs to be a case for the following:

  • Default option for when a phone call is happening but Client 'No Data' looses connection (... Hang up, I guess)
  • Probably some more important stuff as well, that I haven't thought of.

Potential for Abuse

If someone manages to associate their device with the server, they can do 'bad stuff.' Therefore, by default, the server needs to have reasonably good security policies for authorizing devices.

RE: This device is not eligible for actvation on the Cricket network
1 year, 9 months ago

I am less angry now.

Going phoneless was not an option, I suppose, since family members need to be able to contact me 'at all times'.

I've received a Samsung Galaxy A02S which I do not recommend anyone to buy. I hate Samsung now. I was indifferent but now I hate them.

One of the apps that Samsung preinstalled, literally not a joke, had 'The Great Reset' logo as its icon. I cannot 'disable' the 'Galaxy Store.' I've 'disabled' every Google App that I could and uninstalled the two that I was allowed to uninstall. (To my surprise, I was allow to use the phone without being forced to make a Google account or a Samsung account, however, Samsung did force me to agree to the Terms of Service and Privacy Policy just to even use the phone.)

But this is not why I hate Samsung. They've, or perhaps Cricket, removed the OEM unlock toggle so I cannot unlock the bootloader and root the device. I don't know who made this decision but I assign the blame to Samsung but I also hate Cricket too for forcing me to """"""upgrade"""""". ... There really was nothing wrong with the One Plus 6.

So, I am thinking about how to use my old phone without using the new phone and I've come up with a dumb solution. Really, the only thing I 'need' from the A02S is phone calling and texting (SMS, since Americans don't use instant chat apps, unless you count Apple's Messager app which confused my dad because he thought that you can send 'text' on Wifi and was surprised that Android couldn't and presumably now thinks Androids aren't as advanced as iPhone when it comes to messaging. Actually, most iPhone users I know don't know that Apple made their Messager app an Instant Chat which is why they always have their Wifi/Data turned on otherwise they will never receive 'texts' from iPhone users) and optionally when not at my house, data.

So when I'm out and about I will enable hotspot and use my old phone. When people text/call my 'new phone'..... IF the app exists, I will try to have it forward it to my old phone. If it doesn't ... hmm. Maybe I can write the app myself, can't be that hard? I know Perl so I'm probably already an expert in Java. If I end up writing it, I'll release it under a freedom respecting license and make it available to f-droid. In other words, you will not be forced to have a google account to download and use the app.

Honestly, A02S in every technical aspect, is worse than the One Plus 6, which is almost not an exaggeration except that the A02S has HD VOICE COMPATIBLE WITH CRICKET NETWORK. Is there even a good phone service provider out there that doesn't fuck their customers?

Disclaimer (aka: don't sue me, Cricket or Samsung): this blog post is an opinion and should not be used as authoritative fact on this topic.

This device is not eligible for actvation on the Cricket network
1 year, 9 months ago

It is a One Plus 6. Are you fucking kidding me? It can use 3G but it also can use 4G. I know that you are shutting down the 3G but did you really have to kill my phone number too?

To activate or continue using a device on the Cricket network, they will need an HD Voice-capable smartphone that is compatible with the Cricket HD Voice network. This includes HD Voice-capable devices from Cricket, and select BYOD (bring your own devices). Not all 4G LTE phones brought to Cricket will work on Cricket’s HD Voice network, unfortunately. Please know that they may be eligible for special offers if they choose to upgrade devices. They can dial 611 from their phones, or visit a Cricket Wireless store for assistance. For more information, you can check out the link provided:

Guess who's phone that was released in 2018 isn't compatible with the Cricket HD Voice network? :)

It's fine, I don't need a phone anyway, they are botnet.

Setting up cgit
1 year, 9 months ago

Setting up cgit is very easy. The only reason why I didn't before was because I had this crazy idea that somehow setting up software for gitting would be 'hard'.

As always, actually installing it, configuring* it, and using it is very very easy.

Anyway, it is possible to access my personal git page by navigating to git.jakesthoughts.xyz. Gemini bros, I don't have a location for you, my apologies. ... I've seen git repos on Gemini and they always seem goofy to me. I am not against adding a git repo for Gemini but I've started to hit a limit on how much memory this VPS can spare, 512MB (or 473.1MiB)... and I have 8.5MiB free as of this very moment. Big yikes. cgit is a CGI script so it runs every time someone access the domain meaning it only uses memory when it needs to. It is also written in C which helps.

Ok, I added a '*' next to configuring. Most likely, you want syntax highlighting and about tab/page right?

This part is not so straight forward. Let me be clear on this: in '/etc/cgitrc' the order of things matter. 'source-filter=' should be above 'scan-path='. And the 'about-filter=.../about-formatting.sh'... 'readme=' affects what script it will `exec` based on the file ending.

So if you decide that the about page should reflect the contents, of say, README.md then make sure the script that gets `exec` can actually run! I, for instance, had to install pip and use pip to install the markdown module.

Reading the man page helped to identify that 'clone-url' is what people would use to clone your repos.

/etc/gitrc
css=/cgit-css/cgit.css
logo=/cgit-css/cgit.png
enable-http-clone=1
virtual-root=/
readme=:README.md
about-filter=/usr/lib/cgit/filters/about-formatting.sh
enable-blame=1
clone-url=https://$HTTP_HOST/$CGIT_REPO_URL

source-filter=/usr/lib/cgit/filters/syntax-highlighting.sh
scan-path=/srv/git/

The reason I use /srv/git as the scan-path is because I symbolically linked to a directory in the home of a regular user. I could do this for any user and they would show up on the cgit index page.

To see what themes are available for the syntax highlighter, try '$ ls /usr/share/highligh/themes'. I am currently using 'peaksea'. Enable it with the '--style' flag.

SSH git tricks

The easiest way that I've found to use git:

Server: in the git directory, in my case ~/dev/,

  • $ mkdir git-repo
  • $ cd git-repo
  • $ git init --bare

Local: change directory as appropriate, $ ssh git clone ssh://username@remote-server:/home/username/dev/git-repo'

Suddenly, everything is set up for you. When you decide that it is time to push to the server:

  • $ git add .
  • $ git commit
  • $ git push

This is the easiest way that I've found to do gitting.

There is probably an easier way of doing it all. I am still new to gitting in general.

FEAR is a fun game
1 year, 9 months ago

F.E.A.R. is a fun game

In this blog post I will be talking about F.E.A.R. and it's sequels. A diligent observer will notice that I have listed F.E.A.R. as 'S Rank' in my 'game reviews' webpage (this will be the first one since putting up that webpage, almost a year ago) and have ranked all of its sequels as well but not as 'S Rank'. I played the DLCs again for the sole purpose of this review and realized that Extraction Point is a solid 'B Rank' and Persues Mandate is a solid 'A Rank'. F.E.A.R. 2 goes straight to 'D Rank' and F.E.A.R. 3 ends up at 'F Rank'.

If you never have played any of the sequels but you are a fan of shooters I recommend you to stop reading, lest you get spoiled, and actually play it. 'High Difficulty' for F.E.A.R., 'Normal Difficulty' for Extraction Point, and flucate between 'Hard Difficulty' and 'Easy Difficulty' for Perseus Mandate depending on the hostile(s). The reason I recommend this is based on how much fun I had playing each of the titles.

For F.E.A.R. 2 and F.E.A.R. 3 you can choose what you want, it doesn't matter. Both do not come even close to the candle that F.E.A.R. holds as they are F.E.A.R. only by name. Though I have beaten F.E.A.R. 2 on normal and 3 on hard difficulty I do not recommend it. For F.E.A.R. 3, playing as the... err... 'bad guy' makes the game much easier than playing as the 'good guy' character, due to the way they handle combat. I am unable to play F.E.A.R. 3 anymore on Linux due to DRM. Anything I say about F.E.A.R. 3 will be based on memory. Truthfully, any complaints about F.E.A.R. 2 will apply to F.E.A.R. 3, this I have no doubt about.

Playing F.E.A.R. and the expansions with Steam's Proton works fine; however, with Extraction Point and Perseus Mandate you must manually edit a config file to get the screen resolution you want. For convenience, these commands will help you find the correct file: find ./ | grep settings.cfg. Those commands assume that your current working directory is somewhere above where you installed F.E.A.R.. Additionally, the game should be crisp - as in the microsecond you start or stop moving the mouse the game responds accordingly. If you notice a 'floaty' experience, maybe adjust FSAA and texture filtering.

Among the gamer community I notice that people view F.E.A.R. as a scary game, I mean the box art is spooky... The name of the game leaves a lot to the imagination: Why did they name the game F.E.A.R.? Is that the emotion I will experience the most when playing this game?

Some people are scared of scary things. They avoid being scared, which is understandable. However, in F.E.A.R., Alma is not a scary thing. Neither is Fettel, neither is any of your buddies-now-ghost. There are jump-scares but they are hardly worth freaking out about, they are just unexpected. What is scary is a soldier accidentally jump scaring you; that is the most scariest part of the whole game because they can actually do damage to the player. But one do not play F.E.A.R. to be scared, one plays F.E.A.R. to kill the enemy in a manner which not only makes one feel like a God among men, but also because of the beauty in it. At least with the first F.E.A.R., anyhow.

I looked at the price of F.E.A.R. on Steam and learned something incredibly sad. Warner Bros have locked the game behind a bundle and you cannot buy the game independently. You must shell out $55 and get the bundle to play this game on steam;. On GOG, 'F.E.A.R. Platinum' is $10 which contains F.E.A.R. and its expansions. Warning to non-Europeans: GOG is European you may have to spend extra money because of this. Reviews and complaints on the F.E.A.R. forum(?) page on GOG suggest that DRM gets installed... No winning for people who want to own the game legitimately, eh?

Actually playing F.E.A.R. (spoilers beyond this point)

After fighting, when one inspects the battleground there are combat signs everywhere, the walls plastered in bullet decal effects, enemy bodies bloodied and dead, objects and items strewn about... etc. My wish is that these things stayed long after the combat has ended.

It is easy to get turned around in F.E.A.R. and when you walk down a pristine hallway... <i>This looks familiar... Have I fought here? Had there been obvious combat signs I would know immediately I am going backwards. Thankfully, in F.E.A.R. it is usually clear where to go. Sometimes it is not and you spend like 10 minutes looking for where to go only to find you need to climb a ladder. A lot of care has went into the level design not only for driving the player forward (usually) but also for the AI to take advantage of.

The AI in F.E.A.R. is truly one-of-a-kind, in a good way. Fighting them ACTUALLY feels good... Of course, just reading what I have to say about the AI will do it no justice! You have to experience it to enjoy it! When playing a different game you feel like you are fighting the computer. They make semi-predictable moves and do things that are just... Well, in multiplayer no one would do those things. However, in F.E.A.R. it feels different. Players might do these things! A player definitely would flank you, as the AI in this game is fond of doing! The enemy combatant provides 'cover' fire for their buddies and it doesn't matter if its effective or not because it IS happening. The player FEELS suppressed because he IS suppressed and not because some lanky function that detects the amount of bullets coming near the player and applies a 'suppressed' effect. Of course, if you are new to video games, enemies shooting at you mean nothing; you are not the one who dies after all. But if you treat the game like it's REAL LIFE (lol)...

I yell something about covering fire. My squad runs forward to flank -- wait a minute! WTF is that hostile doing? He ran right into my bullets! He's in the OPEN! "Waste this DUMBASS!" I telepathically communicate to my brothers. The entire squad lights up the hostile with bullets and -- wow! He can apply medkits really fast! He goes down quickly. He must have been low on medkits because... Well, no one sane does what he did! We crowd his body and yup, that is the guy that somehow killed over 500 of us. 'How did he kill so many of us with such poor tactics?' I think to myself. Or I would, if I wasn't a replica soldier whose only line of thought is completing the objective.

F.E.A.R. is such a fun game and it frustrates me that other shooters are not as good as this one is. It was released in 2005 and somehow I find this game to be way more enjoyable than others. However, that is not to say that F.E.A.R. is a perfect game; there are some enemies that are obnoxious.

I will list the most annoying enemies from high to low annoyance: 1. The 'Y's, 2. The Mech, 3. The Ninjas, 4. The Turrets. The 'Y' enemy is the most annoying because it can fly and it will cause you to waste several medkits, per group (2 in a group). I found that 3 shots from the Particle Weapon will kill them in hard difficulty. You can aim at their 'limbs' as well. The mech enemy is also annoying; even though the player fights around four of them, they still do much damage to the player. I found that five sticky grenades will kill them instantly or be very close to killing them. I used a rocket launcher at them but that does not seem to do much damage, as a rocket will miss the mech unless the range is <10 yards (the mech can and often runs 'left' or 'right' and the rockets don't fly fast enough). The ninjas appear only twice through out the first game but they annoy me greatly. 4. Turrets. There is a way to cheese them and kill them without taking damage but it takes some time.

Weapons in F.E.A.R. are good as well. The Player can only carry three at a time and at the beginning will look like this: Pistol, SMG, Rifle. After some time it might look like this: Shotgun, Rifle, and 'heavy' weapon. I have nothing really interesting to say about this but will stress that just because you see a rocket launcher doesn't mean you must or that you even should drop one of your other firearms. The rifle is a viable weapon towards the end. I assume the pistol is as well, but I always drop it to replace it with a weapon with higher DPS like shotgun. The pistol doesn't shoot fast enough for my liking. There is a scoped weapon which actually does decent damage against 'heavies'. I greatly prefer the first rifle you find. It really does work throughout the game.

When one looks at the environment in F.E.A.R.... yeah it is not exactly pretty, but it gets the job done. If this game had Halo Combat Evolved graphics that still would've been fine with me to be honest. I am not a graphics snob but I do require a game to have graphics where it matters. F.E.A.R. actually does this which is good. Other people may complain about it and I am not sure that I can blame them. A modern phone probably can play F.E.A.R. on max setting with no problem to be honest. The battery will drain though, that is for certain.

One part in the story that I don't like is when the Point Man is required to kill Fettel. The game refuses to progress beyond that point, unless the player MURDERS Fettel. At this point the game is basically over and the player probably will play the next game, Extraction Point.

Extraction Point

Again, I recommend 'normal' for Extraction Point because that game... I did not enjoy myself as much as I did in the first game. The main reason is the enemies and their placement is often bullshit.

Second reason is someone had a VISION. That vision requires locking Point Man out of using his abilities/flashlight until the 'scene' was finished. First of all; Point Man has a very special power due to his genes and his abilities including the usage of the flashlight absolutely should not be taken away from the player because if the player was actually Point Man and the player wants to activate uber-reflexs when something spooky happens he should be able to AT WILL. Not when the game designers decided "ok, mates, we spooked the player, let the player use Point Man's abilities and flashlight again!" I rather feel like I am Point Man and enable slow-mo and take a shot at the spooky-thing than realize the game designers needed me to understand their stupid vision. And when I say vision; Point Man in the first game often has hallucinations but it does not take away Point Man's abilities in the middle of the game, when he is not having hallucinations.

Third reason is level design really went down hill. Fighting in the apartments is so dull.

Forth reason is not a game-play reason but instead the game story reason. As Fettel himself puts it:

"I know it doesn't make sense. Not much does anymore."

I agree - the story in this expansion really affected my enjoyment levels. I care but when the developers do not, why should I?

The doors must be possessed: they shut by themselves.

Perseus Mandate

For Perseus Mandate... Now that I am playing it again for the sake of this review I realize that I have placed it in the wrong category as it should be A Rank. I will fix this soon.

I recommend 'hard' at least at the beginning then 'low' when your enemies are... Not so great. Then change it back to hard. Why you ask? At the beginning the game is almost exactly like F.E.A.R. with an exception of a few 'game designer vision' things and then you meet the 'super ninjas' who are so annoying to fight. They can take more than 5 shotgun blasts in the face and still live (even on 'Low Difficulty'). You can SEE their hairlines. You have to fight the bossman of the super ninjas which is just not enjoyable at all.

Overall Perseus Mandate actually was fun with the exception of the Super Ninjas who I lower the game difficulty for, so this game is actually A Rank - not B Rank and Extraction Point is B Rank - not A Rank. Amazing how the last fight of a game affected what I thought about the game overall; and when I thought of Perseus Mandate I always thought of the boss fight and how not fun it was. After wasting the annoying bossman, the player (assuming no prior knowledge or not having read this post) might think: "Overall I had fun! Can't wait to play F.E.A.R. 2 and see how they improve on... well everything!"

B.O.R.E. 2 and F.E.A.R. 3

For F.E.A.R. 2 there are actually more than one game but I only have Project Origin. I have no desire to pay for the DLC known as Reborn... I have to buy 'FEAR Complete Pack' which is $55 USD, just to get the DLC. It cannot be bought independently. Warner Bros has made it this way. What this means is, someone like me who bought F.E.A.R. 1 + DLC, F.E.A.R. 2, F.E.A.R. 3 will have to buy them all again just to play the DLC. I will not do this.

One thing one notices immediately is that the player can't LEAN. Ah, but at least they added sprinting! Only for 6 seconds and only increases your speed by x1.3! Then Beckett develops asthma and can't run again until his sprint meter fills up again. Actually the first thing one notices is the disgusting permanent UI overlay. And oh man, that font is GIANT! Man the bullet decals are really... Not F.E.A.R. looking at all. At least I see the 'x' on my cross-hair when I hit a hostile! Man the dialogue is reallly suffering. Did a child write the dialogue or something? A child would say these 'evil things' when role playing as a bad guy... Man did that guy really just say anime and pizza in the same sentence?

When one stands back and looks at what was presented before them, one can only conclude one thing: this game 'F.E.A.R. 2', which is nothing like 'F.E.A.R. 1', was designed for consoles. Absolutely nothing about this game inspires me. Think of the most generic shooter that you know of. You now have experienced F.E.A.R. 2 and 3. Sure, sure the AI that I was raving about... It exists in some form... But everything about the game sucks. I am so bored. They should've called this game B.O.R.E..

Even though I have not played F.E.A.R. 3 lately, I am certain that the same criticisms I have of F.E.A.R. 2 will apply to F.E.A.R. 3. One cool thing, I suppose, is that F.E.A.R. 3's campaign is two player! Even if I was playing on Windows, I cannot force anyone to play this game with me in good concious.

Story

So the story is interesting... sort of. Well, on paper it is boring. Actually the story... Hmm... You don't play this game for the story. Well... the story makes you connect to the game but it is just the 'background'. There is no intertwining plot or anything. It just sort of exists and you experience the journey that Point Man / Sargent / etc experiences.

So, canonically F.E.A.R.'s expansions, Extraction Point and Perseus Mandate, do not happen. Instead, it is F.E.A.R into F.E.A.R. 2 into F.E.A.R. 3. To be honest it doesn't really matter. It if was up to me, the first game and its expansions would be canon.

Final thoughts

So, F.E.A.R. is really good in my opinion. To me it sets the baseline of what a first person shooter should be like. It is also a slog. It is not a perfect game but it is good. It is fun. Which all a game really needs to be. I think most people should play this game at least once, if they can handle the 'spookyness' which is barely spooky at all. Alma scares you a few times but it is just jump scares. Nothing damaging. Enjoy this webm (iToddlers bfto!) where I play the game!*

Note: * = Please forgive the /g/-ism, if Windows can do Webm and the most uncommon desktop OS can do Webm but the second most common desktop OS cannot, then that is just sad.

FVIO or PCIE (GPU) passthrough
1 year, 11 months ago

"Wtf? Jake, I am not reading all this text. Give it to me straight: is it worth it to GPU passthrough?"

Honestly? In my opinion? ... It's fun to set up! Passing the GPU to and from a VM involves restarting X each time which is annoying but since I'm GAYMING its not that bad, but sometimes I think I might as well just dual-boot. But I hate Windows too much to do that. So, this is mainly for bragging rights.

I have began to replay a game I haven't played in a long time since that game doesn't work with Proton. It's a bitter-sweet nostalgic trip - the game isn't as good as I remember.


Recently I have began playing a video game. It isn't too graphic intensive and Steam's Proton handles it perfectly. Except for one small, tiny, miniscule detail: my operating system isn't Windows so, obviously, I am not allowed to access the online features of this game. But I want to access the online features of this proprietary game...

This leaves me with either: hacking Proton and somehow tricking Easy Anti Cheat (EAC) or installing Windows, either dual-boot or through a Virtual Machine (VM). (Some anti-cheat software, like EAC, run along the Windows kernel as a kernel module to make sure you aren't 'cheating'. :)

I am not smart enough to hack Proton, additionally I strongly dislike the idea of having to restart my computer just to play video games and reboot into */Linux when finished, so rather than dual-boot I decided to install Windows into a VM. I will passthrough my GPU which would allow me to play video games almost as if Windows was on 'bare-metal'... Almost like it.

Here I will note some things that are useful to know in a situation like mine:

  • The Zen kernel already applies the ASC patch.
  • The Zen kernel does not apply RDTSC trickery.
  • The Arch Wiki page on this topic is excellent. (Boy do I wish that I could utilize 100% the screen space that my monitor gives me on this Wiki. I don't understand why they feel they must ruin their Wiki.)
  • `$ lspci -knnv | grep -e '\[....:....\]\|IOMMU\|Kernel' | sed -e '/Subsystem/d' -e 's/\(.*\)IOMMU\(.*\)/\tIOMMU:\2/'`
  • Certain anti-cheat software will outright BAN you if you are running in a VM and there are MANY ways of detecting this.
  • 'Pafish' can help you discover what you need to fix/hide.
  • 'Al-Khaser' can help you discover what you need to fix/hide.
  • Cygwin provides some Linux-like stuff on Windows (I've wrote this bullet point in a cygwin terminal - after ssh-ing into my host).
  • Another computer to SSH or Remote Desktop to fix things if/when things break.

With Arch it is a simple matter of accessing my package manager to download and install linux-zen since Arch officially supports the Zen kernel (they provide a binary so I do not have to compile it).

However, this may be naught if you decide you need to do some RDTSC trickery so you'll end up compiling a kernel anyway - it is a lot easier than you might think but definitely time consuming. In my case, EAC doesn't ban VMs so I did not bother patching any RDTSC trickery.

Passing the GPU while I had a spare GPU for GNU/Linux is pretty easy. But I was not happy with this configuration because my monitors had insufficient amount of plugs... My main monitor only supports 1 VGA and 1 DVI. My TV 'monitor', only 1 HDMI, 1 VGA, and 1 RCA. Neither of my GPU's support VGA so it wouldn't be possible to tell my main monitor to change it's source which would've been the easiest solution.

In other words, one half of my monitors would be off unless I always use a VM. This annoyed me, so I decided that I will stick with one GPU and that I will pass that to and from a VM. This is known as single GPU passthrough, for which there are many tutorials for. With this configuration, I pass through my main GPU to Windows (even though I was using it previously!) and use the motherboards iGPU for displaying GNU/Linux.

I ended up having to dump the bios of the GPU I was using, a Nvidia card, because when I would try to start the VM the GPU would have an `error 43`. Remote desktop helps in identifying these situation. You could use Spice too, I suppose, but at that time I didn't use my motherboard's iGPU (I probably should've. Hindsight is 20/20). Fortunately, after commanding Windows to shutdown, the GPU would be successfully passed back to the host and X would restart, using QEMU + Libvirt hooks. So, at least, that was half of the battle done.

When I was trying to dump the bios of my GPU (and nothing was using it, including vfio-pci as I unbinded it prior to dumping) and I was greeted with `cat: rom Input/output error`. I found that setting the kernel parameter 'vfio-pci.disable_idle_d3=1' and running '# setpci -s 01:00.0 COMMAND=2:2' would allow me to dump the rom. Afterwards I ran '# setpci -s 01:00.0 COMMAND=0:2' though I am uncertain how important that is. I made sure to remove the kernel parameter as well.

Another detail that I've seen is to open the resulting rom file in a hex-editor and look for something that starts with `VIDEO` and delete everything above the `U`. Everything - all they way to the top. However, I did not need to do that since my dump didn't contain anything above the `U`. However for this advice was for Nvidia cards, I am not sure about AMD.

Some tutorials recommend booting into Windows 'bare-metal' and using a program called GPU-Z but I haven't tried this.

As of this date, Dec 19 2021, I can confirm that EAC (at least implemented for Xenoverse 2) doesn't ban VM users but they may decide to change their mind in the future. If that happens I will hopefully learn my lesson about playing proprietary games and will never do it again. Doubtful though.

An aside: I had a paragraph explaining that Windows doesn't properly shutdown GPUs when it itself shuts off thus resulting in instability but I discovered that actually it was a bug in Mesa that was causing graphical glitches rather than passthrough doing anything weird. This paragraph serves no purpose but to remind myself in the future that maybe it is just the software. Though with AMD, this is a legitimate concern since their GPUs have reset bugs. There are some work-arounds for them: Window Pro allows one access to 'shutdown scripts' that Windows will run prior to shutting itself off where you can turn off the GPU. If you don't have Windows Pro or better then you aren't allowed access to the shutdown function, and need to fork out several hundred dollars to upgrade. However, there is a host side option called vendor-reset but I do not know much about how it would work.

An additional aside: AMD's Adrenaline, when trying to install the driver for a minimum of 10 minutes, it has so, so, so many ads. The AMD installation failed for me so I decided to poke around in the logs and discovered that AMD attempted* to send analytics to Google! What a different world from package managers. Also, I very much dislike it that they replaced every driver link to their Adrenaline software.

"Why yes, I would like to download software that is half a GB big with the sole purpose of downloading and installing drivers for me! It is too hard to just download the specific driver for my specific GPU and click install. I am just too stupid for it!" - Imaginary person that AMD created and somehow believes we are him.

With Nvidia... I know they get a lot of hate for how they treat the */Linux community (well deserved IMO), however installing the specific driver for my GPU on Windows was very easy, even if it was in the second-slot. It was so easy I actually cannot remember anything noteworthy about it. Nvidia had a page for that specific GPU that contained the driver, whereas AMD decided that made too much sense. Gotta make those 3¢ per ad, don't you know?!

Note: * = attempted to, since the guest was subject to the host's `/etc/hosts` :)

If you wanted to view my XML sheet and hooks for some reason:

win10.xml
prepare/begin/prepare.sh
started/begin/started.sh
stopped/end/stopped.sh
release/end/release.sh
Howtoo SSH over TLS
2 years ago

[Author's Note: I don't actually know anything about fingerprinting technology so if I give you the impression that I am an expert or something, I am not! (Advisory for North Korean wanna-be defects {I don't want them to get deleted thinking they're safe - I don't actually know anything about fingerprinting technology will say about TLS connections besides "they're TLS but ... X" and I do worry what 'X' could be. But for most people having TLS is completely fine.})]

Many moons ago I when I was away from my desktop I had my laptop and my phone. Perhaps I realized that I wanted to edit something on my computer, so I thought a thought that most people would think: "I'll just use my phone's hotspot and SSH into my computer!"

Unfortunately, this did not work. I remembered to allow SSH on 443 and setup port forwarding since I was behind a NAT for the next time I was out and about.

Bafflingly, this does not work either. It was on port 443! ... I realized that the answer must lie not only with ports but also what the connection looks like because for some reason my phone's ISP is fingerprinting*.

A word about 'modern' TLS/SSL that old guides don't mention because it wasn't a requirement at the time. A cert and a key file is required, if it is not present this will not work unless some software (probably OpenSSL (my current version is 1.1.1l)) is outdated. Here is what I am using, those marked with an '*' are entirely optional and you can use what you want.

Software Description
OpenSSL To self sign a cert and key
Nginx* To proxy the SSH server on 443
socat* To connect to the SSH server

I'll assume you are smart enough to figure out if you have these or some reasonable equivalent installed or not. My guide will be based these specifically but I will include 'honorable' mentions. I will also assume you have basic understanding of how *nix operating systems works, how to configure software, and you will at least look at the man pages for each software.

Please note that is does require setting it up before hand; if you are on vacation and are in a similar position as me, you're SOL. Make sure to bookmark this page and revisit it when you get back home, eh? (Also there are A LOT of tcp-over-tls services and I would not be surprised if they were all ran by one person.)

Eas{y,ier} way

You should make a directory where your certs will be. Ideally, only root will be able to read and write in it.

The very first thing to do is to generate the cert or nothing will work and you will get very angry. So, run the following: '# openssl req -x509 -nodes -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 1000'. When it asks for information, in this case, it doesn't matter. You might as well just press enter on all of them. In this instance, we will not verify that the cert is 'valid.' Of course, if you have a real cert along with a real domain name that is issued by a real CA then use that.

Nginx 1.20.1

nginx.conf
http {
      ...
}

stream {
       upstream ssh {
               server 127.0.0.1:22;
       }
       server {
               # IP address under the NAT
               listen              192.168.0.68:443 ssl;
               #listen              [::]:433 ssl;
               ssl_certificate     /var/cert/cert.pem;
               ssl_certificate_key /var/cert/key.pem;
               ssl_protocols       TLSv1.2 TLSv1.3;
               ssl_ciphers         HIGH:!aNULL:!MD5;
               proxy_pass          ssh;
       }
}

The above block cannot be in the http block. So, if you have a `sites-enabled/` directory and in nginx.conf `include sites-enabled/*.nginx;` IN the http block, the block above will not work. Why? Because SSH protocol is not HTTP. They are different.

The simplest 'fire-and-forget' way to connect to it (that I've found) would be with socat.

$ ssh -p 443 -o ProxyCommand='socat STDIO OPENSSL-CONNECT:%h:%p,cipher=HIGH,verify=0' 192.168.0.68

At this point your SSH connection should be concealed by TLS on port 443. Fingerprinting will think it is just normal TLS traffic, i.e. HTTPS traffic. With that the guide is over... But typing ssh -o ProxyComannd='...' every time is tiresome! Edit your ~/.ssh/config:

~/.ssh/config
host ssh_tls
        Hostname <IP address>
        Port 443
        ProxyCommand socat STDIO OPENSSL-CONNECT:%h:%p,cipher=HIGH,verify=0
        User <username>

With above you can very quickly ssh like this: '$ ssh ssh_tls'. A lot quicker, eh? (What is this? Hint: '$ man 5 ssh_config')

Honorable Mentions

Socat server: # socat OPENSSL-LISTEN:443,fork,cipher=HIGH,verify=0,certificate=/var/cert/cert.pem,key=/var/cert/key.pem TCP-CONNECT:localhost:22

Socat client: $ ssh -p 443 -o ProxyCommand='socat STDIO OPENSSL-CONNECT:%h:%p,cipher=HIGH,verify=0' 192.168.0.68

Socat (1.7.4.1) is an honorable mention because I do some web-development and turning off Nginx/Apache was not really an option. The verify option can be removed if you have a real cert that isn't self-signed. Socat is an interesting piece of software and can do many other things, not just this.

Stunnel (5.60)

stunnel-ssh.conf
pid=/tmp/stunnel-ssh.pid
[ssh]
client = yes
accept = 9048
connect = 192.168.0.68:443

Stunnel is a little confusing to understand at first but after you understand it, it becomes 'ezpz.' Basically, you set up stunnel first, which binds to a port and stunnel forwards everything that goes into that port to go to a specific location with TLS. So in this case everything on *:9048 should be encrypted with TLS and go out to 192.168.0.68 at 443. Don't forget to turn off/kill stunnel after you finish using it. (Check the reference for stunnel to get a 'fire-and-forget' script.)

Apache (2.4.51) and proxytunnel (1.10.20210128)

forward_proxy.conf
# Change IP to yours under the NAT
<VirtualHost 192.168.0.68:443>
       SSLEngine on
       SSLProtocol -all +TLSv1.2 +TLSv1.3
       SSLCertificateFile    /var/cert/cert.pem
       SSLCertificateKeyFile /var/cert/key.pem

       # Normally you want this turned OFF
       # otherwise you are an open relay
       ProxyRequests on
       # Only allow port 22
       AllowConnect 22
       <Proxy *>
               # Disallows proxying for everything...
               Require all denied
       </Proxy>
       <Proxy 127.0.0.1>
               # But allows proxying to 127.0.0.1
               Require all granted
       </Proxy>
</VirtualHost>

Make sure you have enabled: ssl_module, proxy_module, proxy_connect_module. Additionally, make sure you actually have a `Listen 443` somewhere. Turn Apache on or restart it.

Try this: '$ ssh -p 443 -o ProxyCommand='proxytunnel -z -E -p %h:%p -d 127.0.0.1:22' 192.168.0.68'. If it works, it works and you should test if Apache will allow proxying to other locations (it should not and if it does you did something very wrong). If it results in an error, check if Apache is turned on, then check Apache's error logs.

The difference between connecting to Nginx or Apache is how the proxy pass is done. Nginx proxy passes to 127.0.0.1 automatically (reverse proxy) and with Apache you tell the server that you want to proxy to 127.0.0.1 on port 22 (forward proxy [admittedly, only to itself]). I'd like to reverse proxy with Apache but Apache is best suited as a web server rather than a proxy server. Don't use a spoon as a fork - kind of thing.

Now, if I had many services that I wanted to offer but only had port 443 I'd use forward proxying which Apache and/or Nginx (with some difficulty I must mention) can do.

OpenSSL (1.1.1l).

$ ssh -p 443 -o ProxyCommand="openssl s_client %h:%p" 192.168.0.68

Similar to socat but less typing I guess. It is an honorable mention because if a packet is bad then it gives up entirely and I haven't figured out how to tell it to ignore them. If you look at the man page '$ man s_client' you might notice a `-reconnect` but that does not do what you think it does. It is also somewhat noisy.

Closing thoughts

Brief thoughts on SSH over TLS: double encryption with TLS and default SSH to me seems like wasted CPU cycles. If possible it maybe better to use something like OpenVPN or WireGuard but not every phone will have that and it is a question if a device connected to hotspot will even be able to connect to other devices with OpenVPN or WireGuard because connections are being fingerprinted. With this, it is a guarantee that you will be able to connect to your computer, at least until fingerprinting software figure out how to do more privacy invading things. Also use ssh-keys with SSH and disallow passwords.

I suppose one could use rlogin or telnet with TLS (trivial with with stunnel) to reduce the CPU cycle waste but I won't write the guide on that - I don't want to be responsible for anything bad happening (since rlogin and telnet send things plainly) and it doesn't seem like that big of an overhead anyway. (What? Your computer can't handle TLS and SSH at the same time or something? lol! Stop using a 3rd world computer already. ... Although if it is that old then it probably isn't back doored... Hmm...)

If you have a spare computer (under the same NAT) do the same commands and if it works then you're golden. If it does not work then obviously it won't work when you use hotspot. I'd avoid connecting with the hotspot if you are unsure if you set it up correctly - when they disconnected me I couldn't connect back to my home IP address. I waited for about a day for the block to expire (not that I was constantly testing).

Jake, you are a liar and a techlet! This will not work!

Compare these files then, please. Wireshark is pretty good at it.

SSH
SSH over TLS
Telnet (you get bonus points if you figure out my incorrect passwords)
Telnet over TLS

If you see TLS inside the NAT you will see TLS outside the NAT as well, meaning hotspot will work. If you are on the technical side you will be able to see how you can configure a lot of this in somewhat different ways. Now, if you are exposing your stuff to the outside world it goes without saying: make sure your stuff is protected/hardened/hard-to-break-into.

Other software can do proxying as well, like Squid, but I chose to focus on Nginx and Apache since I actually use them on a daily basis.

I compiled this from various sources so future me will not have to spend hours tweaking search phrases.

This post would not have been possible without the following resources:

(Reddit - socat)
(ServerFault - stunnel)
(Nurdletech - Apache)
(StackExchange - Nginx)

Disclaimer: * = When I was able to connect to my computer for like 5 seconds then suddenly it would no longer work my first thought was "THEY'RE FUCKING ME!" and caused me to write this blog post in mainly because I wanted to fuck them back (my reasoning was that they could block SSH but they won't block TLS). I don't know what happened but I can SSH into my computer with hotspot. I am not sure what to make of this.

I am running a dictionary service
2 years ago

I hope everyone had a good halloween! I, unfortunately, went to take a nap and when I woke up I missed halloween :(

Anyway, I am running a dictionary service which may interest some people. Basically, it uses the same dictionary that the wotd service uses but this time you can specify what word to look up. I should mention that because of the dictionary's age, some modern words like 'zoom', 'yeet', etc, will not be present.

It has an API!: $ curl -d "word=the word" https://jakesthoughts.xyz/dictionary

Because of that it is also very easy to impliment into a bash function:

function lookup() {
	curl -d "word=$1" https://jakesthoughts.xyz/dictionary
}

There are other dictionary programs that you can use, of course: Artha, Goldendict, ... there aren't actually that many. Hmm. I haven't used any of these programs so idk if they are good or not. Artha claims to be able to use offline copy which I would be interested in had I not already done this.

Jake you'll just be a creep and see what words I look up!

No - All I will see is someone accessing the url. If this is a major concern, you can download the source script yourself and run it locally.

The script. The dictionary I recommend (it is so old it falls OUT of copyright.)

You can directly visit https://jakesthoughts.xyz/dictionary but I am not applying any stylesheet to it (meaning black text on white background), so your eyeballs will melt if you got used to my current stylesheet. As for Gemini users... I haven't written this yet but I figure the easiest way to serve FCGI content would be with yet another CGI script that queries the FCGI script since Doppio (and I assume many other Gemini servers) don't do FCGI.

Enjoy!

Have local copies of stuff
2 years, 1 month ago

The title may suggest saving your favorite websites or saving images or saving videos to your hard drive. This is just a subset of what I meant, albeit a useful endeavor. My real intentions go further than that: Print that website out! Print that image out! Burn that video to a DVD disk! Print/burn EVERYTHING!

Meme sort of related but doesn't go far enough. Hard drives and other forms of electronic memory can FAIL.

But J-j-jake! I don't have enough ink for that! I don't have a DVD writer because modern gaming computer cases do not create space for them!

Pathetic. I suppose I can settle with you just saving everything on to a flash drive. I actually happen to possess a rather sizeable flash drive that I update infrequently - so I am at least understanding on that front. Also `ink` 🤭. I will let you in on a secret regarding printers: a single cartridge (toner) for a lazer printer will typically last longer than an inkjet cartridge by sometimes thousands of pages with a cheaper cost per page. The hardest part by far will be getting the printer to work but that is a different story for another day.

Civilization - Institutions, Knowledge and the Future - Samo Burja (37 minutes, a good video.)

After watching the Civilization video, I was left with some kind of impression specifically about the past and how lessons of the past often BARELY made it to the present.

  • "For 2000 known ancient Greek writers, we have 130f it. ... And a smaller fragment of complete works."
  • "00f this culture is present with us today [because 2/3 of the Chinese population died which includes the entirety of this culture]."

This fear encourages the schizo within. What if the internet breaks? What if electricity gets turned off forever? You can't read your blog if it's intangible! Obviously that would never happen unless aliens invaded Earth. And I'm not saying that aliens will invade Earth and target these specific weak points... but they could. The chance is non-zero. How much data exactly is intangible and therefore at risk? I suspect a rather high degree and if something bad happens that semi-intangible data will remain forever intangible. Now, I also think in the event of a real alien invasion (real or imagined), they would probably bring back the 'internet' but only selectively and with lots of restrictions meaning your creative blog posts probably will not make the cut. Additionally, 'privacy' will most likely be heavily discouraged, so Tor, and other methods of getting 'anonymous connections' will not be allowed to function the way they have previously. My uninformed schizo-take on technology but whatever: maybe they will make it so that packets will require some kind of identification just to be transmitted[1]. I should stop giving them ideas.

A different perspective if my favorite boogy-man, the aliens (a place in for some powerful entity), doesn't sit well with you... Internet archives ... *can* be modified! One example that I know of is nearly every archive for original mewch, one of my favorite chans before it got [REDACTED]'d, does not exist even though, according to others, it used to. You cannot find internet archives on them even though they did exist at one point (I've made some personal copies of some threads but not enough, something I regret). Unless they are somehow made immutable through something like the blockchain, files can be removed or worse, altered. Of course, physical paper can also be modified and destroyed but the effort to do this would require it to be deliberate or a very bad case of carelessness. Paper documents will last much longer than electric documents would because they are already physical and not an abstraction somehow created from 1's and 0's that also somehow appears in a logical manner on a screen. Paper documents can also be converted back into electronic documents and printed again.

Regardless of the hypothetical risks, having a printed copy of something makes the intangible tangible (sure, you could argue semantics about 'what *is* written language? How does the brain interpret letters in such a way that we can understand abstract ideas from random chicken scratch?' but I think the planet's lingua franca will be somewhat resistant to being eradicated, take a look at Latin or ancient Greek for example). You DO have a piece of history. With luck it will find its way to the right person in the future. Maybe it will end up being a 'redpill' or maybe every one will greatly enjoy the story 1000 years later or maybe future readers will think 'wtf were they doing back then?!' or maybe the religion will gain a new follower or whatever. To me it doesn't really matter what the content is as long as it can reach the next generation(s) somehow.

I am doing my part! I've printed my entire blog! :^) Future historians will thank me for it.

I've also printed out some holy books, fiction, philosophy, and other things that I enjoy. You get bonus points for reading what you've printed more than once since you are making that paper pay for itself. Information is valuable and nearly priceless - worth more than the paper itself. Next step might be organizing it somehow and I cannot offer advice on that though I want to. Another benefit of printing is that you can annotate the paper without feeling guilty. It's not a $70 book!

Jake, I am totally unable to acquire a printing device and even if I do, what I print will be used against me regardless of the content printed.

Hmm... I hope your future will change for the better so that you can spend hundreds of dollars on paper, a lazer printer, and some toners. When I say print I mean print, if you are printing a book that you could buy, maybe buy the book? Perhaps printing will be a waste of paper if are going to end up buying the book as I have for some titles. Don't buy eBooks though, unless either: you figure out a way to print them, or it can be transferred to your file system.

Also, I heard that looking to the past is like looking to the future. Be someone's past so they can see their future! Or something.


[1] That idea alone kind of spooked me. I have thought of some things that might help in dealing with it. It would be a good idea for people, myself included, to learn about 'underground' ways of connecting to the internet (more than just Tor and I2P and Yggdrasil). Maybe look into what is needed to create some kind of private intranet that could connect to other private intranets. I believe this will reduce the power that 'turning off the internet' will have. Off the top of my head, large mesh-nets seem like a decent-ish option, though I will plainly admit I don't really know how they work besides connected devices are server-clients. I agree that it will be a pain to get people to even experiment with mesh-nets as with everything technology related especially when their internet already 'just works'. If one can create or join a mesh-net community, it would be a good idea to use TLS since who knows what the other nodes are doing. Ah, but if the mesh-net gets super big then the FCC might get force themselves to get involved and... hmm...

This project, libremesh, intrigues me, especially the links under the heading 'Free Networks, Free Society.' I am curious about the kind of community they foster, if at all.

Hmm, Hyperboria's documentation (of course the cert is expired and half the links are dead) is very interesting and if I am understanding it correctly, similar to what I envision.

(This blog post was 'in progress' before Facebook went down for several hours while the media is pushing that they should have a seat at the UN. These incidents did encourage me to actually finish this... Lately I have been having difficulty saying 'yes, this is finished.' I have to almost impulsively publish blog posts (the Doppio cgi post was finished before the Gemini blog post, for instance) otherwise I will try to perfect them forever.)