netvor

joined 1 year ago
[–] netvor@lemmy.world 52 points 1 week ago (2 children)

Don't wanna state the obvious, but it looks like they still ended up staring at each other for the rest of the evening.

They have shown that they still love each other, so hope they can work with their one irreconcilable difference.

4
submitted 1 week ago* (last edited 1 week ago) by netvor@lemmy.world to c/debian@lemmy.world
 

I'm trying to "build" (see below) a package for another architecture. I made it through (by disabling, frankly) most of the steps.

Long story short, I end up running something like this:

debuild -us -uc --host-type riscv64-linux-gnu -d -C/dev/null

but debuild keeps failing on this line:

[...]
make[1]: Leaving directory '/home/netvor/.cache/mkittool/debstuff/build/zigdev-0.0.0+t20240906145412.egg.gbc271d0'
   dh_shlibdeps -a
   dh_installdeb
   dh_gencontrol
   dh_md5sums
   dh_builddeb
dpkg-deb: building package 'zigdev' in '../zigdev_0.0.0+t20240906145412.egg.gbc271d0-1_riscv64.deb'.
 dpkg-genbuildinfo -O../zigdev_0.0.0+t20240906145412.egg.gbc271d0-1_riscv64.buildinfo
 dpkg-genchanges -C/dev/null -O../zigdev_0.0.0+t20240906145412.egg.gbc271d0-1_riscv64.changes
dpkg-genchanges: info: including full source code in upload
 dpkg-source --after-build .
dpkg-buildpackage: info: full upload (original source is included)
debuild: fatal error at line 1062:
can't open zigdev_0.0.0+t20240906145412.egg.gbc271d0-1_amd64.changes for reading: No such file or directory

So the *_amd64.changes file does not exist, but *_riscv64.changes does:

zigdev-0.0.0+t20240906145412.egg.gbc271d0
zigdev_0.0.0+t20240906145412.egg.gbc271d0-1.debian.tar.xz
zigdev_0.0.0+t20240906145412.egg.gbc271d0-1.dsc
zigdev_0.0.0+t20240906145412.egg.gbc271d0-1_amd64.build
zigdev_0.0.0+t20240906145412.egg.gbc271d0-1_riscv64.buildinfo
zigdev_0.0.0+t20240906145412.egg.gbc271d0-1_riscv64.changes
zigdev_0.0.0+t20240906145412.egg.gbc271d0-1_riscv64.deb
zigdev_0.0.0+t20240906145412.egg.gbc271d0.orig.tar.gz

Building with amd64 architecture finishes correctly *_amd64.changes exists and is used.

First, do I really need this .changes file? (I'm not planning to upload this to Debian archive.) And if so, how to make debuild use the correct file?

The environment (when calling env inside rules file) looks like this:

ASFLAGS=
CFLAGS=-g -O2 -ffile-prefix-map=/home/netvor/.cache/mkittool/debstuff/build/zigdev-0.0.0+t20240906145412.egg.gbc271d0=. -fstack-protector-strong -Wformat -Werror=format-security
CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2
CXXFLAGS=-g -O2 -ffile-prefix-map=/home/netvor/.cache/mkittool/debstuff/build/zigdev-0.0.0+t20240906145412.egg.gbc271d0=. -fstack-protector-strong -Wformat -Werror=format-security
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/11111/bus
DEBEMAIL=Me <netvor@example.com>
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_ABI=base
DEB_BUILD_ARCH_BITS=64
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_ARCH_ENDIAN=little
DEB_BUILD_ARCH_LIBC=gnu
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_BUILD_MULTIARCH=x86_64-linux-gnu
DEB_BUILD_OPTIONS=notest parallel=8
DEB_HOST_ARCH=riscv64
DEB_HOST_ARCH_ABI=base
DEB_HOST_ARCH_BITS=64
DEB_HOST_ARCH_CPU=riscv64
DEB_HOST_ARCH_ENDIAN=little
DEB_HOST_ARCH_LIBC=gnu
DEB_HOST_ARCH_OS=linux
DEB_HOST_GNU_CPU=riscv64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=riscv64-linux-gnu
DEB_HOST_MULTIARCH=riscv64-linux-gnu
DEB_RULES_REQUIRES_ROOT=binary-targets
DEB_TARGET_ARCH=riscv64
DEB_TARGET_ARCH_ABI=base
DEB_TARGET_ARCH_BITS=64
DEB_TARGET_ARCH_CPU=riscv64
DEB_TARGET_ARCH_ENDIAN=little
DEB_TARGET_ARCH_LIBC=gnu
DEB_TARGET_ARCH_OS=linux
DEB_TARGET_GNU_CPU=riscv64
DEB_TARGET_GNU_SYSTEM=linux-gnu
DEB_TARGET_GNU_TYPE=riscv64-linux-gnu
DEB_TARGET_MULTIARCH=riscv64-linux-gnu
DFLAGS=-frelease
DH_INTERNAL_BUILDFLAGS=1
DH_INTERNAL_OPTIONS=
DH_INTERNAL_OVERRIDE=dh_auto_install
FAKED_MODE=unknown-is-root
FAKEROOTKEY=2071757222
FCFLAGS=-g -O2 -ffile-prefix-map=/home/netvor/.cache/mkittool/debstuff/build/zigdev-0.0.0+t20240906145412.egg.gbc271d0=. -fstack-protector-strong
FFLAGS=-g -O2 -ffile-prefix-map=/home/netvor/.cache/mkittool/debstuff/build/zigdev-0.0.0+t20240906145412.egg.gbc271d0=. -fstack-protector-strong
GCJFLAGS=-g -O2 -ffile-prefix-map=/home/netvor/.cache/mkittool/debstuff/build/zigdev-0.0.0+t20240906145412.egg.gbc271d0=. -fstack-protector-strong
GPG_AGENT_INFO=/run/user/11111/gnupg/S.gpg-agent:0:1
HOME=/home/netvor
LANG=en_US.UTF-8
LC_COLLATE=C
LDFLAGS=-Wl,-z,relro
LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/lib64/libfakeroot:/usr/lib32/libfakeroot
LD_PRELOAD=libfakeroot-sysv.so
LOGNAME=netvor
MAKEFLAGS=w
MAKELEVEL=2
MFLAGS=-w
OBJCFLAGS=-g -O2 -ffile-prefix-map=/home/netvor/.cache/mkittool/debstuff/build/zigdev-0.0.0+t20240906145412.egg.gbc271d0=. -fstack-protector-strong -Wformat -Werror=format-security
OBJCXXFLAGS=-g -O2 -ffile-prefix-map=/home/netvor/.cache/mkittool/debstuff/build/zigdev-0.0.0+t20240906145412.egg.gbc271d0=. -fstack-protector-strong -Wformat -Werror=format-security
PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
PREFIX=/usr
PWD=/home/netvor/.cache/mkittool/debstuff/build/zigdev-0.0.0+t20240906145412.egg.gbc271d0
SOURCE_DATE_EPOCH=1456533483
TERM=rxvt-unicode
ZIGDEV_ZIG_VERSION=0.13.0
ZIGSITE=/opt/zigdev
ZIGSITE_PREP=debian/tmp/opt/zigdev

Open "spoiler" below to read more about my goals. Since the fact I don't actually want to build Zig properly here might confuse and annoy people, I wrote my reasoning below.

Project overview

First and foremost, I want to learn more and become more familiar with Debian build system as well as Zig and system-level programming.

How I want to do it is to start creating zig-based binary packages for personal/experimental use. Now, already have a pipeline and tooling ecosystem which I use for Python and Bash packages: my system is DEB centric and handles package lifecycle from git repo to APT (or DNF, really) repository and I prefer when any new project can be immediately built and deployed as .deb.

So now I want to add Zig support. But means my Zig-based projects will need something to put to Build-Depends, and since Zig does not officially provide APT repo, I want to create my own -- this is what I'm focusing on right now.

So I'm creating this hacky package called zigdev whose only purpose will be to exist in my internal APT repos and deploy /opt/zigdev/zig to my test machines. One day, this package will can be easily replaced by official zig package, so for now (while building this particular zigdev package), I'm trying to cut every corner I can:

  • I don't actually build Zig, I just download tarball using curl.

  • I'm trying to disable every truly arch-specific step, since these would typically need arch-specific chroot or similar setup.

    For example, I don't care about dynamic linking, stripping or reproducibility.

Once I get this zigdev package running, I can start building my hello_world.zig's and similar. At that point I will start slowly moving towards creating a more proper binary packages by refining an rules template for my zig projects (using zig tooling, though.) (All this while also learning Zig itself and system-level programming in general, of which I have almost no experience with, so that will move with glacial speed.)

[–] netvor@lemmy.world 1 points 2 weeks ago (1 children)

As the huntress, sometimes I like to camp in a garden to heal, level up a bit, and stomp grass with Rejuvenating Steps

I hate to steal the thread but how good are gardens really?

I never learned how to make proper advantage of them. Obviously they have some loot, and there's the invisibility thing but every time I wanted to use it as a resting place mobs always found me what felt as just as easily as anywhere. But the fact that they get auto marked in the list of visited places tells me they should be valuable enough to return to, similar to alchemy labs, but they don't seem to be. But then again, maybe I'm just missing something.

(The Rejuvenating Steps part is great but any patch of grass can do that.)

[–] netvor@lemmy.world 4 points 2 weeks ago

Along with other things said here, people tend to "forget" that there's a real person on the other end.

I vaguely recall Nicholas Christakis talking about a study they made, where they created a bot which would simply remind people of the fact that there's a real person on the other end, and they found that it would help. (That study was done in some university platform and is centuries old in internet time, though. I think he spoke about it about 6 years ago on podcast with Sam Harris.)

[–] netvor@lemmy.world 5 points 2 weeks ago

/s means sarcasm.

(I myself don't find this one funny though...)

[–] netvor@lemmy.world 7 points 2 weeks ago

I don't have experience with Twitter or Mastodon but it reminds me of time when I quit drinking.

When I quit drinking and tried to stay around people I used to drink with, I realized really fast how pointless this "engagement" (really just two people speaking past each other, and feeling like they have deep conversation) is. It's almost insulting what a waste of effort such an "engagement" can be.

[–] netvor@lemmy.world 1 points 3 weeks ago (1 children)

...still... no idea...

[–] netvor@lemmy.world 1 points 3 weeks ago* (last edited 3 weeks ago)

This should go to YSK.

(With @kamen's explanation from this thread or something like that.)

[–] netvor@lemmy.world 2 points 3 weeks ago

Does no one else see that Musk is becoming a cliche´ bond villian?

...

Does no one else see that Musk is becoming parody of a cliche´ bond villian?

FTFY

[–] netvor@lemmy.world 2 points 3 weeks ago

I could describe myself in similar terms as you described yourself; basically a nerd who can also program my way out of a paper bag (and maybe a leather one).

To me the term "tech bro" always meant someone between Elon Musk and some low middle class douche-bag who feels smart and adult about "accepting" that AI needs to be everywhere and we also need to pay for SW every month. Someone person who would say "bUt iT's fOrD mOdEl T" and has some Alexa non-sense in their house.

 

I'm not sure if this is a right type of question for this community.

The context is not essential, but in a recent video Alex O'Connor quoted "The Apologist's Evening Prayer" by C.S.Lewis. As a non-native English speaker, I failed to understand it from hearing, so I looked it up but I still struggle with interpreting it.

Can someone here help me out with "translating" to a bit simpler English?

So here's the poem, as taken from cslewis.com:

From all my lame defeats and oh! much more From all the victories that I seemed to score; From cleverness shot forth on Thy behalf At which, while angels weep, the audience laugh; From all my proofs of Thy divinity, Thou, who wouldst give no sign, deliver me.

Thoughts are but coins. Let me not trust, instead Of Thee, their thin-worn image of Thy head. From all my thoughts, even from my thoughts of Thee, O thou fair Silence, fall, and set me free. Lord of the narrow gate and the needle’s eye, Take from me all my trumpery lest I die.

Disclaimer: I'm aware that with poetry, interpretation can be problematic, but here's my thought process: when I tried to look for "explanation" I haven't found any, which hints to me that the text is not particularly ambiguous once you can see through the poetry part. (In other words, people who quote this don't feel the need to add explanation since the meaning is rather clear for an educated native reader.)

78
submitted 2 months ago* (last edited 2 months ago) by netvor@lemmy.world to c/nostupidquestions@lemmy.world
 

I mean, everyone knows that in January it's hot in Australia, and in July it's cold there.

But do Australians call it "winter" in January and "summer" in July? Or does just "winter" imply hot weather and beaches, and "summer" implies ~~winter,~~ eh, i mean, snow sports and wool socks.

And given that, most of the population lives in northern hemisphere, is there a body of dad jokes and culture tropes related to the fact that "we're different", or is it just too cringe and boring. (I realize both could be true on this one.)

 

I initially wrote this as a response to this joke post, but I think it deserves a separate post.

As a software engineer, I am deeply familiar with the concept of rubber duck debugging. It's fascinating how "just" (re-)phrasing a problem can open up path to a solution or shed light on own misconceptions or confusions. (As and aside, I find that among other things that have similar effect is writing commit messages, and also re-reading own code under a different "lighting": for instance, after I finish a branch and push it to GitLab, I will sometimes immediately go and review the code (or just the diff) in GitLab (as opposed to my terminal or editor) and sometimes realize new things.)

But another thing I've been realizing for some time is that these "a-ha" moments are always mixed feelings. Sure it's great I've been able to find the solution but it also feels like bit of a downer. I suspect that while crafting the question, I've been subconsciously also looking forward for the social interaction coming from asking that question. Suddenly belonging to a group of engineers having a crack at the problem.

The thing is: I don't get that with ChatGPT. I don't get that since there's was not going to be any social interaction to begin with.

With ChatGPT, I can do the rubber duck debugging thing without the sad part.

If no rubber duck debugging happens, and ChatGPT answers my question, then that's obvious, can move on.

If no rubber duck debugging happens, and ChatGPT fails to answer my question, then by the time at least I got some clarity about the problem which I can re-use to phrase my question with an actual community of peers, be it IRC channel, a Discord server or our team Slack channel.


So I'm wondering, do other people tend to use LLMs as these sort of interactive rubber ducks?

And as a bit of a stretch of this idea---could LLM be thought of as a tool to practice asking question, prior to actually asking real people?


PS: I should mention that I'm also not a native English speaker (which I guess is probably obvious by now by my writing) so part of my "learning asking question" is also learning it specifically in English.

 

I started writing this as an answer to someone on some discord, but it would not fit the channel topic, but I'd still love to see people's views on this.

So I'll quote the comment but just as a primer:

The safest pattern to use is to not use any pattern at all and write the most straight forward code. Apply patterns only when the simplest code is actually causing real problems.

First and foremost: Many paths to hell are paved with design patterns applied willy-nilly. (A funny aside: OO community seems to be more active and organized in describing them (and often not warning strongly enough about dangers of inheritance, the true lord of the pattern rings), which leads to the lower-level, simpler patterns being underrepresented.)

But, the other extreme is not without issues, by far.

I've seen too many FastAPI endpoints talking to db like there's no tomorrow. That is definitely "straight forward" approach but the first problem is already there: it's pretty much untestable, and soon enough everyone is coupling to random DB columns (and making random assumptions about their content, usually based on "well let's see who writes what there" analysis) which makes it hard to change without playing a whack-a-bug.

And what? Our initial DB design was not future proof? Tough luck changing it now. So new endpoints will actually be trying to make up for the obsolete schema, using pandas everywhere to do what SQL or some storage layer (perhaps with some unit-of-work pattern) should be doing -- and further cementing in the obsolete design. Eventually it's close to impossible to know who writes/expects what, so now everyone better be defensive, adding even more cruft (and space for bugs).

My point is, I guess, that by the time when there are identifiable "real problems" to be solved by pattern, it's far too late.

Look, in general, postponing a decision to have more information can be a great strategy. But that depends on the quality of information you get by postponing. If that extra information is going to be just new features you added in the meantime, that is going to be heavily biased by the amount of defensive / making-up-for-bad-db junk that you forced yourself to keep adding. It's not necessarily going to be easier to see the right pattern.

So the tricky part is, which patterns are actually strong enough yet not necessarily obtrusive, so that you can start applying them early on? That's a million dollar question.

I don't think "straight forward" gets you towards answering that question. (Well, to be fair, I'm sure people have made $1M with "straight forward code", so that's that, but is that a good bet?)

(By the way, real world actually has a nice pattern specifically for getting out of that hole, and it's called "your competitor moving faster & being cheaper than you" so in a healthy market the problem should solve itself eventually...)


So what are your ideas? Do you have design patterns / disciplines that you tend to apply generally, with new projects?

I'm not looking for actual patterns (although it's fine to suggest your favorites, or link to resources), I'm mainly interested in what do people think about patterns in general, and how to apply them during the lifetime of the project.

 

When I speak, unless I'm sharing the screen I always keep looking at myself. It's kind of strange -- it clearly does not match a real-world conversation, but somehow I can't help it.

Edit: More context -- I'm wondering if others have it, if this is something that can be explained by some "brain" thing, and also how does it affect the conversation.

 

Every time I try to understand how forces which hold atoms and molecules together work, I find myself wanting to ask this question: why not the other way around? Could there be an atom which has electrons and neutrons inside, and protons outside?

It feels like a silly question, but is there something we know about the universe we live in that implies that this is not possible?

 

This is not strictly self-hosted but another approach I which is similar in philosophy, and which I actually prefer in many cases: hosted services.

--

So about 5 years ago I got fed up with having to update nextcould (or was it owncloud? I don't recall) so I was looking for a hosting service.

Initially I expected this to be a bit of a burden on my budget (especially if one scales with users), but to my surprise, I found OwnCube (owncube.de), where the price was about EUR 18 per year. Great deal. So I went ahead, set it up, tested for a while and eventually ended up configuring my parents' phones to use it for storing contacts & photos instead of Google.

To be clear, I did not use nextcloud myself directly. I had been already paying for fastmail, and it's perfect, except it's single-user, so for myself I kept using fastmail, just synchronizing fastmail (using vdirsyncer) and owncube nextcloud just to have a backup and also alternate interface.

This was working perfectly, until one day, it broke. It just stopped working (throwing some errors on sync). When I opened my web interface there was just this message, saying the nextcloud intrerface is not compatible with PHP 8.0+.

Seemed understandable: they updated the underlying server to PHP 8.0 but not the Nextcloud instance. Not superb, but fine, I'll just open a support ticket.

However, the ticket went nowhere. The support engineer kept repeating something that amounted to,

  • they needed to update PHP for security reasons,
  • the plan I subscribed to does not "come with auto-updates",
  • so

I am responsible for updating the Nextclould instance, not them.

That does not make sense. I don't have access neither to the instance nor to the updater. All I can do now is stare at the message. Their admin UI did not provide anything, either (some "magic" button, URL or SSH access).

I pointed it out but they kept repeating themselves and eventually explained that I can either cancel the service and start it again (pay again!) -- which will give me updated NC but my data will be erased, or I can "book auto-updater" which meant I should pay one time fee about 70 EUR (more than double my yearly plan).

That does not make sense. I understand that I chose the basic mini plan, I can't expect anyone to jump over hoops. I also perfectly understand that any software can break because of version mismatch (after all, I'm a software engineer myself). But nobody knows how many times per year that can happen, so if I have to pay extra every time then my plan is unpredictable.

Sadly the ticket went nowhere, the support sounded like a broken record, with "pay X amount of EUR here" link. Seems like a definition of holding my data hostage.

Eventually I decided to cancel the service.

--

So the morale, I guess..?

  • Be careful to whom you entrust your data

  • Don't get too tempted with great prices. Make sure you understand what is (NOT) included.

  • DO keep your backups.

    • For me, vdirsyncer worked great; it is a bit pain to configure and troubleshoot but the architecture is great and it gives you opportunity to sync between independent accounts and even plain text files, which can be a life-saver. (Even sync with google worked.)
  • Consider having more instances.

    • Eg. you could pay one and self-host one, use the paid one as a primary access point (public internet, usually much easier), and the self-hosted one as a backup.
    • Alternatively, one could even share a pool of instances with friends, split the bill and sync both ways.
    • (You will still need an almost-always-running cronjob somewhere to sync the data, if you're going with vdirsyncer approach.)
 

Is there some mature and usable application or tool that would enable tracking desktop activities to aid in time tracking?

Over 10 years (back when I used Windows at work), I recall I was using an app on Windows -- I forgot what it was, definitely closed source, although very well made -- that would sit somewhere in the tray and just track my activities (mostly just active window title and app), and later it would enable me to look back at the data, analyze it and categorize the time.

I recall that for my rather ADD-ish brain, this was a life-saver.

I don't recall name of the app, but it looked kinda similar like timeBro (judging just from brief look at their web page and their demo)

I haven't seen anything like that for Linux -- I admit I haven't really tried to search very hard. Given the vast diversity of desktops (from GNOME to KDE to i3), technologies (Xorg to Wayland...) and work environments (native apps, web browsers, flatpaks, command lines, IDE's, Vim's, even SSH servers) I wonder if it would even be feasible to have something like this that would work reliably everywhere-ish and provide really useful data.

 

With any question, why is it always so helpful to know why the answer is the one that is? In another words, which principle of thinking and learning is most closely tied to question "why"? Or is it purely social act of expressing deeper interest? Is questioning for reasons mandatory?

I feel I know the answer to this question intuitively, but find it hard to express it into words without it sounding stereotypical and lazy.

This seems bizarre, because it's children who are most "famous" for asking "why" all the time, but: How would you, say explain to a child, why do we need to know reasons behind things?

 

This might be just EU thing, but is there an effective way to deal with endless "accept/reject cookies" dialogues?

Regardless of the politics behind, I think we can all agree that current state of practice around these dialogues is ...just awful.

Basically every site seems to use some sort of common middleware to create the actual dialogue and it's rare case when they are actually useful and user friendly


or at least not trying to "get you". At least for me, this leads to being more likely to look for "reject all" or even leave, even if my actual general preference is not that. I've just seen too many of them where clicking anything but "accept all" will lead to some sort of visual punishment.

Moreover, the fact that the dialogues are often once per domain, and by definition per-device and per-browser, they are just .. darn ... everywhere, all the frickin' time.

Question: What strategy have you developed over time to deal with these annoying flies? Just "accept all" muscle memory? Plugins? Using just one site (lemmy.world, obviously) and nothing else? Something better?

Bonus, question (technical take): is there a perspective that this could be dealt on browser technical level? To me it smells like the kind of problem that could be solved in a similar way like language -- ie. via HTTP headers that come from browser preferences.

 

When we go out of our comfort zone, go for some new adventure or new challenge, we will naturally pay more attention to what happens in our minds as we're going through this new experience.

"Demons", i.e. results of past bad, or even traumatic experience can be active during our daily life, often in various activities ranging from getting out of bed to talking to people where we have complex relationships (family members, co-workers, bosses, even kids..).

In daily life, random acts of these demons can go almost unnoticed, but that could be just because we're so much used to them acting that we've already normalized this "mischief" as normal facts of life.

One way of exposing them is talking to therapist.

Another way is learning to be mindful and pay more attention to oneself.

Yet another way is experiencing something new and unique -- our brain will naturally tend towards some sort of mindfulness, merely by instinct of being careful in new environment.

This could also mean that people that are burdened by these demons too much (or in particular "effective" ways) can't easily deal with the things that they discover about themselves, or that their demons act on some kind of "meta" level where they can smuggle themselves into the very process of this growth. As a result, they will tend to avoid these challenges which could lead to further spiraling deeper into "anti-growth", and so on...

view more: next ›