@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.

juliank, to random
@juliank@mastodon.social avatar

APT is a weird mix of pre-STL, pre-namespace C++ from the early 90s with C++17 and soon C++20 sprinkled all over.

juliank, (edited )
@juliank@mastodon.social avatar

Well you know std::remove_if, my predicate lambda isn't actually just a predicate, it also std::move()s the element content of an element that will be removed to a different container first.

This sounds totally ridiculous but yes predicates can modify the elements they are being called on, and this is a lot cleaner than writing an explicit for loop with iterators and deleting them.

juliank, to random
@juliank@mastodon.social avatar

Why is the answer to "do you mind"

"Yeah sure"

And not "no"

juliank,
@juliank@mastodon.social avatar

@Conan_Kudo The usual structure I see/hear is

Do you mind if I do ...
Yeah sure[, go ahead]

(i.e. if they don't mind they reply positively)

juliank, to random
@juliank@mastodon.social avatar

OK, but where can I find pistacchio verde di bronte D.O.P.?

juliank,
@juliank@mastodon.social avatar

It's not like you can find the non DOP kind either

juliank, to random
@juliank@mastodon.social avatar

Looking at the Di2 data I'm shifting 3 times per minute on average.

foone, to random
@foone@digipres.club avatar

I wonder how hard it is to make a fake USB printer.
Like, a printer that takes any printout and goes "yep, that printed just fine" but nothing ever comes out anywhere

juliank,
@juliank@mastodon.social avatar

@foone that would be convenient as like a usb stick that you can print too and then read back pdf.

juliank, to random
@juliank@mastodon.social avatar

I think we've narrowed it down:

X Depends: A (= 2) | B

will wait for A (= 2) to be satisfied, if A!=2 is installed now, and still available in the archive, and B is not installed.

X Depends: A | B

will remove A and install B if the upgrade of X breaks breaks A.

i.e. we expect versioned dependencies to eventually become satisfiable again.

juliank, to random
@juliank@mastodon.social avatar

Dark matter is so dark I just see my reflection

juliank, to random
@juliank@mastodon.social avatar

Cleaning up my T480s noble system:

0 upgraded, 0 newly installed, 858 to remove and 6 not upgraded.
After this operation, 4.713 MB disk space will be freed.

juliank, to random
@juliank@mastodon.social avatar

Pasta di Gragnano IGP - a scam? Most of it isn't even Italian durum, but imported.

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".

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

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

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

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

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, 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.

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