eco_game

joined 2 years ago
 

I found these figurines in my grandma's attic, a friend told me to ask about them here. I assume they're from roughly 1990 - 1995.

I also found these receipts next to them:

My main questions are:

  1. (Which figurines are these?)
  2. Are they still worth anything?
  3. If yes, any tips on where to sell them? (I'm based in Germany)
[–] eco_game@discuss.tchncs.de 1 points 2 months ago

I find the Jellyfin webapp a pretty bad experience on mobile, compared to FinDroid.

I really like the webapp on my LG webOS TV (especially good with the Magic Remote) though.

So I guess it kind of depends on the platform.

[–] eco_game@discuss.tchncs.de 7 points 2 months ago

Jellyfin did some work on integrating the Skip Intros plugin a lot better, AFAIK you just have to enable it once on your server and then once in the settings of all Jellyfin web players.

As for apps, there are some good native third party apps which I mentioned here.

[–] eco_game@discuss.tchncs.de 12 points 2 months ago (1 children)

Was this with the first party Jellyfin app or with Swiftfin?

If it was with the first party app, I'd definitely recommend giving Swiftfin a try.

[–] eco_game@discuss.tchncs.de 6 points 2 months ago (11 children)

Jellyfin has native apps for Android, Android TV and iOS.

Does Plex offer native apps (that aren't just stripped down browsers) for more platforms?

[–] eco_game@discuss.tchncs.de 1 points 2 months ago

AFAIK you can enable the snapcast server and then use an app like SnapCast to stream to your mobile devices.

[–] eco_game@discuss.tchncs.de 8 points 4 months ago

I also really liked day 17, because at one point the solution for part 2 just clicked and now it makes so much sense.

I think my favorite was the full adder on day 24. Even though I only solved part 2 manually, it was still a lot of fun to reverse an actual full adder and get familiar with all the required logic gates.

[–] eco_game@discuss.tchncs.de 2 points 5 months ago

I also solved part2 manually today, by outputting the correct addition and program output in binary and then reversing the path for all wrong outputs.

Then I just had to compare that to the formulas for a full adder and I found my swaps pretty quickly that way.

I did all of this in Kotlin and on paper, with a handy helper method to construct the paths.

It's at the very bottom of this file on Github.

I suspect that comparing the bits and then comparing the paths to the full adder formulas can also be done 'automatically' decently easily, but I was too lazy to implement that today.

[–] eco_game@discuss.tchncs.de 2 points 5 months ago (1 children)

Kotlin

Part1 was pretty simple, just check all neighbors of a node for overlap, then filter out triples which don't have nodes beginning with 't'.

For part2, I seem to have picked a completely different strategy to everyone else. I was a bit lost, then just boldly assumed, that if I take overlap of all triples with 1 equal node, I might be able to find the answer that way. To my surprise, this worked for my input. I'd be very curious to know if I just got lucky or if the puzzle is designed to work with this approach.

The full code is also on GitHub.

::: spoiler Solution

class Day23 : Puzzle {

    private val connections = ArrayList<Pair<String, String>>()

    private val tripleCache = HashSet<Triple<String, String, String>>()

    override fun readFile() {
        val input = readInputFromFile("src/main/resources/day23.txt")
        for (line in input.lines()) {
            val parts = line.split("-")
            connections.add(Pair(parts[0], parts[1]))
        }
    }

    override fun solvePartOne(): String {
        val triples = getConnectionTriples(connections)
        tripleCache.addAll(triples) // for part 2
        val res = triples.count { it.first.startsWith("t") || it.second.startsWith("t") || it.third.startsWith("t") }
        return res.toString()
    }

    private fun getConnectionTriples(connectionList: List<Pair<String, String>>): List<Triple<String, String, String>> {
        val triples = ArrayList<Triple<String, String, String>>()
        for (connection in connectionList) {
            val connectionListTemp = getAllConnections(connection.first, connectionList)
            for (i in connectionListTemp.indices) {
                for (j in i + 1 until connectionListTemp.size) {
                    val con1 = connectionListTemp[i]
                    val con2 = connectionListTemp[j]
                    if (Pair(con1, con2) in connectionList || Pair(con2, con1) in connectionList) {
                        val tripleList = mutableListOf(connection.first, con1, con2)
                        tripleList.sort()
                        triples.add(Triple(tripleList[0], tripleList[1], tripleList[2]))
                    }
                }
            }
        }
        return triples.distinct()
    }

    private fun getAllConnections(connection: String, connectionList: List<Pair<String, String>>): List<String> {
        val res = HashSet<String>()
        for (entry in connectionList) {
            when (connection) {
                entry.first -> res.add(entry.second)
                entry.second -> res.add(entry.first)
            }
        }
        return res.toList()
    }

    override fun solvePartTwo(): String {
        val pools = getPools(connections)
        println(pools)
        val res = pools.maxByOrNull { it.size }!!
        return res.joinToString(",")
    }

    // will get all pools with a minimum size of 4
    // this method makes some naive assumptions, but works for the example and my puzzle input
    private fun getPools(connectionList: List<Pair<String, String>>): List<List<String>> {
        val pools = ArrayList<List<String>>()
        val triples = tripleCache
        val nodes = connectionList.map { listOf(it.first, it.second) }.flatten().toHashSet()

        for (node in nodes) {
            val contenders = triples.filter { it.first == node || it.second == node || it.third == node }
            if (contenders.size < 2) continue // expect the minimum result to be 4, for efficiency

            // if *all* nodes within *all* triples are interconnected, add to pool
            // this may not work for all inputs!
            val contenderList = contenders.map { listOf(it.first, it.second, it.third) }.flatten().distinct()
            if (checkAllConnections(contenderList, connectionList)) {
                pools.add(contenderList.sorted())
            }
        }

        return pools.distinct()
    }

    private fun checkAllConnections(pool: List<String>, connectionList: List<Pair<String, String>>): Boolean {
        for (i in pool.indices) {
            for (j in i + 1 until pool.size) {
                val con1 = pool[i]
                val con2 = pool[j]
                if (Pair(con1, con2) !in connectionList && Pair(con2, con1) !in connectionList) {
                    return false
                }
            }
        }
        return true
    }
}
[–] eco_game@discuss.tchncs.de 2 points 5 months ago

I did try that at first, but it didn't really work the way I wanted it to. That's probably also because our implementation from school was a bit odd.

[–] eco_game@discuss.tchncs.de 47 points 6 months ago (2 children)

I was pretty neutral towards Ubuntu, up until an automatic system update removed my deb Firefox and replaced it with the snap version, even though I specifically set the apt repo to a higher priority.

The entire reason I left Windows is because I don't want (for example) Edge shoved down my throat after every update, and yet Ubuntu has gone and done the exact same thing with snaps.

After literal hours of fighting, the only solution I found was to fully disable automatic updates. With Pop OS I have all the benefits of Ubuntu, but I also get a company (System76) that does cool stuff and doesn't try shoving snaps down my throat.

[–] eco_game@discuss.tchncs.de 2 points 6 months ago

I also use Posteo, one thing to note though is that Posteo doesn't (and probably won't any time soon) support custom domains. If that doesn't bother you, it's a great choice.

The other alternative I found during my research, which doesn't have that limitation, is mailbox.org.

[–] eco_game@discuss.tchncs.de 11 points 7 months ago (2 children)

You can absolutely re-encode h265 video, but you can't do it losslessly. In the end, it's always a balance between quality and filesize.

I decided for myself, that 1080p30 crf28 h265 is good enough for home video, which lead to a 50% to 80% storage space reduction on videos from my phone.

If you don't obsess over quality, I would highly recommend just messing around with ffmpeg a little bit and decide how much quality you're willing to lose in order to save disk space. When you're happy with your settings, you can either use ffmpeg itself or some fancy batch program like Tdarr to transcode all (or parts of) your video library.

My goto command is:
for file in *.mp4; do ffmpeg -i "$file" -movflags use_metadata_tags -map_metadata 0 -vcodec libx265 -crf 28 -vf scale=1920:-1 -r 30 "${file%.*}_transcoded.mp4"; done

 

Hey everyone, I'm looking for a driving journal app, to track when, to/from where and which distance I drive.

Ideally I'd like for it to be FOSS, but if there are decent Closed Source apps I'm ok with it too (I'd just block Network Access in Graphene OS then).

This post (not mine) has pretty much my ideal criteria, but sadly didn't get any answers: https://softwarerecs.stackexchange.com/questions/88349/drivers-logbook-app-for-android-foss

Unlike the above post, I don't want this for tax purposes etc., but rather just to understand where all my distance driven comes from.

Edit: I've done some more research and haven't found anything, for now I'll just use an OnlyOffice spreadsheet. If I find the time, I might try developing an app for this at some point.

Edit 2: After developing my app for a week and then showing it to a friend, he instantly found exactly what I was working on...

https://play.google.com/store/apps/details?id=com.liefers.driverslogpro

 

cross-posted from: https://discuss.tchncs.de/post/13702771

Beware of used Pixels with a replaced screen

I very recently bought a used Pixel 6 with a replacement screen, not thinking too much of it. I even made sure that the screen looked good during pickup.

One thing I missed though, was that apparently my Pixel doesn't have a fingerprint sensor anymore. I did some research, apparently it's quite easy to break the fingerprint sensor (or some places simply just don't include a sensor in the repair?) when replacing the screen.

Today I also noticed (through Show refresh rate in developer options) that my screen will only do 60 Hz as well.

Also I have stupidly high battery drain, I'm not 100% if that's related though.

Long story short, learn from my mistakes and either don't buy a used phone with a replacement screen or carefully test all functionalities associated with the screen, mainly high refresh rate and the fingerprint sensor.

 

I very recently bought a used Pixel 6 with a replacement screen, not thinking too much of it. I even made sure that the screen looked good during pickup.

One thing I missed though, was that apparently my Pixel doesn't have a fingerprint sensor anymore. I did some research, apparently it's quite easy to break the fingerprint sensor (or some places simply just don't include a sensor in the repair?) when replacing the screen.

Today I also noticed (through Show refresh rate in developer options) that my screen will only do 60 Hz as well.

Also I have stupidly high battery drain, I'm not 100% if that's related though.

Long story short, learn from my mistakes and either don't buy a used phone with a replacement screen or carefully test all functionalities associated with the screen, mainly high refresh rate and the fingerprint sensor.

 

I recently got a Samsung Gear VR and noticed that even though there is a moderately sized subreddit for it, it doesn't have a lemmy presence, so I decided to fix that:

Gear VR

!gearvr@discuss.tchncs.de https://discuss.tchncs.de/c/gearvr

The community is for anything regarding Gear VR, be it asking questions, guides for making stuff work, maybe showing off a good deal you got, ...

19
submitted 1 year ago* (last edited 1 year ago) by eco_game@discuss.tchncs.de to c/linux@lemmy.ml
 

I'm trying to find a way to stream my monitor to Apple TVs in my school via AirPlay. I've already done some research and it seems like there are currently no software solutions, with the closest one being openairplay, however it seems to be pretty dead.

I "need" AirPlay, as my school only uses Apple TVs, and it's quite inconvenient to always bring my HDMI cable and have to hook up to projectors that way.

I'm also open to more scuffed solutions, as I won't be going to that school for much longer. Some things I have thought of so far are:

  1. Using my old iPhone 6 (maybe jailbreak it, I don't think that matters here though) and something like deskreen to first cast my laptop screen to the iPhone and then AirPlay from there. I'd expect this to work, but it wouldn't be much less cumbersome than just using HDMI directly, and it would also mean having to carry that iPhone and a charging cable for it with me all the time.
  2. Using a Mac OS virtual machine with something like OSX-KVM, then possibly buying a WiFi card with AirPlay support and passing it through to the VM in combination with a similar deskreen solution as in 1. This also seems pretty complicated, and I'm not even sure if it would work at all.

Does anyone here have any experience with this, know of any better solutions (I'm also open to more scuffed solutions), or maybe even tried one of my scuffed methods already?

 

This isn't a question but rather a solution to a problem I couldn't find anywhere online, apologies if this is the wrong community.


If you have a Lenovo laptop (in my case a T14 thinkpad) and your display dims after about 30 seconds, no matter what you specify in Windows settings, you might have to disable the "Zero-Touch-Lock". You can do this in the Lenovo Vantage Software (in my case called "Lenovo Commercial Vantage") in the menu "Smart Assist".

view more: next ›