Hacker Newsnew | past | comments | ask | show | jobs | submit | Dwedit's commentslogin

If you combine "GBA Mus Ripper" and "SoundFont MIDI Player", you can get some seriously excellent sound for listening to GBA music.

"GBA Mus Ripper" detects the so-called "Sappy" music driver and extracts and converts the songs to MIDI files, and generates a SF2 soundbank file. Available at https://www.romhacking.net/utilities/881/

"SoundFont MIDI Player" plays back MIDI files. You can configure it to automatically load a SF2 soundbank file in the directory. When you load a converted GBA MIDI file, you get the high music quality of a modern feature-packed MIDI playback engine. Available at https://falcosoft.hu/softwares.html#midiplayer

It's not perfect though, as GBA games do not use true standard MIDIs. Some MIDI controller commands (like modulator wheel) don't translate correctly.


Thanks for this, I was not aware that a good portion of GBA songs can be exported as MIDI. But I'm guessing that with good soundfonts you can get pretty reasonable quality for many of them!

They don't use general midi standard instruments. You need the extracted soundfont because the instrument numbers are unique to each game. In order to "improve" the soundfont, you need to edit that soundfont to have higher quality instruments, you can't just switch out the whole soundfont for a different one.

What's the quality of the generated code like? Does it use explicit stack frames and all local variables live there? Does it move loop-invariant operations out of a loop? Does it store variables in registers?

I haven't actually tested this, but aren't the input and output handles exposed on /proc/? What's stopping another process from seeing everything?

not a Linux expert, but I believe that at the very least it's time sensitive: after consumer process reads it, it's gone from the pipe. Unlike env vars and cli argument that stay there.

Yes pipes are exposed /proc/$pid/fd/$thePipeFd with user permissions [0].

Additionally command line parameters are always readable /proc/$YOUR_PROCESS_PID/cmdline [1]

There are workarounds but it's fragile. You may accept the risks and in that case it can work for you but I wouldn't recommend it for "general security". Seems it wouldn't be considered secure if everyone did it this way, therefore is it security through obscurity?

[0] https://unix.stackexchange.com/questions/156859/is-the-data-...

[1] https://stackoverflow.com/questions/3830823/hiding-secret-fr...


I guess the kernel is stopping that. I don't think permission wise you'd have the privileges to read someone else's stdin/out.

At least it's not a total bizarro unit like "Floppy Disk Megabyte", equal to 1024000 bytes.

Can someone explain why SystemD was controversial in the first place? I just saw faster boot times when distros adopted it.

Scope creep, violation of the Unix philosophy, large attack surface area, second system syndrome, interoperability concerns. It didn’t help that the creator’s other well-known project, PulseAudio, was also controversial at the time, for similar reasons.

PulseAudio, when it came out, was utterly broken. It was clearly written by someone with little experience in low-latency audio, and it was as if the only use case was bluetooth music streaming and nothing else. Systemd being from the same author made me heavily averse to it.

However, unlike PulseAudio, I've encountered few problems with systemd technically. I certainly dislike the scope creep and appreciate there are ideological differences and portability problems, but at least it works.


Wrote about present day reasons to dislike systemd a few days ago on HN, which encompasses most arguments of actual substance[0] (tldr: Unix philosophy, it homogenizes distros and it may be too heavy for some low-resource environments).

Historic reasons mostly come down to systemds developers being abrasive jerks to people. Systemd has some weird behavior choices that only really make sense from the perspective where every computer is a desktop; ie. it terminates all processes spawned by a user when logging out unless they were made in a specific way with systemd-run. This makes sense on a desktop - users log out, you want everything they did to be cleaned up. On a server it makes less sense, since you probably want a tmux/screen session to keep running when you sign out of your ssh session (either by choice as a monitoring tool, or alternatively because you have an unstable connection and need a persistent shell).

Every downstream distro got surprised by this change[1] and nowadays just ships a default configuration that turns it off, because upstream systemd developers weren't interested in hearing the complaints.

Most of these footguns have been ironed out over the years though.

There's also some really dumb arguments to dislike systemd, most of which just can be summarized as "people have an axe to grind with Lennart Poettering for some reason".

[0]: https://news.ycombinator.com/item?id=46794562

[1]: It was always available, but suddenly turned on by default in an update.


To over-simplify, it's about conflicting philosophical alignment:

- systemd: integration and features at the cost of complexity and scope

- traditional: simplicity and composability at the cost of boot speed and convenience

systemd conflicts against the more traditional unix philosophies as well as minimalism.


systemd also replaces some pre-existing services with its own reimplementations that are worse. The systemd developers aren't e.g. DNS or NTP experts, but they act like it and the results reflect all that.

You are correct. My comment was over simplified deliberately. I felt integration and scope accounted for the details in a TL;DR one slide answer.

It's because the Apple I had no built-in BASIC, and booted to a Monitor prompt. It was hard to use without a manual in front of you.

Meanwhile, the Apple II just let you put in a disk and boot a program. Huge difference in usability.


The Apple I computers got bought back by Apple for the release of the Apple II. That's why they're so rare, Apple wanted them gone. They were not a user-friendly computer. It booted to the Monitor prompt, and did not include BASIC in the ROM.

Gmail automatically downloads images ahead of time, so the tracking pixels will have been fetched by Gmail themselves regardless of when the user opens the email.


I had a demo for some high-school students for an ethics and tech class that successfully demonstrated these with a GMail account, so when this started happening I got very upset lol.


So does Apple's Mail Client. So do most webmail providers. Open signals are generally worthless.


When Gmail downloads the image it identifies itself as GoogleImageProxy, and will be coming from a GCP/Google ASN.

Similar signal will be there for any email provider or server-side filter that downloads the content for malware inspection.

Pixel trackers are nearly never implemented in-house, because it's basically impossible for you to do your own email. So the tracker is a function of the batteries-included sending email provider. Those guys do that for a living, so they are sophisticated, and filter on the provider download of images.


I think gmail adds some heuristics on top of it, like if the same image was included in emails to multiple people.

At least that's what I remember from them announcing the feature. No idea about other providers, and I haven't tested the feature myself.


With a proper personalized tracking pixel, a simple deduplication won't catch it—the whole point is that each email's tracking pixel has a unique URL that lets them know that you opened the email.

It is, of course, very possible that Google has heuristics that can catch tracking pixels—in fact, I would go so far as to say that if they chose to, they 100% could, probably tomorrow. But given where Google makes its money, I would not in the least trust them to do that for me.


60 interlaced fields per second, not 30 frames per second. The two fields do not necessarily contribute to the same frame.


Which unfortunately also has continued to plague us much longer than we have used any display technology where that might have made any sense.


Yep, once again thanks to broadcasters spreading FUD. When the progressive vs. interlaced debate raged during the development of ATSC, broadcasters whined that progressive would disrupt their entire production pipeline... which was utter BS because they'd been showing film-based content for generations.

If you get those fields out of sync, you will have problems though, so it's okay to consider them in pairs per frame for sanity's sake.


"View -> Page Style -> Basic Page Style" is required to read any of the text.


Indeed, it's a pity that the author placed so much focus on a cool looking font that they forgot to take basic properties like "good readability" into account. Form should follow function, not the other way around.


> Form should follow function, not the other way around.

According to whom? It's their personal website, they're allowed to place value on whatever they want.


> According to whom? It's their personal website, they're allowed to place value on whatever they want.

It's a well-known design principle to not impede the intended function of things by giving them a form that distracts from it. Of course you can deviate from that, especially if you want to make a point of some sort.

However, I presume they publish their writings so they will be read by others. Making this hard will reduce their audience.

If they are making this trade-off willingly, good for them, I suppose. But maybe they're so smitten with the style that they do not realize how hard to read it is.

There's also a point at which the form gets so bad that it starts to disrespect the audience. Again, that can be on purpose, but it might be unintentional.

This being a personal blog, it's not unreasonable to expect that a main purpose of it is communication. I think it's warranted to draw attention to the fact that its design gets in the way of that goal, big time.


According to them. They shared their opinion.


No, they asserted their opinion as a fact.

There is a world of difference between "I prefer x" and criticising something while asserting "everyone should do x (because I prefer x)".


It's not normal to wrap all opinions in "I prefer". The average opinion statement looks superficially like a factual statement, without intent to actually claim it's a fact.


You're allowed to criticize something without engaging in social legalese.


One should not have to preface every single thing with "In my opinion" or some variant for you to realize that that's what they're talking about.


> No, they asserted their opinion as a fact.

Interesting idea, let's see if they confirm they were talking facts. I'll be very surprised.

I'm the worst person to take issue with this. This has been my biggest pet peeve for the longest time as well. Right until my frame of mind flipped randomly, and I recognized that by getting upset over blatantly subjective matters being discussed with zero cushioning like this, I'm doing little more than intentionally misreading the other person, and upsetting myself on purpose.

You're reacting to the smoke, not the fire. For example, this may have very well been a perfectly cromulent alternative reply:

> Sounds subjective, and indeed, I disagree. Not a fan of dogma like this anyhow.


There is no ambiguity that needs further clarification, I am talking about the words as written. Their entire message clearly conveys they believe there is an objective design standard that everyone should strive to adhere to, and they are criticising a website for daring to deviate from their ideal standard as though it were an objective flaw and not a matter of personal preference.

> getting upset over blatantly subjective matters being discussed with zero cushioning like this, then I'm doing little more than intentionally misreading the other person until I upset myself. You're reacting to the smoke, not the fire.

It's not about cushioning. They are explicitly criticising the website ("pity", "forgot to take basic principles into account"), and saying broadly that everyone should do X, where X is their own preference. That is the fire. That will invariably rub people the wrong way. It is inherently not an amicable way to communicate about differences in design opinions.

That's not to say you can't give critical feedback. "I'm not a fan of the font, I prefer fonts that are easier to read" would be perfectly reasonable. It's specifically the assertion that there is a way that things ought to be done, as though there are not trade-offs depending upon what each person values but rather one objectively superior way, that causes friction.


Subjectivity is implied. You’re shadowboxing against a claim that the person you replied to never made. Communication is more than the simple dictionary definitions of the words being written.

And as has been pointed out, you are yourself asserting your opinion about subjective communications as fact (i.e. that you should always make it denotatively clear to readers when you’re going your opinion and when you’re globally asserting something)


I will give you credit, you have an art for writing absolutely infuriating comments. How is it that you manage to so perfectly encapsulate the exact thing you baselessly accuse one of doing?

> You’re shadowboxing against a claim that the person you replied to never made.

You start with this, and then immediately lead into:

> Communication is more than the simple dictionary definitions of the words being written.

> that you should always make it denotatively clear to readers when you’re going your opinion and when you’re globally asserting something)

Neither of which are claims I made. At no point did I engage in the dictionary-definition pedantry that plagues this site. I was specifically highlighting how the sentiments they expressed in their message come together as a whole. An accusation that one "forgot to take basic principles into account" cannot possibly be construed in any way other than insulting. That phrase denies the possibility that the OP considered readability but consciously chose to make a trade-off in alignment with their own values, asserts the author's view as a matter of principle, and denigrates the person who "forgot" to consider it.

> you are yourself asserting your opinion about subjective communications as fact

Insofar as words have any meaning whatsoever, I am observing a fact about how they chose to communicate. If you really want to play the stupid game the people of this forum love where you play at the margins of language endlessly redefining everything into meaninglessness to score points in an argument, you can count me out.


You are asserting your opinion as fact


Please don't complain about tangential annoyances—e.g. article or website formats, name collisions, or back-button breakage. They're too common to be interesting.

https://news.ycombinator.com/newsguidelines.html


Backseat moderating is also against the guidelines. If you believe the comment needs moderator attention, flag it. It's pretty ironic you can't say this rule without breaking it


It's not a rule, but I'd like it to be


No it isn't.


I wish there was a rule against rule lawyering. Those comments are way more annoying than gp. (queue recursive replies)


I'd like to add to my sibling comments that this blog's design is so atrocious for its readability that it deserves to be called out.

In fact, I'd like for such a comment to be at the top here, so that I can decide to avoid following the link until I have read enough comments to determine whether it's worth it.


Or just toggle reader view (Firefox).


I don't have any issues with it but I've been computing since the 8 bit days which basically looked exactly like that :)


I wonder if it renders differently for different people.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: