RSS Readers

This shows my attempts to find a suitable replacement for feedly RSS reader.
Bonus if I can self-host it.

Miniflux

Pros

  • easy to setup
  • uses j and k for navigation

Cons

  • the looks are pretty bad
  • must press o to “read my feed”, otherwise it only shows a list
  • does not load attachments automatically
    Before click:

    After click:
  • kinda difficult to organize feeds into categories
  • :x: using k to navigate back does not take me to the previous read article, but instead to the “previous undread”. WTFFFFF

Raven Reader

Not self hosted.
It is an app which I install on my laptop => cannot read from phone.


Template

Pros

Cons

Things I am interested in

  • the looks are pretty bad

  • must press o to “read my feed”, otherwise it only shows a list

  • does not load attachments

  • kinda difficult to organize feeds into categories

  • easy to setup

  • uses j and k for navigation

https://alternativeto.net/software/freshrss/about/

this looks pretty interesting and seems to work

they say it’s not self-hoster friendly, however someone made it work in docker. unfortunately, it needs at least 2GB of memory which is a FUCKING LOT for a simple RSS reader.

Is it worth testing? idk

this lsooks beautiful

:x: doesn’t work:

PS C:\a\commafeed> & "C:\Program Files\Java\jdk\bin\java.exe" "-Djava.net.preferIPv4Stack=true" -jar commafeed.jar server config.yml
INFO  [2021-12-03 17:31:29,125] com.commafeed.CommaFeedModule: using cache class com.commafeed.backend.cache.NoopCacheService
INFO  [2021-12-03 17:31:29,160] com.commafeed.CommaFeedModule: Graphite Metrics Disabled. Metrics will not be sent.
com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Unable to load cache item
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2048)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3850)
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3874)
        at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4799)
        at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4805)
        at com.google.inject.internal.FailableCache.get(FailableCache.java:51)
        at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:48)
        at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:155)
        at com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:595)
        at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:932)
        at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:852)
        at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:291)
        at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:222)
        at com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:938)
        at com.google.inject.internal.FactoryProxy.notify(FactoryProxy.java:48)
        at com.google.inject.internal.ProcessedBindingData.runCreationListeners(ProcessedBindingData.java:60)
        at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:133)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106)
        at com.google.inject.Guice.createInjector(Guice.java:87)
        at com.google.inject.Guice.createInjector(Guice.java:69)
        at com.google.inject.Guice.createInjector(Guice.java:59)
        at com.commafeed.CommaFeedApplication.run(CommaFeedApplication.java:110)
        at com.commafeed.CommaFeedApplication.run(CommaFeedApplication.java:64)
        at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:43)
        at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:87)
        at io.dropwizard.cli.Cli.run(Cli.java:78)
        at io.dropwizard.Application.run(Application.java:93)
        at com.commafeed.CommaFeedApplication.main(CommaFeedApplication.java:171)
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Unable to load cache item
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2048)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3850)
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3874)
        at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4799)
        at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4805)
        at com.google.inject.internal.FailableCache.get(FailableCache.java:51)
        at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:48)
        at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:155)
        at com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:595)
        at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:932)
        at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:852)
        at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:291)
        at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:222)
        at com.google.inject.internal.InjectorImpl.createParameterInjector(InjectorImpl.java:991)
        at com.google.inject.internal.InjectorImpl.getParametersInjectors(InjectorImpl.java:978)
        at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:69)
        at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:29)
        at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:37)
        at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33)
        at com.google.inject.internal.FailableCache$1.load(FailableCache.java:40)
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3444)
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2193)
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2152)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2042)
        ... 27 more
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Unable to load cache item
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2048)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3850)
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3874)
        at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4799)
        at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4805)
        at com.google.inject.internal.FailableCache.get(FailableCache.java:51)
        at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:48)
        at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:155)
        at com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:595)
        at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:932)
        at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:852)
        at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:291)
        at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:222)
        at com.google.inject.internal.InjectorImpl.createParameterInjector(InjectorImpl.java:991)
        at com.google.inject.internal.InjectorImpl.getParametersInjectors(InjectorImpl.java:978)
        at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:69)
        at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:29)
        at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:37)
        at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33)
        at com.google.inject.internal.FailableCache$1.load(FailableCache.java:40)
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3444)
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2193)
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2152)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2042)
        ... 50 more
Caused by: java.lang.IllegalStateException: Unable to load cache item
        at com.google.inject.internal.cglib.core.internal.$LoadingCache.createEntry(LoadingCache.java:79)
        at com.google.inject.internal.cglib.core.internal.$LoadingCache.get(LoadingCache.java:34)
        at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)
        at com.google.inject.internal.cglib.core.$AbstractClassGenerator.create(AbstractClassGenerator.java:291)
        at com.google.inject.internal.cglib.reflect.$FastClass$Generator.create(FastClass.java:65)
        at com.google.inject.internal.BytecodeGen.newFastClassForMember(BytecodeGen.java:258)
        at com.google.inject.internal.BytecodeGen.newFastClassForMember(BytecodeGen.java:207)
        at com.google.inject.internal.DefaultConstructionProxyFactory.create(DefaultConstructionProxyFactory.java:49)
        at com.google.inject.internal.ProxyFactory.create(ProxyFactory.java:156)
        at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:92)
        at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:29)
        at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:37)
        at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33)
        at com.google.inject.internal.FailableCache$1.load(FailableCache.java:40)
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3444)
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2193)
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2152)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2042)
        ... 73 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.google.inject.internal.cglib.core.$MethodWrapper
        at com.google.inject.internal.cglib.core.$DuplicatesPredicate.evaluate(DuplicatesPredicate.java:104)
        at com.google.inject.internal.cglib.core.$CollectionUtils.filter(CollectionUtils.java:52)
        at com.google.inject.internal.cglib.reflect.$FastClassEmitter.<init>(FastClassEmitter.java:69)
        at com.google.inject.internal.cglib.reflect.$FastClass$Generator.generateClass(FastClass.java:77)
        at com.google.inject.internal.cglib.core.$DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
        at com.google.inject.internal.cglib.core.$AbstractClassGenerator.generate(AbstractClassGenerator.java:329)
        at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93)
        at com.google.inject.internal.cglib.core.$AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)
        at com.google.inject.internal.cglib.core.internal.$LoadingCache$2.call(LoadingCache.java:54)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at com.google.inject.internal.cglib.core.internal.$LoadingCache.createEntry(LoadingCache.java:61)
        ... 90 more