@juliank@mastodon.social
@juliank@mastodon.social avatar

juliank

@juliank@mastodon.social

Debian Developer, Ubuntu Core Developer, Software Engineer II at Canonical. Your friendly neighborhood APT maintainer. Vegan. He/him.

Love cooking, cycling, walking, music, and netflix.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

zygoon, to random
@zygoon@fosstodon.org avatar

A family member has died recently and as a part of shuffling stuff around, I've recovered a thinkpad I used to use.

At the moment it's just wiped with a fresh copy of Windows, but I think I will put Debian on it later. I have not used raw Debian on bare metal in a while, I wonder if I should go with testing or stick to stable.

juliank,
@juliank@mastodon.social avatar

@zygoon tbh just do testing. Sadly the autopkgtests gate migration to testing and not to unstable, so even trivial failures directly end up in your machine if you run unstable.

Cherry pick if needed, but most stuff will migrate in 2 days if tests pass.

juliank, to random
@juliank@mastodon.social avatar

fatal: [localhost]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"}, "changed": false, "msg": "Dependency is not satisfiable: libglib2.0-0 (>= 2.37.3)\n"}

ansible's apt module with a deb ignores provides, here libglib2.0-0 is provided by libglib2.0-0t64

Not sure where to report bug and lazy on a holiday, just trying to upgrade my backup laptop.

juliank, to random
@juliank@mastodon.social avatar

Zugzwang (zug = move, zwang=compulsion), such an important word. It says you need to make a move.

You use it in chess other games, or in real life.

You can also joke because Zug also means train that it is a "need to take train".

Mellcolm, to random German
@Mellcolm@mastodon.social avatar

Ich schreibe an der Uni Regensburg aktuell meine Masterarbeit zur Akzeptanz von GenAI in der Softwareentwicklung. Jeder Teilnehmerin bekommt einen Stein in meinem Brett. Gesucht sind Entwickler*innen. https://s2survey.net/genai_acceptance/ Pls. weitersagen! (Dauert keine 10 Minuten, schwöre!)

juliank,
@juliank@mastodon.social avatar

@Mellcolm Nur weil die AI den Code für dich klaut heißt das ja noch lange nicht, dass du keine Urheberrechtsverletzung begehst.

juliank, to random
@juliank@mastodon.social avatar

Gadgetbridge can't download activities from my Fossil Hybrid anymore, I think it times out because it hasn't synced in months.

juliank,
@juliank@mastodon.social avatar

Ah shoot I was stuck on 0.77.0, I upgraded to 0.80.0 and everything works hooray

juliank, to random
@juliank@mastodon.social avatar

Eek, we can forego all the ordering concerns when ordering clauses because quite frankly we already said "If B is to be installed, A or B is satisfied", so it's fine to queue B before A or B.

(It's not really but for all intents and purposes it depends on luck whether you see A or B, or B first.)

juliank, to random
@juliank@mastodon.social avatar

The new APT solver currently uses a priority queue of outstanding work (unsolved clauses) with dynamic priorities.

However my local state is statically ordered instead, and it's really down to 3 bits:

  • is this clause unit? Do it now!
  • do earlier group before later
  • do mandatory before optional

So we can move the optionality into the groups itself, and then we just need one bucket per group which is just insertion ordered, i.e. an array of linked lists will do fine.

juliank,
@juliank@mastodon.social avatar

However we may want to do some more trickery because we could identify superior clauses, i.e. a clause

C1: A->Dj | ... | Dk

is superior to a clause

C2: X->Dl | ... | Dm

if k < m, j=l.

(i.e. the RHS of C1 is a prefix of the RHS of C2). Note that A and X are true.

juliank, to random
@juliank@mastodon.social avatar

It's very hard to find stuff about SAT solving, you just get "how to master your SATs"

juliank,
@juliank@mastodon.social avatar

@vorlon see if it ranks solutions it's likely a local search MaxSAT solver

juliank,
@juliank@mastodon.social avatar

@kristof My approach is to accidentally rediscover SAT solving techniques while writing my own without knowing SAT solving techniques, and then adopt them where profiling shows issues or the code gets simplified.

But I should write the algorithm I came up with, or rather it's the heuristics for finding the next literal to try that you could plug into any DPPL/CDDL solver I suppose.

Our use case of small problem to solve in <100ms is so much different from the main research.

juliank, to random
@juliank@mastodon.social avatar

I'm sure there's a shortcut for changing a selection to be what you have yanked elsewhere, it's not ergonomical to do

  • yanking
  • "caw" or similar
  • Hit esc
  • Press P
juliank, (edited ) to random
@juliank@mastodon.social avatar

Just uploaded a new build of @keepassxc to Debian unstable, this adds a separate keepassxc-minimal package, and a transitional package that depends on keepassxc-full | keepassxc-minimal; so people upgrading (or new installing) will get the full experience again.

This is still 2.7.7, mind you. 2.7.8 I need to go look at some day when I'm not killing myself with apt solver work!

juliank, to random
@juliank@mastodon.social avatar

I don't know - I test my lung function with singing "running low" in hallowed be thy name.

juliank, to random
@juliank@mastodon.social avatar

Wild Euro plate today:

Ratatouille (French)
Fries (Belgian)
Aioli (Spanish)

Tons of finest extra virgin olive oil from Kalamata, Greece.

juliank, to random
@juliank@mastodon.social avatar

See if you want to eat ratatouille with pasta, orecchiette would be a good choice.

juliank, to random
@juliank@mastodon.social avatar

Ratatouille, or: olive oil with vegetables

juliank,
@juliank@mastodon.social avatar

I like to go nuts

juliank,
@juliank@mastodon.social avatar

That reminds me I should try to work with pistachio myself

juliank, to random
@juliank@mastodon.social avatar

Unable to install x:

x=1 depends Y
y=1 depends Z
z=1 Conflicts alpha

but:

foo=1 is manually installed.
foo=1 Depends bar
alpha=1 Provides bar

juliank, to random
@juliank@mastodon.social avatar

The new branch on the top is much neater. All the dynamic "choose smaller or groups before larger or groups" business is gone, as well the complex logic for renamed packages.

Renamed packages are now handled because we resolve dependencies involving only new packages first, and dependencies involving obsolete packages (no longer in the repository or not built in source candidate anymore) last (well after any other dependencies, not after install requests).

juliank, to random
@juliank@mastodon.social avatar

This is essentially the same data set (different runs), on the left record with perf, on the right with gperftools profiler; then (perf converted to pprof with https://github.com/google/perf_data_converter and) rendered with pprof.

juliank, to random
@juliank@mastodon.social avatar

Solver profile graph from https://github.com/google/pprof, with relative percentage (restricted to the solver).

For the complex 1418 64-bit time_t upgrade scenario early in noble.

juliank, to random
@juliank@mastodon.social avatar

We have hilarious inefficiencies in the solver right now:

  • We potentially discover the same package's dependencies multiple times

  • We add clauses for dependencies shared between across all versions for both the package and the selected version (we don't keep track of what we merged).

None of these are performance critical yet.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • cubers
  • DreamBathrooms
  • ngwrru68w68
  • Durango
  • osvaldo12
  • magazineikmin
  • mdbf
  • Youngstown
  • slotface
  • rosin
  • everett
  • kavyap
  • anitta
  • normalnudes
  • thenastyranch
  • khanakhh
  • cisconetworking
  • modclub
  • GTA5RPClips
  • InstantRegret
  • tacticalgear
  • provamag3
  • ethstaker
  • tester
  • Leos
  • megavids
  • lostlight
  • All magazines