2020's rolling blog! | 2021's rolling blog!

Guest Questions, I

Blog indexRollingšŸ„ŽblogPermalink

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'!

09 Jul 2022 16:40:54 -0400

App thoughts on mirroring text or phone calls

Blog indexRollingšŸ„ŽblogPermalink

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.

26 Feb 2022 01:07:29 -0500

RE: This device is not eligible for actvation on the Cricket network

Blog indexRollingšŸ„ŽblogPermalink

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.

10 Feb 2022 23:52:04 -0500

This device is not eligible for actvation on the Cricket network

Blog indexRollingšŸ„ŽblogPermalink

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.

09 Feb 2022 11:01:52 -0500

Setting up cgit

Blog indexRollingšŸ„ŽblogPermalink

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.

07 Feb 2022 04:09:04 -0500

F.E.A.R. is a fun game

Blog indexRollingšŸ„ŽblogPermalink

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... 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 speical 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.