HNHacker News
TopNewBestAskShowJobs

yann-gael

25 karma · joined October 2, 2017

submissionscomments
yann-gael··on Ask HN: Broken "Public Research Articles" Link: Any Support for Google Scholar?
Is Google Scholar entirely automated and run by AIs? ;-)
yann-gael··on Ask HN: Broken "Public Research Articles" Link: Any Support for Google Scholar?
Thanks allinonetools_!

Sorry, I should have added to my original post that I did try to create a folder called "Public research articles". Naturally, it comes with an ID that's different from the one pointed to by the original link, so when I click the link, still 404. Is that what you meant by "triggering the upload flow"?

yann-gael··on ECS Survivors Parts VII – X
I'm a prof. in SE, I ask my graduate students to write blogs about their research.

This post has been written by Laurent Voisard, who studies the Entity-Component-System used to develop many games and (generally) its impact on software quality.

yann-gael··on [dead]
Programmers sometimes refer to the toilet as the 'debug chair'. At first, it might sound funny, but there's some truth to it. Yes, it really is a debug room and a debug seat!

Sometimes, you may get stuck on bugs or problems, and even though they seem simple, you can't figure out how to solve them. You might feel confused about how to tackle those obstacles. And then, out of nowhere, you're forced to step away and visit the bathroom. In that moment, a solution magically pops into your mind, and you wonder, ‘How did that happen?' Well, there are scientific facts behind this, which we'll explore in this post.

yann-gael··on [dead]
Digital Forensics is the process of identifying, collecting analyzing and preserving digital evidence from computers, mobile devices, network or cloud systems. The purpose being to support crime investigation, legal proceedings, cybersecurity response and corporate investigations with the key principle of maintaining integrity evidence so as to ensure admissibility in court. At the East Africa Forensic Conference, it was shown that the cybercrime issue has proved to be a thorn to multiple countries and in other cases not even caring for nation borders to the point of showing the need for international cooperation so as to combat cybercrimes as the perpetrators will use national borders and jurisdictions to their advantage.
yann-gael··on [dead]
Server-Driven UI is an approach where the backend defines how the interface looks and behaves. Instead of hard-coding screens into every app, the client simply renders what the server describes — usually through a structured JSON schema. The server tells the client what to show and how to show it.
yann-gael··on Towards Holistic IoT Systems Profiling
As energy costs rise and concerns about environment increases, developers are beginning to realize that optimizing for performance isn't enough — it's time to optimize for sustainability. Most of the small, distributed devices running inefficient software can collectively waste significant power and increase the global carbon footprint. While performance profiling has always been the primary concern for developers, energy profiling has often been overlooked, especially across the diverse layers of the IoT ecosystem. Yet, when developers try to measure this energy impact, they quickly hit a wall: there simply aren't enough profiling tools that work across all layers of IoT architecture — from device firmware to cloud applications.
yann-gael··on Insecure Data Storage in IoT Smart Lock App
This blog examines one specific recurring vulnerability in detail: insecure data storage.
yann-gael··on Java Quirks: Bridge and Synthetic Methods for Reflection
Every public method of a non-public class was duplicated in its public subclass. Methods are duplicated every time. To really understand what is happening, we must dig deeper.
yann-gael··on Running a Heating, Ventilation, and Air Conditioning (HVAC) Model in EnergyPlus
In my previous blog posts, I explored the role of IoT middleware across various smart city applications. In this post, I’ll focus on simulating an HVAC model using EnergyPlus to optimise energy consumption and improve building efficiency. We’re looking to see how this can be done using IoT middleware, without getting too deep into the technical stuff.
yann-gael··on CG-WFC – A Hybrid Method for Designer-Guided, Replayable Game Worlds
Procedural Content Generation (PCG) is a powerhouse technique that creates the vast, replayable worlds we love in games like Rogue and Minecraft. However, this power comes with a fundamental challenge: How do you maintain the structured pacing and intentional design of a handcrafted level while still benefiting from algorithmic variability?

The CG-WFC method, short for Cyclic-Graph and Wave Function Collapse, offers an elegant, two-layer solution to solve this issue.

yann-gael··on Having Fun with Java Reflection and Modules
Java modules offer strong(er) encapsulation and put the onus on the Java programs to explicitly declare, at compile-time and run-time, whether they need special access to APIs (i.e., packages and their classes) hidden in some specific modules. These special accesses can be declared at both compile and run times and, of course, must be documented along with the programs. However, at run time, you may still want to hide some APIs that are not (yet) in a module, and conversely, you may still want to access hidden APIs and inform the program users that they forgot to allow this access. You can do both in pure Java by having some fun with reflection!
yann-gael··on Should Reviewers' Names Be Published with the Papers They Review?
The peer-review process is the heartbeat of academic publishing. It is how researchers ensure that knowledge moves forward through scrutiny, feedback, and validation. Authors submit their manuscripts to journals or conferences, and editors send them to other experts who assess the work's originality, rigour, and relevance.

In this blog, I try to dissect the question: Should the names of reviewers be made public alongside the papers they review?

yann-gael··on Ad-Hoc Features and Where to Find Them, Part 1: Origin Story
When you look at a piece of code/software, it is often fairly intuitive to know where/what are some of the implemented features; either because there is a good amount of documentation, the code is well structured, or because there are tools that help with feature location. However, not all features are simple to find: some because of poor maintenance, others because the feature was not necessarily treated as such during the implementation. I would call these ad-hoc features. As the name suggests, these features were implemented without much thought: maybe developers thought it would not be useful to properly package them and they ended up being reused elsewhere, maybe a large team got confused and re-implemented the same piece of code many times, or maybe someone just didn't recognize that there was even a feature to begin with!
yann-gael··on ECS Survivors Part IV: Collisions
In the last instalment of this blog series, we created a rendering pipeline to allow for drawing multiple objects according to their priority, and we also created a GUI anchoring system allowing us to create dynamic and scalable GUI elements.

This time around, I wanted to work on something a bit more interesting: Collisions. Now this took much more time than anticipated. What started as a simple collision detection and resolution system quickly escalated to a full-blown scientific paper comparing five different collision systems. In this blog, I will give an overview of three methods implemented with "pure" ECS as well as share some of the results from the paper I wrote.

yann-gael··on Recommendation for non-DOS/Unix open source OS outside x86/X64
You could try MorphOS or AROS, which turn your (old) Mac and others into Amigas
yann-gael··on ECS Survivors Part III: Rendering Pipeline and GUI
In a previous blog post, we restructured a project to create separate modules for ECS. We created an input handling system as well as player and enemy movement behaviours. Seems quite simple but it took a bit of thought and iterations to get it right. We now will move the rendering logic into Systems, which will require us to create custom phases.
yann-gael··on Bear plus snowflake equals polar bear
I wonder where is the "substitution" of the codepoint sequence (from a sequence to a single codepoint) done? Very concretely and practically: is it the font doing the substitution? What else if not? How do they decide that a sequence should be substituted?
yann-gael··on The Liskov Substitution Principle (2019)
Only because of the confusion in most programming language between typing and reusing... In the best of world, "inheritance" should mean either typing (à la Java interfaces) or "reusing" through abstact/concrete classes.
yann-gael··on The Liskov Substitution Principle (2019)
Yes, that's the reason why it is important to distinguis h between types and implementation classes. Types should describe a taxonomy of "things" as well as possible and according to the need of the client. Implementation classes should be used to reuse/factor out as much code as possible (DRY) while providing implementations for the types.

Java interfaces are nice because they can be used as types while one or many classes can implement them.

yann-gael··on Ask HN: What are some niche communities you enjoy?
Amiga community!
yann-gael··on Previously Unknown Warhol Works Discovered on Floppy Disks from 1985 (2014)
This is silly: lots of Amiga computers are still around, the Amiga community knew about these images for years. They didn't do due diligence and studied previous/related/existing works.