HNHacker News
TopNewBestAskShowJobs

flafla2

752 karma · joined December 22, 2015

All opinions are my own.
submissionscomments
flafla2··on Best practices for remote software engineering
> I'm getting contacted by headhunters left and right every months but I'm still reticent to leave because we're short on staff and the project I'm working on is really important for the company and I've was kinda hired to bring those things into reality as the other devs are mostly technical experts in their fields than actual developers and in addition the code is ugly.

Red alert. You basically just wrote “I should quit tomorrow”.

flafla2··on Computational Algebraic Topology, lecture notes [pdf]
This looks great, thanks!
flafla2··on Just Wanted to Say Thanks
It would make a lot of sense for Github to support discussion forums natively, separate from issues. Or perhaps user reviews.
flafla2··on Use `nproc` and not grep /proc/cpuinfo
I’ve heard about this trick/incantation as well, but haven’t managed to measure a significant performance gain (though it makes sense in theory). Do you know of any quantitative evidence that this is solid advice? I suppose my testing is not at all scientific, just my anecdotal experience using make -j(i+1)
flafla2··on Show HN: Scratch.js – Interactive JavaScript Scratchpad
That plug-in certainly won’t cover all cases of infinite loops, or they just solved the halting problem :)
flafla2··on Automatic layout algorithms compute layouts for diagrams
Wow this is absurdly cool. Would be worth posting to /new (even if it has been on HN in the past)!

This reminds me of http://penrose.ink/siggraph20.html as well.

flafla2··on PP-YOLO Surpasses YOLOv4 – State-of-the-art object detection techniques
Forgive me if I’m being dense, but shouldn’t we expect performance to degrade if flop count per unit time is decreased, assuming performance is defined as overall runtime (FPS in this case)? It’s a trade off scenario where runtime performance is being balanced by other concerns such as power consumption.
flafla2··on Modified Gravity Theory Passes a Critical Test
I upvoted you because there is truth to this sentiment. But I want to add that physics is IMO one of the hardest fields intellectually of our time. Just to get your feet wet, you need to be well versed in an intimidating array of mathematical disciplines. DiffEQ, Discrete Math, Computer Science, Topology, Differential Geometry, High Level calculus,... the list goes on even at the undergrad level. To make a meaningful contribution is quite a feat.

I have massive respect for those who bravely tackle the frontiers of Physics; some physics majors have a broader understanding of Math than a mathematician! Though importantly, your average mathematician will have a much deeper understanding of more focused topics.

I don’t mean to suggest that any of Math, Physics, CompSci, etc is fundamentally harder than the others. Each field presents different challenges! But they are also intimately related IMO: the recent MIP*=RE proof has convinced me. In short, we’re all on the same side.

flafla2··on Functional Programming for Array-Based Parallelism
Seconded! I had the pleasure of taking Guy Belloch's parallel programming class at CMU as a sophomore. A large majority of the homework assignments involved leveraging the segmented scan operator to solve all sorts of classical parallel programming problems.

Really eye opening stuff! I am still impressed that prefix sum (generalized over all associative operators, not just +) can be done in O(log n) span. And the algorithm is not too complicated either, I was able to get the gist of it even as an undergrad.

flafla2··on Blender 2.83 LTS
This actually exists (press F3, with default keybindings)
flafla2··on Differential Forms and Integration (2008) [pdf]
I just took Keenan Crane’s course on Discrete Differential Geometry at CMU, and the slides and lecture notes are available online for free. Due to COVID, the second half of the semester’s lectures are available on YouTube, and they are really a goldmine (Keenan is a wonderful lecturer!). The coding exercises are in JS as well with a lot of base code to work with, so they are quite accessible and you get to focus on the geometry.

The figures on the slides are really great. Hope this helps:

http://brickisland.net/DDGSpring2020/

flafla2··on Game of Life in one Ruby statement inspired by APL
+1 For crystal. I always post this project, an OS written in it from scratch, as it is one of the most impressive things I’ve seen on HN

https://github.com/ffwff/lilith

flafla2··on Iloveyou
>In May 2020, it was revealed that while researching his cybercrime book Crime Dot Com, investigative journalist Geoff White had found Onel de Guzman working at a mobile phone repair stall in Manila. De Guzman admitted creating and releasing the virus. He claimed he had initially developed it to steal Internet access passwords, since he could not afford to pay for access. He said that Michael Buen, who had also fallen under suspicion during the investigation, had nothing to do with the virus' creation.

Fascinating. Is this why you posted this, OP?

flafla2··on Custom Game Engines: A Small Study
Sure, but on a technical level modding works exactly the same way. Modloaders like forge arose from a few issues with the simplified process I listed: for one, 2 mods that overwrite the same .class files conflict with each other and can’t be installed at the same time. Second, when new Minecraft versions come out it can be a pain to update your mod. Not to mention the update procedure mentioned above is pretty cumbersome for the average user.

Modloaders like Forge are platforms for mod installation because they overwrite the class files, and instead modders would add class files that don’t conflict instead (these days it might patch in code via Reflection, so things might be slightly different, but the fundamental process is the same). Furthermore I believe Mojang has started releasing debug symbols for Minecraft so the decompilation is no longer 100%. community driven as it used to be.

Fundamentally though, Forge is really doing the same thing. My point is that without the ability to easily decompile and patch in code, Minecraft modding would not be nearly as easy to do and platforms like Forge wouldn’t exist

I used to be a MC Modder back in the Beta, and at peak my mod had order 50000+ users, so I have some idea what I’m talking about. Admittedly I didn’t use a Mod loader at this time though.

flafla2··on Custom Game Engines: A Small Study
I noticed an omission on this list was Minecraft. Today, the game of course has thousands of engineers working on the various versions of the game due to its success. But in the beginning (and throughout Alpha/Beta and during the beginning years of its 1.0 development) it was built on a hacked-together Java LIBJDX 2.0-based engine.

Here's the first video uploaded by Notch when he first embarked on a new "Cave game": https://www.youtube.com/watch?v=UMpv5kZ9-rE (the original video is blocked in the US for some reason)

An interesting side-effect of this technical decision was that the game was heavily moddable. Java byte code is relatively easy to decompile, and class files easily modularize the various components of the game. So installing a mod amounted to un-zipping the minecraft.jar file and replacing .class files with modded ones. In fact, this is still how modding works in the Java version of the game.

flafla2··on Crystal 0.34
Indeed. I don't know much about this language, but the x86-64 OS written from scratch in crystal was one of the most impressive things I've seen during my time on HN [1]. In the thread about it [2], it was mentioned that the author was in high school.

[1] https://github.com/ffwff/lilith

[2] https://news.ycombinator.com/item?id=21860713

flafla2··on Free System Programming Textbook (Illinois CS241)
This is great stuff, thanks for sharing. Currently working through an algorithms class at CMU, and I haven’t yet encountered the idea of a recurrence “annihilator”. Cheers :)
flafla2··on Zoom rolled their own encryption scheme, transmit keys through servers in China
Hey, thanks! And kudos for helping to cultivate such a great community despite its massive growth.
flafla2··on Zoom rolled their own encryption scheme, transmit keys through servers in China
Fascinating, thanks for sharing. Makes me reflect on the (relatively few) comments I've made here, and if I'm making a positive impact on the community.
flafla2··on Internet Archive responds: Why we released the National Emergency Library
Fair, perhaps a better phrasing of my idea is "at a certain point cultural artifacts should have a guarantee of preservation".
flafla2··on Internet Archive responds: Why we released the National Emergency Library
The problem is that for game ROMs specifically, opening them to the public domain devalues potential opportunities for re-releases and remasters. The Nintendo virtual console service and S/NES classic are prominent examples. So it isn't so simple that there is "no harm done" by forcing game ROMs to fall into public domain.

That all being said, I still agree with you. I really don't care how much money Nintendo, Microsoft, or Sony wants to make on decades-old games, at a certain point it becomes a cultural artifact. Snow White and other century-old movie properties should be public domain nowadays as well. At this point we're debating about the core values of trademark law though, and I'm not sure you wanted to do that.

A similar debate revolves around what the law should say about "dead" games. These are games that, for example, rely on a central server that has been shut down. Many of these games were incredibly popular in their day, and some "radicals" (like myself, lol) argue that game companies should be compelled to release the server source code in an effort to preserve the game. Here's a great overview/rant on this topic: https://www.youtube.com/watch?v=tUAX0gnZ3Nw

flafla2··on Ed Catmull and Pat Hanrahan Win Turing Award
I recently implemented Levoy & Hanrahan in a game engine—a genuinely great read and easy to digest. One of my favorite papers in CG/Comp Photo.
flafla2··on Exploding Head Syndrome
I find stuff like this really interesting, a large (double digit) percentage of the population has the condition, and may or may not assume it is normal. I don't have Exploding Head Syndrome, but I do have the Photic sneeze reflex [1], which affects ~20-30% of people. People with the reflex tend to sneeze when they see bright things such as the sun.

My father and I both have it, and it felt great when I told him about it. He was as surprised as I was that it didn't happen to everyone! In a weird way I'm grateful for it, as I'm sure the reflex urged me to stay inside and cultivate my love for computing :). It's too bad it made me dislike the beach as a kid though -- these days I make sure to bring sunglasses.

[1] https://en.wikipedia.org/wiki/Photic_sneeze_reflex

flafla2··on Moviefone, Worth 1% of Its Former Value, Is Being Run by One Employee
Maybe you should read the article. The full headline is:

"Moviefone, Worth 1% of Its Former Value, Is Being Run by One Employee After Parent Company’s Bankruptcy "

flafla2··on Mathematicians prove universal law of turbulence
Interesting, I'll have to take a closer look at the papers themselves (although I am a mere mortal with insufficient background to get it fully).
flafla2··on Mathematicians prove universal law of turbulence
From the article:

> In their first paper, the mathematicians focused on what happens during the mixing process to two points of black paint that begin the process right next to each other. They proved that the points follow chaotic paths and go off in their own directions. In other words, the nearby points can’t ever get stuck in a vortex that will keep them close forever.

> “The particles move together initially,” Blumenthal said, “but eventually they split apart and go in completely different directions.”

> In the second and third papers, they took a broader look at the mixing process. They proved that in a chaotic fluid, generally speaking, the black and white paint mixes as quickly as possible. This further established that the turbulent fluid doesn’t form the kinds of local imperfections (vortices) that would prevent the elegant global picture described by Batchelor’s law from being true.

> In these first three papers, the authors did the hard mathematics required to prove that the paint mixes in a thorough, chaotic fashion. In the fourth, they showed that in a fluid with those mixing properties, Batchelor’s law follows as a consequence.

So no, they are not "proving something by not being able to disprove it." A better way of phrasing their strategy is, "proving something by proving that disproving it is impossible."

In Computer Science, there is a similar concept for proving asymptotic bounds of algorithms called an "adversarial proof." The idea is, given some query that your algorithm performs (e.g. in a graph algorithm, a query could be "are two vertices connected") come up with a worst-case adversary that answers queries in the absolute worst way possible, that would necessitate even more queries to complete the problem. In this way, you can prove a universal lower bound for the cost of solving some problem. See [1].

In this case, the adversary is trying to come up with the worst-case initial conditions for this particular brand of turbulence. Basically they are saying, no matter what, you couldn't come up with an initial condition that challenges Batchelor's law more.

[1] https://www.cs.cmu.edu/afs/cs/academic/class/15451-s20/www/l... Section 3.2

flafla2··on Why Discord is switching from Go to Rust
> After digging through the Go source code, we learned that Go will force a garbage collection run every 2 minutes at minimum. In other words, if garbage collection has not run for 2 minutes, regardless of heap growth, go will still force a garbage collection.

> We figured we could tune the garbage collector to happen more often in order to prevent large spikes, so we implemented an endpoint on the service to change the garbage collector GC Percent on the fly. Unfortunately, no matter how we configured the GC percent nothing changed. How could that be? It turns out, it was because we were not allocating memory quickly enough for it to force garbage collection to happen more often.

As someone not too familiar with GC design, this seems like an absurd hack. That this 2-minute hardcoded limitation is not even configurable comes across as amateurish even. I have no experience with Go -- do people simply live with this and not talk about it?

flafla2··on Expert programmers have fine-tuned cortical representations of source code
This makes me extremely skeptical of the study. At best, it says something about people who are whizzes at programming competitions, and certainly not "Expert programmers" in general.
flafla2··on Ending Support for macOS and Linux
Rocket League uses UE3, not UE4 (albeit heavily modded UE3)
flafla2··on How can you be so certain? (2019) [pdf]
Everyone here would benefit from giving this a read, if you’re in management or an implementer. My favorite quotes:

> It is not just members of the community who wishes for “just two more features.” We have a committee with 300+ members. It seems that essentially every member has a feature or two that they’d like to get into the language, and many have several. I have not changed my opinion that adding too many features could “sink C++.” Remember the Vasa! [Vasa]. In fact, I think that the flood of new proposals has increased since I wrote [Vasa]. I think we are trying to do too much too fast. We can do much or do less fast. We cannot do both and maintain quality and coherence. We have to become more restrained and selective.

> Every design has advantages, disadvantages, and limitations. We should never present a design without a serious and honest discussion of possible problems and alternatives. It is part of a proposer’s job to examine problems; “pure sales jobs” are not intellectually honest. The joint “pro- and con-papers” on coroutines written by people from “opposing camps” were immensely useful ([Use][Impact]).

And later:

> Setting goals is usually far harder than the detailed design and implementation of features. We are good technicians and we have theory and existing practice to guide us with the necessary work once goals have been established. Unfortunately, we are not good at agreeing on goals and articulating them. Often, we end up in a mess of requirements. Language design is not product development. We don’t have a high management setting fundamental priorities for us. Few of us have workplace experience for that, if for no other reason that our firms are each in a specific business. I think product-development analogies have been seriously overdone over the last few years

The idea that traditional product design mentalities are insufficient for programming language design is very interesting. Indeed, a programming language’s design must answer to theoretical truths in addition to mere user feedback (this is a point brought up in the paper). It sounds obvious that in many ways C++ is not a “product” as it doesn’t have clients in the traditional sense. Where does the “language as product” analogy break down?

← PreviousPage 2 of 5Next →