New Year Reading Plan

Next year I want to encourage my children to read the Bible through at least once. However, I found that most yearly Bible reading plans repeat reading the books of Psalms or Proverbs. Sure, that feature may make normal daily reading more enjoyable for adults, but extra reading is too much for children who have never read the Bible before. I wanted a plan for my children that would get them through the complete Bible and not repeat any verses. Unfortunately, most reading plans I found for children were not the complete Bible. This meant if I wanted them to read the Bible through once without repeated reading, I had to make my own plan for them.

Luckily for my children, their dad is a computer nerd. I loaded up my database with data from scrollmapper to get the book, chapter, and verse bindings. Then I proceeded to calculate the total number of verse in the 66 books of the canon of Scripture – 31,102. To make it as easy as possible, the plan would have to have an equal amount of verses for each day. (Sadly, 31,102 does not reduce into 365 or 366 rounded segments.) I was able to get all the verses into a yearly plan by having the first 77 days with 86 verses and the remainder of the year at 85 verses a day (77*86)+(288*85)=31,102.

Even with the reduced number, it seemed 86 or 85 verses a day might be too much for a 7 year old to read in one sitting. Therefore, I split the reading into two sections – morning and evening portions. The morning will have 43 verses and the evening will have the remainder. Thus, if a child cannot read all 86 verses in one sitting, they have opportunity to break it up in the day. Based upon my youngest’s reading speed, it will take him approximately 45 minutes a day to complete this reading plan.

Because this will appear to be a very difficult task for my children – to read the Bible from cover to cover in a year, we are offering them 10 โ‚ฌ per month of completed reading. Hopefully this will help them conquer bigger tasks in the future.

The generated plans and code (for leap and non-leap years) are available at https://gist.github.com/andrewwippler/b0977ef9d8c8c79483ef9110f3cb53ae

From nginx to traefik (and solving X-Forwarded-For)

I recently switched my home setup from nginx to traefik. I had to get used to the new configuration styles and weird doc style of traefik, but suffice to say, I am happy at the end results.

Traefik ships with SNI, allowing me to snoop the connection and prevent unauthorized access to my file server. (One must have the correct hostname to see my shared photos.) My first action was to replace my edge nginx reverse proxy with traefik. If this was a success, then I would move onto replacing nginx in my k8s cluster. I was surprized that after zero OS tuning changes, traefik was able to serve pages faster for my k8s cluster. I initially thought that traefik would perform marginally slower than nginx due to additional HostSNI checks, but that was totally disproved by the first page load.

After switching to traefik inside my k8s cluster, performance improved even more. However, a new problem emerged: I was getting the IPs of my internal traffic logged instead of the real origin IP. While I would not normally care, malicious bots were attempting to brute force my WordPress installations, and I need to block their IPs.

I was able to get the X-Forwarded-For header populated with the true ip by enabling the Proxy Protocol on my edge traefik, setting externalTrafficPolicy: Local on my traefik k8s service, and finally telling traefik to accept the proxyProtocol information from the edge server.

# Edge Router providers.yaml
...
tcp:
  routers:
    to-web:
      service: web
      rule: HostSNIRegexp(`www.andrewwippler.com`, `andrewwippler.com`, ...)
      entryPoints:
        - web
    to-websecure:
      service: websecure
      rule: HostSNIRegexp(`www.andrewwippler.com`, `andrewwippler.com`, ...)
      entryPoints:
        - websecure
      tls: 
        passthrough: true
services:
    web:
      loadBalancer:
        proxyProtocol:
          version: 2
        servers:
        - ...
    websecure:
      loadBalancer:
        proxyProtocol:
          version: 2
        servers:
        - ...
...
# traefik k8s deployment and service
# missing service account definition and CRDs
apiVersion: apps/v1
kind: Deployment
metadata:
  name: traefik
spec:
  replicas: 3 #<-- one for each of my nodes, for failover
  strategy: #<-- forces k8s to update pods on configuration change
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  selector:
    matchLabels:
      app: traefik
  template:
    metadata:
      labels:
        app: traefik
    spec:
      affinity: #<-- one replica per node
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - traefik
            topologyKey: "kubernetes.io/hostname"
      serviceAccountName: traefik-ingress-controller
      containers:
        - name: traefik
          image: traefik:v2.10.3
          args:
            - --entrypoints.web.address=:80
            - --entrypoints.websecure.address=:443
            - --entrypoints.websecure.http.tls
            - --entrypoints.websecure.http3
            - --experimental.http3=true
            - --providers.kubernetesingress
            - --providers.kubernetescrd
            - --log.level=DEBUG
            - --entrypoints.web.http.redirections.entrypoint.scheme=https
            - --entrypoints.web.http.redirections.entrypoint.to=websecure
            # - --accesslog
            - --entryPoints.web.proxyProtocol.trustedIPs=127.0.0.1/32,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 #<-- local CIDRs
            - --entryPoints.websecure.proxyProtocol.trustedIPs=127.0.0.1/32,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 #<-- local CIDRs
          ports:
            - name: web
              containerPort: 80
            - name: websecure
              containerPort: 443
---
apiVersion: v1
kind: Service
metadata:
  name: traefik
spec:
  type: NodePort
  selector:
    app: traefik
  ports:
    - protocol: TCP
      port: 80
      name: web
      targetPort: 80
    - protocol: TCP
      port: 443
      name: websecure
      targetPort: 443
  externalTrafficPolicy: Local # <--- changed

How do you repent from sin?

How do you repent from sin? How does one get all of their sins forgiven? These questions often fill the minds of those who have sin. Perform a search query on a popular web indexing service and you will find many interpretations of these questions.

I was surprised at the results from the Church of Jesus Christ (LDS, Mormonism) and popular writings concerning Allah. They both came to the same conclusions that one must be performers of an action in order to know for certain they have been forgiven. For the mormon, one must keep the commandments of God, and for the Islamic worshipper of Allah, one must follow the four R’s. A logical flaw is present in both of these conclusions – humans are not able to repeatedly reproduce perfect outcomes.

For example, If I were to present a list of 10 questions and to a person for 1 minute. Then if I were to request that same person to fill in the answers on a new paper with only the questions, the person might get it correct on the first try. Now, if I were to repeat this process to the same person – showing 10 new questions and answers – eventually, the person will miss a question. It may not be immediate. It may take days before the person gets a question wrong. However, that person will get a question wrong – not because the person is uneducated or lacks memorizing ability, but because he is a human.

One of my favorite hobbies is computer science. I read a lot of technical papers and designs. Still, with all the advancements that have been made, computer bugs find a way to exist. Even with the best error correction mechanisms in place, humans find a way to create flawed computer code that does not work. It is not because they lack intelligence in organizing words and characters into computer instructions, but because humans lack the ability of perfection.

All humans are flawed humans. At the risk of losing credibility, I must also admit that I have the capacity to be wrong. I am flawed. In Bible terms, this is called being a sinner. As a sinner, I have sin and this sin causes me to be imperfect. At one point in my life, I asked the right question – how do you repent from sin? – to the right person. The answer I was given was to place my trust in Jesus – to believe that Jesus is real, that He died on a cross for my sin, and that Jesus rose again on the third day. The Bible supports this fact: those who put their trust in Jesus are given forgiveness of past, present, and future sin.

It has now been over 20 years since I placed my trust in Jesus. Each day, I live in the reality of grace, with absolute knowledge that my sins have been forgiven.

TIL: Zoom has captions

The Zoom application has built in AI captions for various languages. It is great for those hard of hearing to read the words that are spoken.

In other news, you can select the spoken language to be in Finnish, speak in English, and get wonderfully funny sentences in Finnish.

Who is the author in AI-generated content?

As AI tools are becoming more frequent, many have found interesting use cases. Some are using AI tools to publish children’s books or other creative works primarily done by humans. However, when one publishes a work that was generated by AI, who is the author of the work? Should a notice be included or a sub author be added to the work that was derived from an AI tool? If two publish a paragraph of the same text at the same time from the same AI tool, who gets to declare that they were the original work?

These questions are difficult to answer through legal matters. Consider the following paragraph:

# Sheep: The Domesticated Mammal

Sheep have been domesticated by humans since Creation. They have been bred for their wool, milk, and meat. Specialized breeds Despite their seemingly simple appearance, sheep have a lot of interesting physical characteristics, a unique relationship with humans, and a crucial role in agriculture that make them an important part of human life and civilization.

## Physical Characteristics of Sheep

Sheep are mammals that belong to the Bovidae family, which includes cows, goats, and antelopes. They are herbivores and have four-chambered stomachs that allow them to digest tough plant material efficiently. Sheep have thick woolly coats that can be white, brown, black, or gray. The wool serves as insulation and protects them from the elements. Sheep are social animals and prefer to live in groups called flocks. They have excellent hearing and can detect sounds up to 10 times better than humans. This heightened sense of hearing helps them stay alert to potential predators.

## Sheep and Humans

Sheep have played an important role in human civilization for thousands of years. They were one of the first animals to be domesticated, and their wool, meat, and milk have been used for various purposes. Sheep have also been used for their skin, which can be made into leather. The wool from sheep has been used for clothing, blankets, and carpets. In some cultures, sheep are also used for religious ceremonies.

The relationship between sheep and humans is unique. Farmers have developed a deep understanding of their sheep's behavior and needs, and shepherds have been known to develop close bonds with their flocks. Sheep are also used in therapy programs to provide comfort and companionship to people in need. Their gentle nature and calming presence have been shown to have a positive effect on mental health.

## Sheep in Agriculture

Sheep are an important part of agriculture. They are raised for their wool, meat, and milk. Sheep farming is a major industry in many countries, and the demand for sheep products continues to grow. Sheep are also used for grazing and can help control weeds and keep the grass short. They are often used to maintain grasslands and prevent soil erosion. Additionally, sheep are known for their ability to convert low-quality forage into high-quality meat and wool, making them a valuable resource for farmers and communities.

## Conclusion

In conclusion, sheep are fascinating creatures that have played an integral role in human life and civilization. Their physical characteristics, unique relationship with humans, and crucial role in agriculture make them an important part of our world. As we continue to rely on sheep for their wool, meat, and milk, it's important that we treat them with the respect and care that they deserve. By doing so, we can ensure that these gentle creatures continue to thrive and contribute to our society for years to come.

This article was solely developed through the Notion AI engine. (At first, I did not like the generated paragraph about sheep. I requested the engine to make it longer, which is the version posted above.)

Now consider this different paragraph about sheep:

Sheep have been domesticated by humans since the Fall of Man, with Abel offering a lamb of his fold to God in Genesis 4. Specialized breeds, such as the California Variegated Mutant or Finnish Landrace, display mutant-like qualities or produce more young than average. Nevertheless, all sheep today are primarily raised for their wool, milk, and meat. Despite looking seemingly simple, sheep have a lot of interesting physical characteristics, a unique relationship with humans, and a crucial role in agriculture which makes them an important part of human life and civilization.

Sheep are mammals that belong to the same animal family as cows, goats, and antelopes. Sheep are plant eaters and have four-chambered stomachs. Sheep are social animals and live in flocks, which sometimes makes them an easy target for predators. However, sheep have excellent hearing which helps them stay alert to potential predators. Sheep come in a variety of colors, such as white, brown, black, or gray. The thick, woolly coat serves the sheep by insulating it from the elements, which is why humans have used it for various purposes. 

Over time, farmers have developed a deep understanding of their sheep's behavior and needs, which has bonded shepherds with their flocks. Scripture records that David, as a young shepherd boy, fought both a lion and a bear to rescue his sheep. Some have begun using sheep in therapy programs because their gentle nature and calming presence have been proven to have a positive effect on mental health.

The demand for sheep products continues to grow, including their physical presence in a field. Sheep have an immense desire to eat, which helps control weeds and keep grass short. Sheep are  rented out to maintain grasslands in some areas. Additionally, sheep are known for their ability to convert low-quality forage into high-quality meat and wool, making them a valuable resource for farmers and communities.

Sheep share an important part of our world. When we treat them with care, we can ensure that these gentle creatures continue to thrive and contribute to our society for years to come.

I produced this second article using a summarization technique after reading the first one. These words were formed from using a combination of editing the underlying text and inserting my narrative. Could that mean I co-authored the text with AI? I am certain that I could fool people into thinking the second article is my original content; however, I would be in a difficult spot if I were to be asked to produce sources of the claims. (Although, I did do a little research which uncovered mutant sheep.)

Who is the author of a published work that is generated by AI? It is an AI program. Proper attribution to the rightful author should be mandated everywhere. Until that time comes, one can spot AI generated content through its lack of sources cited and repeated textual patterns.

Personal Tech Debt

This past week I have been able to traverse down the rabbit hole of personal tech debt. After a week’s work, I think I was able to get to the bottom and give everything an updated timestamp! All kidding aside, here were some of the projects I was able to revisit:

Kubernetes Cluster

My k8s cluster hosts websites, internal applications, and personal projects. While many choose to host their services on cloud services, I find it easier (and cheaper) to run it in a controlled home cluster. This week I was able to troubleshoot why some services were sluggish and crashing. After deploying prometheus and grafana a month ago, I was able to determine that my cluster was maxed out. I added another node to the cluster and performance improved. On a side note, I do not understand why people want to purchase barebone Intel NUCs when one can get everything included in a Dell Optiplex 5050 micro form factor.

Website redesign

My theme from 2015 was based on bootstrap 4 and had a few Admin UI bugs. The errors were only visible to me, so I have been putting it off for quite a while. This took me a morning to clean up with TailwindCSS. There are still a few UI features missing on the frontend due to a problem with my build and deployment process. I hope this new tech debt does not stay on the list for very long.

Personal Finances

I have been using GnuCash since 2014, and I have found that it is a perfect program for dual-entry accounting. However, it requires that I use a computer and the program to add or remove purchases. The reporting features are also lacking functionality; however, the program has been working flawlessly. It has been on my list to revisit how I do finances to see if a web-based solution would be better. Considering I now have multiple currencies, I need a program that could do both USD and Euro. GnuCash already has this feature and I found the new Alpha Vantage API to be quite buggy.

Considering I have been a longtime user of GnuCash, my file had some corrupted entries. GnuCash did not have any friendly warnings that would hint at the solution. I could not save the file in SQLite or in MySQL to use the Python library piecash.

I looked at Firefly-iii and considered migrating to that – it had multi-currency support as well. The rules feature meant I could create a webhook that updates transactions from USD to Euro against the public trading exchange rate for that day. At first, this program looked promising.

I was able to export my files to simple CSVs and attempt to import and map them to appropriate fields. However, account splits did not export very well. I had to spend 4 hours manually importing my splits into Firefly-iii. Then I tried importing new CSVs from my bank into Firefly-iii and I found that I would have to spend several minutes creating rules in Firefly-iii. At this point, I realized that these rules were already programmed into GnuCash. If Firefly-iii existed in 2014, I think I would have begun my personal finance with it, but the work required now to migrate to this solution is, in my opinion, not worth it for me.

In GnuCash, I can import CSV, QFX, and QIF. I can map the transactions quickly and easily. Since 2014, GnuCash has been training on my data to give me a personalized experience, which has kept me on this program. It has served my financial banking needs, but now I realized I had to figure out the corruption problem.

GnuCash Corruption problem

Tech dept often snowballs into bigger problems. I was facing the largest snowball in existence. How am I supposed to find this transaction_id that the GnuCash error was telling me? I cannot save the file as SQLite to use the piecash python library to find it. It seemed hopeless.

Then I realized I am a forgetful nerd.

In my attempt to create a clean, XML export to CSV of GnuCash, I came across a PHP GnuCash XML library. I then created a script which outputted all of the information I needed for exporting GnuCash XML to CSV. The odd transactions, which had errors, were searchable in the CSV my script created. I was able to find and fix my GnuCash transactions. Then, I was able to successfully save my GnuCash file in SQLite.

I still laugh at the GnuCash error: Transaction description cannot be null. My faulty transactions had the string “null” in them. Once I removed the string, saving worked.

New tech debt

The processing of my personal tech debt is down to two items: 1.) Fixing the CSS bugs in my new website theme. 2.) Creating scripts to extend GnuCash functionality through the SQL backend. I think I can work on some of these next month ๐Ÿ™‚

Speaker Windows

I have been working on a personal project to organize my preaching illustrations. Whereas one could use a tool such as Notion, Evernote, or Obsidian, I have had a desire to keep my data in an easy to use interface. I should not have to spend 10 minutes to find that illustration I need. Plus, those services might charge me more than $3/month to access advanced features I may become dependent upon.

Over the years, I have collected over a thousand notes and jots from various sources, which I have been storing in Speaker Illustrations. However, the time has come to add features (such as attaching images or videos) and I am not very proficient in Rails to make such a change. I have re-written Speaker Illustrations in JavaScript using React and Nextjs, with an API provided by AdonisJS. I have called it Speaker Windows because an illustration is just a window for people to look through to understand your meaning.

Anyone can host their own copy of Speaker Windows, but I know how most who would benefit from this service are inept to install software on a server. Therefore, I have designed the application with multi-user auth. Anyone can register for an account on my publicly hosted instance.

The new features have yet to be added, but the project is now at the same functionality as my old implementation. Currently, I am satisfied with the rewrite and am happy with using NextJS and AdonisJS in future personal projects, such as a shopping list app to replace our use of Google Keep. (There are rumors Google Keep is being axed.)

What will cause you to change?

“I am right. Therefore, you must change.” This is a common sentiment among anyone who holds an opinion. Major convincing arguments are then given as to reasons why others must change to your point of view.

It is proud to assume that you have all of the right answers to everything. To make such a claim is to decree that you are like God: all-knowing and perfect in every way. However, any human cannot make such a claim. Humans are notorious for failure.

Did Edison invent the lightbulb on the first try?
Did all the Apollo missions succeed without incident?
How many attempts did it take Spacex engineers to land a rocket? Was it 1?
How many answers did you get wrong on all of the tests you took in school? Was it 0?

As a human, I understand my faults. Compared to a Holy God, I can never be perfect. Thankfully, this God offers forgiveness of sin through placing one’s trust in His substitutionary death on the cross. Oh, what freedom I experienced when I trusted Christ!

Now, as I have been a Christian for over two decades, it disturbs me at the audacity of some who claim the inability to change their opinions. Our sacred text shows a few examples of the opposite. Job had an idea of God, but when he saw Him, Job’s lifestyle changed (Job 42:5-6). Paul admonished the reduction of one’s liberty to maintain the edification of one another (Romans 14:19-21). Even the early church demonstrated the necessity of change to minister to the needs of those who were experiencing poverty from becoming a Christian (Acts 4:32-35).

Christianity is not a list of stubborn rules which are unmovable. Instead, it is a journey leading one “to be conformed to the image of his Son” (Romans 8:29), and it is built upon continual scrutiny of one’s decisions (Romans 12:2). Change (or demonstration of critical thinking as to why one is not changing) is an indicator of one’s belief in God. “We have always done it this way” is not acceptable thinking in Christianity. Change must be performed when necessitated.

What will cause you to change from your position? What evidence is required for you to stay with your current thinking? Defining these should be a requirement for any individual desiring to hold a position of ministry.

Three goals in Bible Reading

Recently, I evaluated why I take time out of my day to read the Bible. I have heard that the Bible has one singular meaning. If that is true, then reading the Bible through once is sufficient. However, those that promote singular meaning also advocate for daily Bible reading. This seems like a logical fallacy, which should be addressed; nevertheless, I attempt to achieve at least one of these three goals every time I open my Bible to read it.

  1. Personal Growth
    I need to learn God’s view of man’s relations. I need to adapt my lifestyle to fit.
  2. Time with God
    Sometimes the only result I get is adding minutes to our relationship. When I was dating my wife, it did not matter if all we did was sit and watch an old movie. We were adding minutes of being together. The same is true for any relationship – time spent together matters.
  3. Finding a truth to teach others
    Pet peeves are often taught as truth; however, one must follow the logical, linguistic chain to find the truth that Scripture teaches. One must pull out the application rather than inject the thought into the text. One must be fully equipped in the truth to be able to teach others the same truth.

Link sharing in the blog era

I just remembered how painful it was to share content through a blog to friends. Social media, such as Twitter, solved that issue. I do not want to attempt trying to remember my Digg.it password (Does the site even exist anymore?)

Anyway, I said all of that to say this: I know where both of these locations are:

https://yle.fi/a/74-20016727

I can be excited for both the US and Finnish teams.

Extension to make Twitter more usable

After setting up an RSS reader and a bridge to pull in tweets, I no longer access Twitter. If there is interesting content, I click the link on my RSS reader and comment directly without visiting the Twitter homepage.

If I were a more regular user of Twitter, I think I would use this extension: https://github.com/insin/tweak-new-twitter

I might even install it for the few times a month I click on a Twitter link.

Depression and Anxiety

This morning I read from one of the people I follow a short, concise list of comparing Depression and Anxiety. It is quite good to read over, but I think it is quite lacking in its explanation. Primarily limited from the 280 character posts on Twitter.

I feel like I have authority to speak on this subject because I am the son of a medically-diagnosed bi-polar manic depressive and my other parent is anxious about living in the perfect climate known as San Diego, California. To say that I know what depression and anxiety look like would be an understatement. Not only have I observed it in my parents, but I have had seasons where the struggle between the two extremes was real in my own life. Now, as a parent, I view some of the struggles that I have seen in my parents and my own life beginning to surface in my children.

How does one overcome anxiety or depression? Here are some solutions:

  1. Find an anchor. An anchor is one that does not change over time. Some like to put their anchor in a schedule, in a relationship, in a religious set of beliefs, or in a church; however, those are false anchors.

    The only true anchor is God.

    David wrote, “Truly my soul waiteth upon God: from him cometh my salvation. He only is my rock and my salvation; he is my defence; I shall not be greatly moved.” (Psalm 62:1-2).
  2. Belong to a church that develops your connection to the anchor. Some like to evaluate this position to mean that the church has a ton of programs going on. However, the way to evaluate this section is if the pastor gives a sermon (or brings in men to preach on his behalf), that equip you to become better attached to the anchor. This is amplified through opportunities to use this attachment.

    Sadly, it is increasingly common to find a church in America that preaches republicanism where Trump is god or wokeism where everything must be accepted. If you increasingly feel better equipped to attack the other side rather than develop the peace which is in God (John 14:27), it is time for you to find a different church.

    Paul wrote, “For the kingdom of God is not meat and drink; but righteousness, and peace, and joy in the Holy Ghost. For he that in these things serveth Christ is acceptable to God, and approved of men. Let us therefore follow after the things which make for peace, and things wherewith one may edify another.” (Romans 14:17-19)
  3. Understand: depression and anxiety are temporary seasons (Ecc 3:1). If you are finding that they linger longer than expected, you might have to seek medical help. Medicine is the use of God’s created resources to aid in the sustainability of His creation.

    Anxiety is relieved when that particular worry is completely let go to be cared for by God (1 Peter 5:7). It is a difficult practice to learn, but God’s outcomes are better than mine.

    Depression has many causes and it is complex to even identify the reason for the depression. The worst thing you can do to yourself is to hide this depression from others. Seek help when necessary from your pastor or a Nuethetic Counselor he recommends.

    What makes me get into a depressive mood is when I am overwhelmed with tasks. I feel like I am drowning and there appears to be no deliverer. This is often caused by my own doing; therefore, it is solvable by me without the help of others. I have to remove tasks from my workload through completing them or not taking as many on as I would like. In recent days, I have discovered a new thing that contributes to my depression – a lack of sunlight. Whereas this only affects those who live in the earth’s extremities, the solution is easily known – take Vitamin D.

    When it comes to depression, one should not seek to self-diagnose or fix by one’s self. Depression is exaggerated when there is no one to help you. However, to this seemingly impossible season, the Bible is the source giver of hope:

    “There hath no temptation taken you but such as is common to man: but God is faithful, who will not suffer you to be tempted above that ye are able; but will with the temptation also make a way to escape, that ye may be able to bear it.” (1 Cor 10:13 – memorize it if you have not already done so!)
  4. If you are not currently going through a season of depression or anxiety, help someone who is.

    “And the Lord said,
    Simon,
    Simon,
    behold,
    Satan hath desired to have you,
    that he may sift you as wheat:

    But I have prayed for thee,
    that thy faith fail not:
    and when thou art converted,
    strengthen thy brethren.”
    (Luke 22:31-32)

Ironic

It is very ironic – to me at least – that when I visit drive.google.com on a Chromebook, I am presented with a notification to install Google drive.

This is a Chromebook.

Google apps are loaded by default.

This includes Google drive.

I just prefer the web experience over the native file explorer.

2023 – Return to the Syndicated Stone age (RSSa)

The new year has already been dubbed by some in the tech world as the year of RSS, meaning people will ditch social media for the consumption-style RSS feed. It is the same concept of switching from a smartphone to a mobile phone. You might be thinking, “Why would anyone go backwards in technology?” Everyone may have their own reasons for doing so, but mine is simply because of the social media trap.

The past few months I have noticed a personal, increased social media presence. I would have my app open 7 or 8 times a day, and because of the algorithms to keep me in the app longer, this would equate to 4 or 5 hours a day. I was managing to keep my studies, work, and family life balanced so I do not feel as if I have somehow lost that time or that I am wrong for spending that spare time on social media. It is just that 4 or 5 hours can be a bit excessive for a single particular hobby.

One of the items I have learned through osmosis is that having regularly scheduled checkpoints to evaluate my personal life is important. Just like the feedback loop in software engineering presents a better product, a feedback loop in daily life is just as important. Software engineering says the feedback loop should be the shortest possible to completion; however, my feedback loop is every 3 months. This gives me enough time to cycle through and evaluate how I am doing without changing too rapidly. This last iteration, ending in September, allowed me to gather the data to know I was spending about 24 hours a week on social media.

This current iteration was filled with thoughts of, “I know I need to do something, but what!?” However, when Elon Musk bought Twitter, everyone scrambled off of it to their own respective platforms. It was then I remembered that a solution exists in the form of RSS. The content I want to view and consume is retrieved without the help of a company’s algorithm of keeping me on their platform.

I settled for Yarr as my feed reader and RSS-Bridge for middleware when RSS feeds were not available. I am hosting these apps in my Kubernetes homelab and am using Github OAuth for authentication. While I have only tested this option for several weeks now, it seems to have kept me out of the algorithm octopus. Preliminary observations have shown 3-5 more hours for other hobbies – such as sleep, books, video games, blog posts, and other silly stuff that is interesting to me alone.