Saturday, April 27, 2024

Am I Falling out of Love with Emacs?

Do I need emacs? Why did I like it so much? Isn't it usually simpler and more portable to just use the command line, instead of an emacs key binding?

Why do I need emacs to do indentation for me when I can use the tab key perfectly fine in Textastic.

Emacs is so complicated that you can't even use the tab key to indent your code. It won't let you. It'll autoformat code according to its internal rules for the current language. Formatting a .tsx file in emacs is impossible (granted, TSX is probably too complicated for us to be using in the first place).

I guess emacs is cool if you're sending lisp snippets into an interpreter. But I don't find that I miss it. It's easy to guess how I feel about tools like Resharper at this point.

Saturday, April 20, 2024

Introverted Nerds at Bars

I was watching this YouTube video once where it said that if you are an introverted nerd, you should not bother going out to a bar to try to find a romantic interest. That was deemed to be not the element of such a person.

I forced myself to go to bars and clubs for a period of time. I'd go and I'd try to talk to people, including pretty girls. I'd try to get the phone number of a girl if I thought she was pretty. This never really went anywhere and after about a year and a half I dropped the practice.

While I was doing it, it felt like a job to me. At the end of it, when I'd see a woman standing there, I couldn't come up with a sincere reason for why I was starting a conversation with her.

I remember one time, I started talking to this couple about Japanese history. I was reading about it, and thought I'd talk about what I was doing with my time. It was very strange. I felt like I was being a buzzkill given the environment.

I remember one time, at a strip club, I intentionally talked to one stripper about how I would buy Brita water filters and use that to obtain drinking water. She took up the conversation and replied with how she obtained drinking water via water bottles, and I felt immediately bad for having creating the topic.

I guess when I talk to people I feel obligated to be discussing a grand mission.

When I was finishing college, I did consulting for a psychology department. I was programming a small visual experiment for them. It leveraged OpenGL and just rendered a couple of rectangular slabs in different placements. I overheard the grad students talking about their professor. They said he would talk about psychology all the time. I thought that surely, a well-rounded man should know how to "cut loose" and just have fun when work is done for the week.

I don't really worry about whether I am a social person or not.

Wednesday, April 17, 2024

ChatGPT and Animals

I understand that we have a private sector free market, and that ChatGPT offers promises of heightened efficiency in such a competitive environment. But it distracts us from the fact that our careers are exercises in artistry and showmanship.

Most of us fear freezing to death on a rainy day, out in the cold, due to having no job and being homeless. But if our philosophy breaks, I don't think we really give a shit how we die.

This is what people overlook when they get excited about things like ChatGPT. We are not just here to make life as comfortable as possible as fast as possible. We are here to distinguish ourselves from the animals. And showmanship, showmanship of a person (not a computer) is how we do that.

The Waymo cars are way more interesting than ChatGPT because they take care of a mindless task that is driving. But software that automates business needs is not mindless. It is cool.

Monday, April 15, 2024

Mike’s Guide to Talking to People

First off, you should probably read some books, study assigned vocabulary, and write some essays. Oh what's that, you too went to school? Terrific. You're way ahead of me.

I hope you're making it count. Learning to communicate is an exercise in cultivating taste. Not all of the idioms in use are healthy to be using. Only by educating yourself and living life can you learn the types of language that are vulgar, and the types that are suitable for use with dear friends. If you just imitate whatever you see on television or whatever you hear from trendy TikTok videos, you're probably going to learn vulgar habits. So tread carefully.

The first thing I'll say, as a part of what I'm adding by writing this blog post, is that you are not supposed to tell other people when you are having a bad time. This is particularly true when you are talking to someone you do not know well. Not everyone is going through a rough patch, but when you are, you are only allowed to bring it up with someone if they have demonstrated an interest in your day-to-day well-being. If an acquaintance says to you that they hope you are doing well, that does not count as the type of interest that I'm saying is required. Someone has to have a track record in showing interest in your daily well-being for you to erupt with bitching and moaning in their presence.

Emergencies do not count as an exception to this rule. Even if you're bleeding to death, your bet is on 911, not on people who haven't shown they care about you.

The second rule I'm introducing is that you can only bring up a topic with someone if you know they are interested in it. If you're talking to someone who doesn't give a fuck about playing the guitar, you're not supposed to talk about your guitar lessons out of the blue with that person. If that person likes baseball and you watched a baseball game, then you may use that as topic fodder. You have to talk about things that other people are interested in. Otherwise you're being needy.

The third rule is that you are not supposed to talk too much. You're supposed to make a statement or two, and then wait for whoever you're talking to to respond to those statements. This rule becomes violatable if you have a very close friend and you're in the middle of heavy discussion with that person. But for relationships where the friendship is light or possibly not even established yet, you are supposed to not talk too much before giving the other person a chance to respond (or introduce subject matter of their own).

This third rule has a corollary, which is that you're not supposed to talk to someone day after day. It is extremely unlikely that you have interesting things to say every day. You're supposed to let life events occur and react to them by yourself. After you've done this for a week, you can cherry-pick whatever parts of your week you think might be of interest your friend, and then you can unload your news on them.

The way to violate the third rule is to play your friends off each other. If you've reached a lull in the ongoing dialogue with Alice, but then you hear something from Bob that reminds you of something Alice said, you can piggyback on your memory of Bob and reengage Alice, citing the event outside your dialogue with her. You don't even need to depend on friends for such types of memories. Acquaintances or even strangers can supply them. These "outside events" are what propell you beyond a lull in the conversation with your friend, so that you're not just comiserating with your friend. Your friend wants to hear that you're fighting to survive, not that you're hiding. Outside events are evidence of such.

The fourth rule is that you are supposed to respond to electronic, written communication immediately, unless you are preoccupied with work. By immediately, I mean within a day. This is difficult for certain entire categories of people. If you can't reply immediately to emails or texts, and you're the type of person who aspires toward self-improvement, then I'd recommend trying to figure out why electronic communication causes you anxiety, or why you are so ignorant of your own motivations that you need days to prepare a response to a friend's email.

An exception to this fourth rule is lengthy emails. I don't just mean when someone is abusing your time and rambling. I mean when you are engaged in a deep discussion over email with someone. You can take your time with those.

The fourth rule doesn't really apply to group chats.

The fifth rule is that you are not supposed to confront someone about their bad behavior unless you are unsure as to what class of person they are. I hate to break it to you but humans discard their equality as they age. They do stupid tragic shit that causes them to permanently lose their innocence. If you think someone is a first class person, you can gently ask them probing questions to see why they are behaving in a way that makes no sense. This is unnecessary when people telegraph their class to you by acting like douchebags. But when you're unsure, you can probe.

The sixth rule is that your day job does not count as conversation subject matter. Not even if someone works in the same line of work as you. If such a person wants to talk to you about your day at work, they can join your company and attend meetings with you. A career is sacred. But when we are off the clock, leave work at the office.

A straightforward exception to rule six is office drama. Bullshit is always interesting subject matter among friends.

The seventh rule is that you have to give your friends a relaxation period away from you after each time you tax their emotions. Sometimes we have difficult conversations with our friends. If you know you’ve just put a loved one through a difficult conversation, prohibit yourself from introducing further subject matter with them for a week. This will give them time to recover, and it’ll impress them.

I now introduce a guideline. It is not as strong as a rule. When building trust with someone over electronic, written communication, you want to try to be the last person to have spoken in an exchange. This way, it looks like you’re being ignored, and are thus the one who has to go do something new in order for the conversation to be picked up again. This action puts your friend or loved one on the “high ground” and thus in a position of smug comfort. When you do this, you’re ensuring that they do not feel ignored. Sometimes this is as simple as typing “okay”.

Go get ‘em.

Saturday, April 13, 2024

Work as Entertainment

I conjecture that entertainment is like a leak. If conventional sources of it become unattractive, then you will begin to find things that once were boring or scary, entertaining.

If you're smart, that includes software development. Which has a lot of pain points.

I say entertainment but it's really something else. It's the something that used to motivate me to build things with legos. It's a cross of ambition and curiosity. If you decide that you want to be a computer science person, it means you're (mostly likely) not going to be an authority on matters of physics, biology, history, or art.

You won't seek entertainment in the name of procrastination. You will be able to overcome procrastination in the name of ambition and curiosity. The pain of software development will become tolerable, even something you combat by introducing controls on complexity. The fear of math will fade.

There are some who can say that watching TV or reading fiction is an exercise of their mind. But this isn't what a computer scientist would say, in the course of their career. The act of construction is their act of the mind.

Entertainment is supposed to be healthy but I think I have allies would who argue that it's often garbage. It's fine to seek achievement in the workplace instead of low-brow entertainment. I know not everyone has the privilege of having an easy choice between those two alternatives. I hope those people find entertainment that speaks to them.

Thursday, April 11, 2024

Attached to Good Video Games

What is unfortunate about good video games (games that are honorable to play) is that you don't get paid to play them. You have to go work at your day job, and then make time for your video game. You (probably) don't get to spend time with loved ones in the video game. It's a tax on your time.

What do you have to show for it? You gain a type of street-credibility with others who play the game. The fandom of a game maintains a certain literacy with the game's rules and lore. You are not a "normie" when you converse with others who know these facets of the game. For over 99% of video game players, this is the only reward you can acquire by playing the game. Sure, many video games are entertaining or thought-provoking. But no one thinks a session of entertainment is something to brag about. Not in the way they think being courageous during gameplay is something to brag about.

That this is the only reward our society can provide is sad.

I disagree that people play videos games simply to have fun. I believe they play video games to earn the high regard of their peers. I think this honor is implicitly recognized by others who don't spend time playing video games. At least, it can be. I understand that there is a whole sector of society that still holds contempt for young adults who invest a lot of their time into a video game. But, among adults who pride themselves on intelligence, there is a recognition of the pride that video game players can build for themselves.

What I am saying also explains the drama that comes along with exercising your choice of which game to play. Some games are held in higher regard than others. All games are supposed to provide an opportunity for a player to show that they are honorable, but not all games provide this opportunity to equal extent.

The three video games I logged the most hours in were Unreal Tournament, Starcraft I & II, and World of Warcraft.

Tuesday, April 9, 2024

A Lower Bound on Friendship

Friends meet with you in isolation. When I say isolation, I mean that you and the other person meet without anyone else around listening in on the conversation. Going to a restaurant and being waited on counts as such a meeting. Going out with a 3rd person violates the rule I'm stating, and it does not count as a telltale sign of friendship.

Communicating over the Internet or text via DM counts as meeting with someone in isolation. But, not all people who talk to you over DM are your friends. At the same time, any person who wants to be called your friend should, at a minimum, be willing to converse with you in isolation. If they will not do this, they are not your friend.

Reading nonfiction counts as socializing. When you read nonfiction, you are opening yourself up to disquieting knowledge. You are making yourself vulnerable to anxiety that may result from what you've read. If partying at the club counts as socializing, reading nonfiction better also count as the same. If going hiking with a group counts as socializing, reading nonfiction better also count as the same.

Listening to music does not count as socializing.

Watching the Discovery channel technically counts as socializing but it’s very lazy of you.

I don’t have any friends but I socialize all the time.

Sunday, April 7, 2024

One’s Worldview

I used to get into positions where I would disagree with some popular decription of reality, and I'd make my own alternative. We all do, I suppose.

When I was attending my Catholic high school, we took a world religions class. In it, they said that a religion was an ultimate description of reality. There are lots of descriptions of reality that are pragmatic, and that need not be so grand. They are still the building blocks of language that we use to tell others what we are doing with our lives. We use such language to tell others about dramatic events that overtake us. Sometimes we may just state a platitude, such as "every day above ground is a good day." Other times we may describe a conflict: "my boss shows up at work and tries to make everyone else as miserable as he is." So there, we used the word "miserable". We are taking it for granted that some people go through life in a state of misery. This assumption is tacit in our description of our boss.

Years ago when I was reading content in the manosphere, I came across what was known there as "your frame." A major component (if not the chief component) of the manosphere's message was simply an articulation of the technique used to attract a woman (or even women). It was thought over there that you had to bring a woman into your frame. Your frame was your way of describing reality. It was your way of stating the rules of reality. Your way of describing recurring phenomena in one's life. If you could make a woman adopt your frame, it was predicted that you had made significant progress in your effort to attract her.

I never use the term "frame" when I am describing my experiences to myself. This post is not about how to attract a woman. It is, in part, a survey of where I have seen others talk about life's recurring events.

During the French Revolution and Robespierre's reign, there was a woman named Catherine Théot who claimed to be Robespierre's mother (and also the mother of God). She was a medium who was making prophesies concerning the future of France, but apart from some followers, she was widely thought to be insane. I bring her up because she claimed to be on Robespierre's side. Her lack of credibility hurt Robespierre's reputation. The Committee of Public Safety decided to arrested her, and soon after, Robespierre was overthrown. Was Robespierre's political language strong enough to protect himself against her problematic position? Could the populace and Convention attendees hold his language as distinct and above her apparent insanity?

I am a strong believer in the idea that life needs to be explained. I've struggled to explain it to myself throughout my years. Sometimes I have adopted the language I've encountered while reading books. Sometimes I've adopted the language I've encountered while watching interviews on late night TV shows. There are inescapable consequences that follow from how you cast your life's events into the stone of verbalized memory. I can name two scary propositions of this difficult-to-avoid action.

The first is that you will be aging, and young or impressionable people will decide that they look up to you. They will imitate you and your language as they hear you using it. Suddenly you will be leading a small group of people down whatever road you were (at one time) going down alone. You will then be responsible for how sturdy your ship on life's waters is. Is your language really going to protect those who are emulating you? Is your language strict and strong enough to prevent others from twisting your words into the territory of wild inaccuracy? Will your followers, if unhappy, have you to blaim for supplying them with inadequate terminology and faulty definitions?

The second is that there will be people who disagree with you explicitly, and they will inform you of this. You are then left in isolation. Are you still comfortable in this isolation? Do you still feel happy and content without that person's closer friendship?

You build a world. When you look around, are you happy with the world you've built?

This is arguably a special case of the saying "you made your bed, now lie in it." But I'm not talking about endeavours you undertook to gain certain acquaintances, professional titles, or material belongings. I'm only talking about the way you chose to articulate how life made you feel. I'm talking about the language you used to explain life to yourself, to explain your behavior to your friends. I'm just talking about the narrative you hold by your side day-in and day-out, the narrative of what you see yourself and others doing on this earth.

Do you like this home you've built? Is your language trustworthy? This is an honesty check. It covers your influence on others, but also whether you are content in the world you live in regardless of how your friends and family feel about your language.

I have been forced to consider the reliability of my version of the truth of things.

Friday, April 5, 2024

And American Dad Takes the Lead

As usual, I will be extrapolating points after having watched a handful of YouTube clips (on account of being way too cheap to purchase full episodes of TV shows).

Today I ask the question: how did American Dad grow to surpass South Park and Family Guy as my favorite animated comedy? I should be more specific. I really like the character Roger. Family Guy fell to pieces over time. It became this show where all of the characters find slick ways to dump hate of society into the show's scenes. And that's about where it became too mean for me. But Roger is really interested in creating personas and just acting for acting's sake. He finds his calling in make-believe and the Smiths get into tug-of-wars with him while he does this. It's nice to see someone who is trying to be happy.

South Park hasn't really been the same since around season 14. Once in awhile it'll put out a good episode or two but I haven't seen it reach its old peaks since around that season. There was a somewhat recent episode where Butters and Eric were working at an ice cream shop. It seemed extremely cliché. We've seen Eric torture Butters a thousands times at this point. But that's what Matt and Trey were putting out.

There was a time in my life when I thought Family Guy was awesome. As I got older, the show either became really mean or I started to perceive it as such. That's a whole genre of comedy for some people: being mean. I don't bother with clips of it on YouTube anymore.

Stewie and Roger are related characters. Stewie is a half-closeted gay person and Roger's sexual orientation is kind of irrelevant since he is an alien, but he sure has a playful way of talking. But where Stewie's humor comes from feeling superior to others and even getting angry with others, Roger just cares about building his characters and his make-believe world. He's happy and Stewie is persistently, grossly unhappy.

I don't want to watch Family Guy throw temper tantrums anymore than I want to watch South Park just be gross. American Dad chooses to be playful. So I prefer it to the other two shows now.

Monday, April 1, 2024

One-Man YouTube Shows

I remember this scene in the movie Waiting for Guffman, at the end, where Parker Posey is in NYC either teaching a class or doing her own one-woman-show. We're supposed to feel (as with many scenes by this creative team) superior to her, or at least feel sorry for her.

Or, you can take this scene a test to the viewer, to see if the viewer will acknowledge that low-budget entertainment is still legimate entertainment.

But doing a show by yourself is quite difficult. When I think of the type of content on YouTube that I find myself gravitating toward, it's from big budget entertainment companies at least 75% of the time, if not more. If we take ProZD as a counterexample to this, he is still a rigorously tested actor. We're lucky that he takes the time to post content on YouTube. He's so exceptional.

Emma Chamberlain is another freak of nature who has managed to create content that others want to see, all by herself. She was just editing videos by herself for a long time before she got picked up by other mass media entities.

I don't watch either of these creators that often (due in part because at least ProZD rarely releases content). I feel like one-man shows on YouTube, or even one-man nonfiction channels, are really low in their ambition and class. The nonfiction channels, to me, rise no higher than content intended for high schoolers. I don't feel like I'm being informed of anything when I watch them. At least that's the way it was. I've stopped watching nonfiction YouTubers for the most part.

I mostly watch clips from The Office or Parks and Recreation. And I listen to KPop or watch KPop music videos. So YouTube is like just another mass media company for me, like NBC or CBS. The possibility of encountering a rebel on the platform who speaks to me in defiance of mass media norms is gone, because I'm not tuning in to YouTubers anymore.

This post is me realizing that this is a predictable outcome. Making essays by yourself is hard.

Friday, March 29, 2024

Squaresoft Died with Final Fantasy X

This post contains John Wick and Star Wars spoilers.

The Playstation 2 marked the end of Squaresoft's reign of glory. This is because they made the decision to feature voice acting in Final Fantasy X, while not supporting the PC platform. They stayed confined to a console box.

If you look at The Longest Journey, an RPG with voice acting, it was on the PC. I've never played this game (for a meaningful amount of time) but it did catch my interest as an onlooker. The game features voice acting and it's a PC game. It is, to me, of the same era as Final Fantasy X. And it feels remarkably different than Final Fantasy X does. Final Fantasy X feels like it's in a cage compared to The Longest Journey.

Final Fantasy X as an RPG hits the notes it's supposed to hit, judging by the number of people I've encountered who say it's a good game. Its battle system is fine. Its story is fine. Its music is fine. But it's in a cage on the PS2. I'm aware that it has more recently been ported to the PC. That's way too little too late to save the Squaresoft brand. AFAIK they went entirely through FF XIII without porting FFX to the PC.

This brings me to Final Fantasy XIV. It is just a generic MMO. It is the best chance that Square Enix has ever had at recapturing my respect, and it fails. It has nothing innovative to offer to compensate for the damage Final Fantasy X did. It is the best product that Square Enix has had since those old days, and it fails. I can't even try to see whether New World outranks it because they're both lame and generic. They feel like they're just checking off boxes, whereas World of Warcraft still sits on firm footing.

John Wick 3 killed its franchise. The plot twist of John having to go after Winston is critically in aristic error. I never purchased John Wick 4 after that.

The Force Awakens was picking up a story that was of the highest order. Its storytelling was way beyond what World of Warcraft tries to do. WoW's story is like a soap opera and it is up front with you about that. The gameplay is left to make up for this (and it does). And the story is kept fun.

Episodes 1-6 of Star Wars define a single saga, culminating in Luke Skywalker's ascension over his insecurities and enemy in the form of Darth Vader. It is inappropriate for him to be an overthrown recluse in The Force Awakens. It is inappropraite for Han Solo to be rewarded for his adventure with Luke by being murdered in The Force Awakens. I never bothered with episodes 8 and 9.

Tuesday, March 26, 2024

Programming on an iPad

I am launching a Java web app. It is 14k lines large. 45% of that I wrote using a 2024 12-inch iPad Pro.

You can't compile Java code on an iPad. You don't even have direct access to a hard drive. One of the first realizations I had when I decided to go down this road was that I would have to rent a server in the cloud just to do development on it. I could install openjdk on it and compile my source code there.

The next big decision you have to make is how to inform your remote cloud machine of the latest keystrokes you've typed to move around characters in a source code file. I read a guide that said that typing in things using an iOS text editor was fundementally too frustrating, and that one should use a web-based text editor that sits in front of your cloud machine. I did not reach this conclusion in my research and approach.

What I did was go ahead and choose Textastic as my text editor. As its accomplice, I chose ShellFish. What ShellFish does is allow you to enter SSH information into it, and it'll sync files via SFTP from your remote cloud filesystem into the Files iPad OS app. Textastic integrates with ShellFish, so you can open files that ShellFish knows about with the Textastic open file dialog. ShellFish was like $30 for a lifetime license. With it and Textastic, you can edit files on your remote cloud machine. Every time you save, your changes get pushed into your cloud machine.

ShellFish also provides support for moving files you download in Chrome directly into your cloud machine. It does this through the "Share" generic function that shows up when you're looking at different things on iOS. This was very handy when it came time to download my SSL certificate and key.

I think Textastic was $10 for a lifetime license.

There is a Git file manager called Working Copy. It's a feature-rich app but I haven't found any reason to use it. ShellFish and Textastic combine to give me all the Git happiness I need (Git is of course installed on my cloud dev machine). But of course to use Git and do a host of other things, you need real ssh access to your cloud machine. This brings us to terminal apps.

Textastic has terminal support but it's not very good. Fortunately there is another (free!) app called Termius. I say free - you can pay a monthly fee for additional features like agent forwarding but I've been living at the free level. Termius is really good. One thing it has to do is use the Location services on iOS to do its work when it's not in the foreground. Which I find fine.

Termius provides an additional need which is port forwarding. When I run my app in the cloud, I need to be able to tunnel in to see it from my iPad. Termius supports such tunneling. So you can open the Chrome browser on your iPad and point it to http://localhost:3000 and as long as you've configured and turned on a Termius mapping from port 3000 on your local machine (127.0.0.1) to whatever port you want to connect to on your cloud machine, you're off to the races. As an aside, I had to use iptables to block public access to the port I listened to on the server. This way no one can see my dev server even though it's on a publicly reachable cloud server.

So with ShellFish, Textastic, and Termius I am up and running. My cloud dev machine i rented from Linode. I use a 4GB dedicated machine. It costs $36/month.

One thing I am pleased to discover that I don't miss is Emacs. People who know me might be surprised that I can do without Emacs. Textastic has a find feature, but it does not have a find-and-replace feature. To alleviate this, I found myself learning to use GNU Sed. You can do a lot with sed at the command line. I had to rename a package name on my app and sed, xargs, and find were able to make that not-so-difficult for me. I had to rename a model and sed came in handy there, too. Just be careful. Sed is powerful and I had to spend 20-30 minutes debugging a problem I introduced with it on one of my renames.

There are problems.

  1. Textastic and ShellFish don't work sometimes. Sometimes when opening and editing a file, especially one very recently generated outside of Textastic, one of these two apps starts creating collision-avoidance files. For a file like MyApp.java, the files I'm referring to get names like MyApp-2024-03-26.java, MyApp-2024-03-26-2.java, etc. I wrote a Ruby script that scans my source files and deletes files that look like this. I have to use it about once every 5 hours.
  2. Textastic and ShellFish sometimes take a moment to upload a file. This can be really confusing, because you'll see an error that you think you've already fixed. You trust the compiler and feel stupid, when really the problem is that the compiler just has out-of-date source code and your changes haven't propagated up to the cloud yet.
  3. The Chrome dev tools are not available on iOS. Neither are the Firefox ones. Goodbye JavaScript console. Goodbye hot-editing of CSS. Goodbye view source (yes, really). I had to write a custom logging feature to give me some feedback on JavaScript print statements I would add to my code. This was somewhat helpful but nowhere near what I would call a solution. Who knows when we'll get the dev tools on iOS.
  4. A 4GB RAM $32/month dev machine is not nearly as powerful as a recent MacBook Pro. I feel the pain on every compile and test suite run. Of all of the problems I've mentioned so far, this one is the most onerous. I tested an 8GB Linode, and it went faster, but it didn't feel worth the money to me. The 4GB dedicated CPU machine was an upgrade from where I started - a 2GB shared CPU machine.
  5. Sometimes Textastic is so lost that I have to reboot my iPad. I've even had to hard-reboot it once. This hasn't happened to me for about 2 weeks so maybe patches have helped?

I use a fullsize bluetooth keyboard.

The last thing I'll mention is that I am using an iPad with cellular service. I pay for a plan with Verizon. They say they throttle me down after 30GB of network transfer. I regularly exceed that monthly allowance within a week, but the throttled speed is still plenty fast. I've noticed no hardship from throttling.

I love programming on an iPad very much. One of the other things I've been using my iPad for is studying, using Kindle. I like that the act of doing tech stuff has been rendered relatively simple. Do we really need powerful PCs? If and when I work at a normal job, I would be pleased to use a "real" computer on-site. But if I'm doing stuff from a satellite location like my home, I like where development on an iPad is at.

From Ruby on Rails to Relatively Plain Java

The problem with the Ruby on Rails library, compared to other libraries like PostgreSQL, is that Rails is mostly trying to apply the DRY principle across multiple web server projects, whereas the PostgreSQL library is making difficult algorithmic design decisions. That PostgreSQL actually listens to a TCP socket while Rails establishes a shared runtime with your project is incidental to the argument I am making in this blog post. Libraries that are predominantly concerned with DRYing code disenfranchise the developers who make use of them. They add a layer of hardship because you typically don't have easy access to their source code if and when the shit hits the fan somewhere from within their complexity. Beyond the distanced access to the code, they add a challenge because their complexity is daunting even when your app is still relatively simple in scope (again, when problems emerge from within them).

To join my side on this, you have to be able to hold a B-Tree index implementation as distinct from a piece of ORM code that merely generates an SQL Insert statement, based on a struct instance and table schema it found somewhere. Otherwises you're just going to counter that nobody wants to write B-Tree indexing 10 times in their life when they can just count on PostgreSQL to do it one time for them (and everyone else).

If you wrote B-Tree indexing on two projects, and decided to pull that logic out into a library that the two could share, you would not call that "refactoring". "Encapsulation" would be a better term.

I decided about a year ago that I wanted to write a web app using Java. It would be my first time seriously using Java to perform a task. I was coming from a 10+ year background in Ruby on Rails. What were my goals?

I wanted my app to be simple. I started off by investigating Spring, both the framework and the Spring Boot wrapper. I investigated the ORM facilities in it and Hibernate. I decided that I wanted my app to be simpler than a spring project. I didn't even want to use dependency injection. I started out with Spring Initializr and spring-boot-starter-web. Slowly, I pulled out the Spring Boot wrapper, and eventually even spring-beans. I pulled out the spring-webmvc support. I pulled out Hibernate. "Simple" for me meant that I wanted to spend a lot less time reading documentation and more time writing code.

Without Spring, I needed to do some work to get to what I thought was minimal infrastructure on which I could start addressing project-specific requirements. I determined that I wanted infrastructure for at least these features:

  1. The concept of a MVC Controller
  2. The ability to test a controller action, e.g. a GET request from start to response body.
  3. Asset fingerprinting
  4. Database migration support
  5. Basic SQL statement support
  6. SQL transaction support
  7. Simple app configuration
  8. The ability to launch the app as an executable from the command line
  9. Related to 8, a systemd service unit for the app
  10. A way to store user sessions within a signed browser cookie

I also made use of some libraries to provide me with some features. These included:

  1. Embedded Tomcat and the Jakarta API for the bottommost webserver layer, and basic Request/Response encapsulation, respectively.
  2. Hikari for a database connection pool
  3. log4j2 for logging to STDOUT with log levels
  4. Thymeleaf for templating
  5. The Typescript, esbuild, and scss npm projects for building frontend CSS and Javascript
  6. JUnit for unit testing, and Mockito for mocking support. I built my own factories.
  7. Jackson for JSON help

None of the things on these two lists really had any instrinsic relation to my application's requirements. They were very generic needs. But, I couldn't start to work on my application until these pieces were in place.

I spent what felt like a month migrating from a Spring boot "hello world" project to a place where all of the above was taken care of, without the use of Hibernate, spring-beans, spring-webmvc, or spring-context.

The most obvious consequence of my approach was that writing features took longer. There was one task that I estimated writing in Rails would have taken 10 minutes, but which I spent 3 hours on. It was very easy for me to forecast 5 hours for a feature that I thought was kind of small, but here I was. I didn't have the powerful ORM features at my disposal. I had to write SQL for any database need I had. I had to write unit tests, both at the model level and controller level, for every feature. And of course I had to strongly type my app.

Another concern I have about Rails is that it is dynamically typed. This means that there is no compiler to help you find type errors at a compile phase, whereas with Java and Typescript, you do get support with that. Yes, it takes a little longer to write your code but at least you don't feel hopeless when it comes time to refactor a big chunk of your project. Refactoring in Rails is a nightmare and your unit tests become extremely important in that context. You breathe far easier when you know the Java compiler is going to see what wires you did not reattach correctly.

I do not feel like I escaped writing unit tests. There is the argument that if you're just going to write unit tests anyway, then what is the point of typing? Is it not redunant with the unit testing? My response to this is that as a developer, you want to know in the fastest amount of time that you've made a mistake, and unit tests are not the fastest way to know that. The compiler is faster.

Even though the there was a greater expense of time on this project, the result that I arrived at was more sturdy. If you were developing a video game, wouldn't you want it to never crash? If so, why would you not embrace static typing? Video games are silly wastes of time, as everyone knows. But we still want them to work. Where pride is concerned, I think you want your video game to work just as much as you want code in the NASA Space Shuttle to work. Aren't you willing to wait a longer priod of time for your code to be done, then? This way your app is sturdy. When I say sturdy, I particularly am referring to when refactoring time comes. You can make adjustments and not feel so terrified that you're going to break what was working yesterday.

I wrote above that libraries like Rails disenfranchise the developers who work with them. On this project of mine, I went to use the Devise gem on a toy Rails project while building a tour of some Ruby code. There is a step in the Devise setup where you invoke a Rails generator. All the crypticness of Rails came back to me when I invoked that. I had no idea what it was doing. Why are there ~50 files in a Rails project when I haven't even done anything yet? The Rails library is supposed to support the thousands of Rails projects out there. When you use it, all of the if-statements that have gone into supporting 9,999 other projects besides yours suddenly become your responsibility. It doesn't seem that way, but that's the reality, isn't it? You're responsible for what your app does even if you choose to use Rails. But do you really feel responsible for all of the code inside of Active Record? You're responsible to your customers regardless of what library philosophy you choose. If you choose Rails, you're inheriting responsibility for thousands of lines of code that you know very little about. That places you in an unfair position of powerlessness. And as I mentioned, when it's time to debug that code, it's not in the Zeitwerk watch list, so you have to restart your app every time you edit the outside source. That's after you've navigated outside of your project folder and into the gem sources to find it.

You could wonder how I feel about Sinatra. That's simple, right?

If I were to pursue the above philosophy with Rails, I would write a Rack app without Sinatra. Rack would be where I draw the line. I'd use rspec, still. I'd get controller infrastructure going on my own. I'd use haml or erb for my views. But I wouldn't use Rails, Sinatra, or Active Record.

There is an enormous movement called convention over configuration. I think it would be redundant for me to evaluate it here, given what I've already written. I am much less of a fan of that movement as of today.

Saturday, March 9, 2024

Coming to Terms with the Work in Front of Me

On approximately March 3rd, I made a good-size donation of money to a streamer on twitch.tv. Twitch, over at www.twitch.tv, is a place where streamers can play videos games with a web cam focused on themselves, and audience members (like me) can watch them react to the video game they're playing. There is a chatroom where the streamer can read messages that I type. Others in the chat also type in messages. So there is communication going back and forth.

Over the years, I have donated a lot of money to streamers on twitch. I've made a couple sizable donations to male streamers, but most of my donations have gone toward female streamers.

Sometimes the reason I donate is because the streamer provides an environment wherein I can find attention. I mostly do not care that much about what other chatters are saying. Mostly, I care about what the streamer has to say to me. That's been true for awhile.

When I donated to the streamer on March 3rd, she got happy. She is young and friendly and she thanked me. She also asked me how I was doing.

There is a specific situation that arose leading up to that day, which is that I finally was able to overcome much of my fear of studying. So, there was something I wanted to celebrate.

Many, many times I have donated to a young female streamer on twitch because I feel like having someone to celebrate a good thing in my life. The attention that I get gives me a high. Years ago, I used to frequent strip clubs and when I would buy a VIP dance from a stripper, I would get a high. I felt at those times like I was in a symbiotic relationship with the stripper: I was paying her to entertain me and excite me. Afterwards, the stripper almost always said thank you. Sometimes I got a kiss on the cheek.

I stopped attending strip clubs in 2017, but at the same time I took up donating to women on twitch. Again, I felt like I was in a symbiotic relationship with the women there. I would support their streaming in exchange for their moral support of my life.

Today, I got up and did a couple hours of studying. Last night I did five hours of programming and two hours of studying. I am putting all of this effort into my skillset as a programmer because I want to be independent again some day. I want to show that I can support myself. I want to thrive as a programmer. I don't want to live paycheck to paycheck. I want to have a savings account.

Mentally, I've reached a point where I am really losing my desire to seek the company of streamers on twitch. I've worked about 30 hours during the past 7 days. I haven't earned any money for that effort. Yet, I know it is what I want to do. How is it that I am able to do this?

To cut closer to the chase, do I want to continue to celebrate my motivation to work with streamers on twitch? What for? I could, if I wanted, uncork some more money and donate again to someone in the near future. I could share the positive news with them that I am working diligently, and that this is something that I am proud of. But what for? They can respond "Hey that's great Mike!" but how would that make my life any better? How would they be informing me of anything I don't already know?

Forget about work for a second. Today I had tacos from Chipotle. Do I want to share this fact with a streamer on twitch? What for? What do I care whether they share or do not share my appreciation for chicken tacos. When I take a bite of a taco at Chipotle, and I chew on it, I can taste the chicken in my mouth, and I feel happy. How is someone else's opinion of tacos going to make me any happier?

These arguments I'm making didn't used to be effective. But tonight I feel exhausted of something. I just don't see the point in seeking praise from other people about what I am doing in my life anymore. I am incredibly confident that I am doing everything in my power to take care of myself. I wasn't working 30 hours a week two months ago. But I am now. I'm doing it for no pay. And a sizable portion of that work is just me studying my computer textbooks. This is a lot of stress for me to be taking on but I'm doing it.

The fact that I'm doing as well as I am - motivation-wise - has made me question my old longings for companionship or support. I am mostly thinking of the support of young, pretty women when I say this, but it goes just as much for men too. I don't feel like my life will be better if I find out a male peer or female peer endorses Chipotle tacos.

I had a special experience a few months ago when my sister offered her perspective to me during a stressful situation, and that experience really made me see how friendship could be a boon in my life. But there is distance between that, and the moral support that I've been describing above. I feel like I am mostly feeling a sense of loss when it comes to having moral support. I feel apathetic about it, as you can see from what I've written.

There is a group of software developers that hold meetings coordinated through meetup.com. I plan to attend those meetings, in the hopes of making friends. I tried to attend one a couple weeks ago but there was some miscommunication about our virtual meeting room. The group is all local people. So this could lead to something for me.

I don't know what I'm going to have to say to the people at these meetings. I guess conversation is easy enough to make, but are they going to help me with my work? No. Work is what I have to perform. Work is how I can gain money and support myself. Friends can help you move from one place of living to another, but so can movers if you pay them.

I really like how entertaining a young, pretty woman can be. This is a big reason I like K-Pop as much as I do. I go on YouTube and watch K-Pop music videos a lot. It's very easy. It's conversationless, too.

I don't know what I have to say to an attractive woman anymore. Now in particular, since I seem to have come to terms with the need to perform in my career. It's very obvious to me, the path forward to gain employment again. I think it's obvious to most people, but so many of us want to party in the name of comfort to relieve ourselves from stress. I am regaining a certain arrogance that I used to have when I was younger. The pressure of life is me. It's not some employer. It's not the threat of financial difficulty. It's me. I'm the one who makes me work. Not need. Not fear. Fear is what I proactively overcome, now.

And so this is where I find myself.

Wednesday, March 6, 2024

Famous

If I were a cool guy, how would my life be different during downtime?

Right now, I am in the habit of either studying one of my two computer textbooks, or writing code for one of my apps. So I'm doing work.

I get tired of doing those things. It feels like general fatigue. It's as if I want to take a break from concentrating.

At the end of my day, it is common for me to conclude that I am relatively exhausted. When this happens, I go and lay in bed. I bring my iPad with me and I open the YouTube app, and I watch Arrested Development clips. I do this even when it's not bed time and I just want to do something other than work.

Arrested Development is off the air. No new episodes are coming out. I don't pay for episodes - I only want to watch the free clips that I can get on YouTube (although I do pay for YouTube Premium). Both of these facts mean I'm constantly rewatching the same favorite clips from the small pool that I have available to me.

I face a similar situation if I want to watch The Office clips.

Watching full episodes of either of these shows is off the table. I don't want to pay money to watch a full episode. The actual shows at hand are not fun to watch, in my opinion. They hit gold once in awhile and that's what makes the content on YouTube very enjoyable. At least, up to a point.

I tire of my YouTube recommended feed. The grassroots content of YouTubers isn't really interesting to me. Video essays have a low ceiling on them for some reason. I feel that all the content creators are only producing content with a voice suitable for addressing people no more mature than what we'd find in a high school classroom.

I like working lately. I feel like I'm doing a good job and not running from challenges. If I become a cool guy by keeping this up, how will my life be different? Will I still feel bored during my downtime?

What if I were the president of the United States? Let's say it's 10pm, and my responsibilities are taken care of. It's my downtime. What do I do?

What if I were a rock star? It's 10pm. It's my downtime. What do I do?

I don't know the answer to this question.

Monday, February 19, 2024

The Chase of Happiness

Somewhere, we pick up the notion that happiness is attainable and where we want to go. I think there are many people who say that you're probably not going to be happy all the time, but they would encourage a child to try to chase it anyway.

I feel that happiness is less important to me as I get older. I don't think that this makes me a cynical person. I've found that having peace, and also pride, make me feel like I've chased the correct goals in my life.

I feel dread and pain sometimes when I go about my programming and studying tasks. I don't feel like what I would name happy. I don't think it matters to me anymore. I have a salve for just this occasion, and it is the two things I mentioned in the previous paragraph.

Saturday, February 17, 2024

We Need to Talk about Red Velvet

Red Velvet's music makes me feel like they are in touch with my dreams and subconcious. It is similar to the feeling I used to get when watching South Park.

South Park, particularly in its glory days, used to feature dialogue that sounded perfectly stereotypical of one fool or another. I would watch the show and feel like Matt and Trey were cheating by examining my dreams and pulling their script from my dream world. When a character on the show had a critical fault, it felt new to hear him or her speak and yet it felt perfect because it made me feel like I was dreaming while awake. I refer to my dreams here as though they inform my predictions of how people really are.

When I hear Red Velvet, I don't feel like they're just recycling the same two themes that circulate most kpop songs (have confidence and get a boyfriend). Rather, I feel like they're stretching their necks into the cosmos, finding whispers of calm, serious, rigid fearlessness, and handing this loot over to me in the form of their songs.

Here are some Twice songs off the top of my head:

  1. I Got You
  2. Chillax
  3. Go Hard
  4. Dance the Night Away
  5. Knock Knock

These songs fit the expected mold of kpop. They are about being nice, having confidence, even being a little cocky. Here are some Red Velvet songs:

  1. Umpah Umpah
  2. Parade
  3. Psycho
  4. Nightmare
  5. Will I Ever See You Again

There is no comparison. Red Velvet is interested in the other-worldly, the edges of what we know. They don't just recycle the cliche themes.

Much of the allure of Red Velvet lies in the simple catchiness of their music. I used to like EDM music and sure, Red Velvet scores points with me just because their sound is euphoric. But when they're excited about fare that would seem mundane to someone who didn't know they were making music with it, it elevates them to the highest level of entertainment.

By my judgment, Red Velvet is 10x as good as Taylor Swift. 3x better than Lady Gaga. 2x better than Twice. And I say that as someone who eagerly clicked the Twice I Got You making-of video as soon as it came out.

Thursday, February 15, 2024

Termius Port Forwarding Gotcha

When you setup a tunnel on your iPad Pro to forward port 8080 on a remote host to 3000 on your local host, make sure you give the IP address 127.0.0.1 and not the "localhost" hostname. Or you're gonna have a bad time.

Friday, February 2, 2024

Would I Earn Money Playing World of Warcraft (If I Could)?

No. It would feel weird. It would feel like a waste of my mind, for one thing, but for another, I don't want to play video games. I don't want to practice. I have a full life. There is practically unlimited challenge before me, as a programmer in this world.

I don't want to learn the Mythic mechanics of fighting Devos in the Spires of Ascention Shadowlands dungeon, when I can be learning how the Internet Protocol works instead. One of these enables me to assist a business in this world (which may happen to be a video game company), and one of these only allows me to provide assistance to four other people in a make-believe fiction universe. Courage informs both of these endeavours, but the Warcraft one is unnecessarily fabricated. People pay money to a video game company, to Blizzard, to have a good time in one of these make-believe worlds. I would rather work at Blizzard than get paid to play World of Warcraft.

Even if four people wanted to pay me to tank for them in a dungeon, it would be a misuse of my time. It is not the way I want to demonstrate to coworkers that I can contribute to their team. You sink an enormous amount of time into WoW, and you can't take that game knowledge elsewhere with you in this world. That knowledge is confined to only that game.

I can conceive of some players making money tanking in WoW, but it's weird. Why would you pay money to someone for something that is supposed to be make-believe. Why would you pay someone to face you in a boxing match? If you're entertaining others, I can conceive of paying someone to be on your team in a baseball game. But paying money to do something that is supposed to be beyond money is weird. The honor of participating in a dungeon run does not come from money. It is something you do for free.

I played World of Warcraft for eighteen months because Blizzard's products were like a home to me, and WoW was proxying for all of their products. I also played it because there was honor in playing it, and because it was beautiful. But none of these reasons is sufficient anymore. I can make my own home now. I do not need to tank or do quests to demonstrate to myself that I am honorable - there are other ways that my life affords. I know what beautiful is in the real world. I don't need WoW to show it to me.

I can also imagine a person who makes a living playing video games for game companies. He tells them whether their game is enjoyable to him. He would be like a "taste-maker" (lol). His opinion would be valued like the villain in The Devil Wears Prada. Such an occupation is not something I am interested in doing. Because again, I am not in search of an emotional home, honor, or the beautiful.

If a game company wants to hire such a person inhouse, that is a little different. At that point you're not playing the game for enjoyment, and you are providing a service, and you have a job that relates to consumer demand again (like me and my software development career). I could fathom doing that but that is no longer playing a video game for its home-making ability, honor in gameplay, or beauty.

Thursday, February 1, 2024

Rating the Parks and Recreation Characters

Here is my tier list of the characters in Parks and Recreation:

Tier Characters
S
ARon, Tom
BApril, Chris
CBen
DAndy, Ann
FLeslie

I didn't list Donna or Jerry because they have relatively minor roles.

If I had to list a few notable guest characters with which I am familiar, the ratings would look like this:

Tier Characters
STammy 2
AJean Ralphio
B
C
DTammy 1, Monalisa
F

I have never watched more than several episodes (from the early seasons) of this show, so my ratings are based on clips I've seen on YouTube.

I'm not sure what defense to make for my listings. I really like Tom because he commits to being interested in a metrosexual life. He is like a gentleman, or endeavours to be one. Metrosexual is an unfair term that sells him short.

Ron is a reliable standby who most people like. I don't think he is S-Tier, like Tammy 2, because he is too normal. I say normal because I am comparing two giants. Tammy 2 is a villain and overcomes Ron, Jeremy Jamm, and seemingly other men off screen who we don't get to know. Unlike Tammy 1, who is too difficult to find credible, she loves herself and the drama that she stirs up.

April is another standby like Ron. When she and Ron team up, the show really takes off. I do not think that she and Andy ever team up because Andy is unlike her. He is just a kid. We're supposed to like Andy for being boyish and care-free. Sometimes his jokes land but they don't give him any direction. April is a rebel, like Ron is. Andy is middle-of-the-road; he is too childish and cartoonish to ever take seriously.

Leslie is the lowest ranking character because all she does is go around being nice to people. The reader may find it amusing that I put her and Tammy 2 into opposite positions. Leslie has little comedy to perform. She occasionally is painted to be out of control, like when we see her house and she is a hoarder, but these are very short-lived moments. Leslie can never be evil, cartoonish, or in rebellion, so her lines are forgettable.

Chris I put ahead of Ben because he is interesting as a man who loves attention to detail and diligence. He is carved out as a counterweight to what Ron stands for. He is welcome because he is providing material for argument.

Jean Ralpio is a great peak into what Tom might be if he let himself go. He approaches being a villain, like Tammy 2. His sister is too much of a caricature to be his equal, though. She is a straightforwardly selfish person, but with none of the determination that we see in Tammy 2.

Ben is more interesting than Leslie. We get to see him fall to pieces more than once. The time he spends being nerdy for the sake of other characters' criticism or belittling is boring and cliche. Thus he occupies the middle of the ratings. His enthusiasm for what he believes in makes him good TV fodder.

Ann is as boring as Andy. She is Leslie's friend and April's foe. She gets midly irritated by others, complains to the camera, and has no opinions of her own that stand out. If TV consisted of just Ann's, it would be unwatchable.

Wednesday, January 31, 2024

Everglow’s Slay

I hadn't been near music for some months and I recently went to check out what has been going on among K-Pop groups I like. One of them is Everglow. I went to listen to "Slay" and I was disappointed.

Everglow has historically been a group that tries to be really tough and cool, and I've always found that their music videos have imaginative and wall-breaking machinery in them, so that calling their music cool feels safe. But Slay felt like it was just demanding a label of "cool" without earning it. I did not see coolness in its core machinery.

I have not added Slay to my playlists.

Something similar happened to Itzy's Born to Be. It's not that I don't think it is cool. I don't think Itzy is the type of group that strives to be cool like Everglow does. The sound of Born to Be is generic to my ears, particularly the chorus, even though its opening gimmick is catchy.

The sound of Itzy's Untouchable is okay and I added it to my playlists.

The group I've found a surprising affinity for is Red Velvet. I love how weird their music is. It's consistently weird and yet right on target. I've dug up some of their less popular songs, like "Nightmare" and "In My Dreams" and they're terrific finds. I have a small playlist of Red Velvet music that I prefer to, say, a small playlist of Twice music.

Blackpink has a couple of entries on my very large playlist, but a lot of their early hits I've excluded (even though they were quite good). I'm just not interested in their old stuff at this time.