HNHacker News
TopNewBestAskShowJobs

Ace17

1,464 karma · joined June 26, 2013

submissionscomments
Ace17··on Don't ask to ask, just ask
Communication inefficiency wastes your interlocutor's time. Depending on the context, it might be considered rude.
Ace17··on Don't ask to ask, just ask
Wouldn't this approach exactly have the issues the article recommends against?
Ace17··on αcτµαlly pδrταblε εxεcµταblε
Just google for "notelemetry.obj"
Ace17··on Facebook account now required to login to Oculus devices
... except when the non-bad company you bought your DK-1 from gets bought by a bad company.
Ace17··on Let's Build a 28-Core Raspberry Pi Cluster
This could be very handy for running integration tests of cluster-management software!
Ace17··on The Case Against OOP Is Wildly Overstated
> The only way I see out of this endless game of semantics is for someone to canonize the tightrope of practices which are "OOP done right", and then give it a different name.

Our industry has a naming problem when it comes to practices, especially when the practice is subtle and complex but its name is simple and trendy (maybe it's not specific to software, IDK).

Dev teams are mislead into thinking that they can deduce the practice from the name (and maybe a 1h training with a self-proclaimed expert in the practice).

This is how we got aberrations like: - "TDD" devs writing their tests afterwards - "Agile" teams with 6-month release period - "SCRUM" masters that act as classic managers

New names referring to "good/right/trendy" practices are doomed to get claimed by "80% of the industry", in a way that doesn't respect the original practice.

Alan Kay recently said that maybe he should have called it "Message-oriented programming" ( instead of OOP ). While not having "object" mostly eliminate the risk of the "one-class-per-real-world-object" antipattern, we might as well had ended up with other anti-patterns based on wrong interpretation of what constitutes a "message".

This is why I think changing the name of any practice is inefficient. The misunderstanding isn't accidental, it's systemic (Moreover, renaming a practice would probably create even more confusion)

Names that refer to common mistakes wouldn't get claimed ; no team is going to proudly explain to their customer that they're using the "big ball of mud" antipattern, the "scrum but" team organisation, or the "debug later" dev practice.

So maybe we should better canonize OOP antipatterns?

Ace17··on Simple Made Easy (2011)
1) easiness is subjective, simplicity is objective.

2) simple code is easy to read, but hard to write.

If you're a programmer, and you're not surrounded by people conflating both words, consider yourself lucky. What does a coworker really means by "I did the simplest possible thing" ?

Ace17··on Against Testing
> "Certainly, one approach is to just write good tests that don't have these problems. If you like writing tests and are very good at it, you may continue to do so. "

The article should be renamed to "Against Bad Testing".

Good tests do exist ... but they are hard to write (but easy to maintain). They require a lot more software design competence that writing non-testable production-code-that-works-today-and-maybe-tomorrow. An example of good tests: have a look at the Ninja codebase.

Writing such good tests for a legacy codebase (not written with testability in mind) is even harder (and I'm not sure that it's always possible in this case. It might. But I don't have any example).

Forcing everyone to write tests when they don't have the competence yet is a recipe for disaster and false conclusions ("this testing thing doesn't work / is harmful").

PS: now that I think of it, do we have a list of well-tested public-source codebases? this could be a good pedagogical tool.

Ace17··on H.266/Versatile Video Coding (VVC)
I would love that you be right. However, here are examples of successfully enforced software patents:

- in Europe: http://www.bailii.org/ew/cases/EWCA/Civ/2002/1702.html

- in US: https://web.archive.org/web/20061205050434/http://eolas.com/...

But as I said, if your startup is being sued by Dolby, whether the enforcement is successful or not is actually irrelevant. Showing that your work doesn't infringe a patent, or that Dolby's patent is invalid, is a money and time-consuming process (unsurprisingly, patents are not generally written to facilitate re-implementation or defense).

(Moreover, in the US, in some cases, the patent owner might even get a preliminary injunction ( https://www.tms.org/pubs/journals/jom/matters/matters-9712.h... ), which might seriously and immediately harm your business. I don't know if such a thing exists in Europe).

Big tech companies like Dolby and IBM use a preventive racket-looking technique ; it involves trying to sell to potential infringers a "protective" subscription, but there's no preliminary analysis of whether there actually is any patent being infringed.

During broadcasting tech events like IBC or NAB, Dolby actually sends people to other company's booths for this ; and there's a famous story about IBM against small-at-this-time SUN : https://www.forbes.com/asap/2002/0624/044.html , whose gist is:

> "OK," [the IBM lawyer] said, "maybe you don't infringe these seven patents. But we have 10,000 U.S. patents.

> Do you really want us to go back to Armonk [IBM headquarters in New York] and find seven patents you do infringe?

> Or do you want to make this easy and just pay us $20 million?"

Ace17··on Dopamine is not addictive (2017)
The article talks about addiction, but doesn't talk about withdrawal. Is "dopamine withdrawal" a thing in medical science?
Ace17··on H.266/Versatile Video Coding (VVC)
Ten-year software video compression engineer here:

TL;DR: it's partly because we're using higher video resolutions. A non-negligible part of the improvement stems from adapting existing algorithms to the now-doubled-resolution.

Almost all video compression standards split the input frame into fixed-size square blocks, aka "macroblocks". To put it simply, the macroblock is the coarsest granularity level at which compression happens.

- H.264 and MPEG-2 Video use 16x16 macroblocks (ignoring MBAFF).

- H.265 use configurable quad-tree-like macroblocks, with a frame-level configurable size up to 64x64.

- AV1 makes this block-size configurable up to 128x128.

Which means:

Compression to H.264 a SD video (720x576, used by DVDs) results in 1620 macroblocks/frame.

Compressing to H.265 a HD video (1920x1080) results in at least 506 macroblocks/frame.

Compressing to AV1 a 4K video (3840x2160) results in at least 506 macroblocks/frame.

But compressing to H.264 a 4K video (3840x2160) will result in 32400 macroblocks/frame.

The problem is, there are constant bitcosts per-macroblock ((mostly) regardless of the input picture). So using H.264 to compress 4K video will be inefficient.

When you take an old compression standard to encode recent-resolution content, you're using the compression standard outside of the resolution domain for which it was optimized.

> Is this continued improvement related to the improvement of technology? Or just coincidental?

Of course, there also "real" improvements (in the sense "qualitative improvements that would have benefited to compression old video resolutions, if only we had invented them sooner").

For example:

- the context-adaptive arithmetic coding from H.264, which is a net improvement over classic variable-length huffman coding used by MPEG-2 (and H.264 baseline profile).

- the entropy coding used by AV1, which is a net improvement over H.264's CABAC.

- integer DCT (introduced by H.264), which allow bit-accuracy checking and way lot easier and smaller hardware implementations (compared to floating point DCT that is used by MPEG2).

- loop filters: H.264 pioneered the idea of a normative post-processing step, whose output could be used to predict next frames. H.264 had 1 loop filter ("deblocking"). HEVC had 2 loop filters: "deblocking" and "SAO". AV1 has 4 loop filters.

All of these a real improvements, brought to us by time, and extremely clever and dedicated people. However, the compression gains of these improvements are nowhere near the "50% less bitrate" that is used to sell each new advanced-high-efficiency-versatile-nextgen video codec. Without increasing - a lot - the frame resolution, selling a new video compression standard will be a lot harder.

Besides, now that the resolutions seems to have settled up around 4K/8K (and that "high definition" has become the lowest resolution we might have to deal with :D), things are going to get interesting ... provided that we don't start playing the same game with framerates!

Ace17··on H.266/Versatile Video Coding (VVC)
> Software patents can exist, but are almost always unenforceable

Wanna take the risk? You might end-up winning the lawsuit, but at this moment, there's a good chance for you to be already out-of-business.

Ace17··on H.266/Versatile Video Coding (VVC)
In practice, EU does allow software patents. The software invention just needs to be disguised as a machine. Industrial property lawyers know very well how to do that, and it's unfortunately very common.

> Edited because I didn't know that some European countries accept software patents.

European patents are granted at the European Patent Office (individual european countries also have their own patent offices, whose patents can only be enforced in their home country).

Ace17··on Query-Based Compiler Architectures
> The only reason an external file/dag is actually necessary is due to impurity in the compilation process.

No compilation process can know about the parts of your project written in another language.

Ace17··on Clang-11.0.0 Miscompiled SQLite
Non-deterministic compilation would be pretty bad.

First, producing different outputs from the same input brings the question of caching tools (e.g ccache, FastBuild), who assume the compiler is a pure function of its inputs.

Moreover, assuming your code and the compiler are correct, you might still end-up with a situation where the performance of the resulting binary differs depending on the planet's alignment at build time.

Worse: when the input code is wrong (which does happens when you're writing new code and trying it on your machine) : you build your code locally, and you're in "luck", as the compiler generates binary code "that won't crash". So you push your modifications, and then you start getting complaints from your coworkers, because they pulled your commit and now they're getting crashes. At this moment you don't know what's happening yet, so you might even tell them "it works on my machine, did you try to rebuild all?". And this might appear to solve the issue, if this time your coworkers are "lucky"!

Finally, let's suppose your code is correct, but the compiler has a code generation bug. Have you ever tried, as a user, to diagnose a compiler bug? You spent many hours trying to minimize the input file that triggers the bug, so it's executable without needing the rest of your project, so you can send it to the compiler devs. I wouldn't even try to do this if I knew the compiler was non-deterministic.

In short, non-deterministic compilation is an invitation for trouble and confusion.

Ace17··on Making a SNES game in 2020 using modern tools
https://en.wikipedia.org/wiki/Sega_v._Accolade
Ace17··on Ask HN: Why isn’t visual programming a bigger thing?
First-order functions maybe?

The following function has an obvious visual representation as a processing block:

    int add(int a, int b);
But how do you represent a function allowing other functions in its signature, e.g:

    void transformInPlace(int* input, int (*func)(int));
Ace17··on Software Is Polluting the World
Are those hydroelectric power plants connected to a power grid, among other carbon-emitting power plants?

In this case, every kWh spared by your data center still is a potential reduction of carbon emissions : let your hydroelectric power plants run at full power so they still provide this kWh, thus it doesn't have to be produced by the carbon-emitting power plants. Leading to reduced carbon emissions.

Ace17··on Vaccine fears brought measles back to New York
Are you suggesting that regularly being impacted by outbreaks is, on average, beneficial to a population? This seems far fetched.

There certainly are ways to teach the correct response to an outbreak, other than killing 1% of the population.

Ace17··on French researcher posts successful Covid-19 chloroquine drug trial
No placebo for the control group? no double-blind?

C'mon guys ... these kind of crisis are where strict scientific discipline is the most needed, because the risk of rushing to a false conclusion is higher.

"but we don't have time, so we'll take whatever that seems to work" would be a valid argument if Chloroquine had zero negative side-effects. Which isn't the case.

Ace17··on Ask HN: Best way to increase typing speed?
The Typing of the Dead (tutorial mode) is how I learnt touch typing.

Also, you can selectively scramble the keycaps of your keyboard : way cheaper than getting a Das, but as efficient!

Ace17··on IBM sues Airbnb for patent royalties
In practice, EU already does allow them. The software invention just needs to be disguised as a machine. Industrial property lawyers know very well how to do that and it's unfortunately very common.
Ace17··on A modern “Hello, World” program requires more than just code
The goal never was to print "Hello, world!" on the screen. It was to quickly check that your build and runtime environment works.

But nowadays projects are generally expected to drag-in a lot more tools/dependencies than a C compiler and its runtime.

Ace17··on Please stop recommending Gitflow
GOTO 2017 • Feature Branches and Toggles in a Post-GitHub World: https://www.youtube.com/watch?v=lqRQYEHAtpk

TL;DW: integrate continuously, don't use branches, use feature toggles.

Ace17··on Please stop recommending Gitflow
> While I hesitate to say “Worrying about merge conflicts” is a valid reason not to pursue a branching strategy like gitflow

Being worried about merge conflicts might be a sign that your continuous integration might not be continuous enough.

Ace17··on Will calling “free” or “delete” in C/C++ release the memory to the system?
All else being equal, could the efficiency of malloc_trim depend on heap fragmentation? Could the heap end up with "gaps" of free'd memory that couldn't be returned to the OS independently?
Ace17··on Why does WebAssembly need the relooper algorithm, instead of gotos? (2019)
Nitpick: I assume you meant "GPLv2 isn't free enough to be used in a proprietary browser".
Ace17··on Shit – An implementation of Git using POSIX shell
The likelihood for this conversation to occur, in a way, also depends on the tool itself, and tells us something about it.

As a matter of fact, git is hard to use.

The question is: keeping the same level of functionality, could it have been made easy to use?

Ace17··on Clang vs. other open-source compilers
GCC can dump its internal representation at almost every stage of the compilation process.

However, it's intended for diagnosing issues in the compilers or plugins ; it's definitely not meant to be used as an interoperable format to be loaded back into a program.

gcc doesn't even provide a way to specify the output path for the dump file (too bad, as reliable AST dumping could enable implementing ast-based-ccache (instead of preprocessed-code-based-ccache, for compilation-caching of preprocessor-less languages)).

Ace17··on Flashpoint: a webgame preservation project
Not having the source code sucks, but it's not a showstopper ; some videogame preservation websites have managed to workaround this issue.

It's possible to play "Prince of Persia" in the browser (through DOSBOX recompiled to Javascript).

It's even possible to play the original Windows 95 (!) Pinball in the browser. Seeing the Windows 95 cloudy boot sequence in a Javascript canvas is disturbing. The game isn't as smooth as native, but it's definitely playable. ( https://classicreload.com/win9x-3d-pinball-space-cadet.html )

← PreviousPage 2 of 18Next →