HNHacker News
TopNewBestAskShowJobs

etra0

557 karma · joined September 14, 2021

Software Engineer.

Interested in Game Hacking (offline). Rust, C, C++.

For any discussion feel free to contact me at me@etra0.cl

submissionscomments
etra0··on GPT-3.5 crashes when it thinks about useRalativeImagePath too much
I wonder now, how many tools are breaking right now while parsing this comment section using some variation of GPT 3.5 while scanning HN haha.
etra0··on I cut GTA Online loading times by 70% (2021)
I learned some of this stuff being motivated by doing mods that interacts directly with game's memory.

I mostly build free-cameras, which allows you to detach the camera from characters, and for that I had to learn x86 assembly, some disassembler tools and how compilers generally work.

I think it's super rewarding because while you're seeing bits and bytes, and crashes, most of the day, at some point you can see you achieved something by being able to freely move in a restricted world.

I was surprised how far you can get with Cheat Engine. Its disassembler is really good, and you can do injections directly, if you then want to move to your own advanced stuff, you can build frameworks to do all of that using Windows APIs.

etra0··on A copy-and-patch JIT compiler for CPython
I value the commit messages in the context where you develop a tool that has to be run widely.

In particular, I had experience with Wine. Having useful commit messages allows you to do bisects and trace down regressions with more ease than cross-checking messages with some external ticket system, and when you have a lot of people contributing to a project it's easier to see what they're doing when they try to do a patch.

I also believe though, that it is good practice to help your colleagues when they do need to find an issue in a project where a lot of different people can work on.

etra0··on The C++20 Naughty and Nice List for Game Devs
> And all that you get just writing normal C++.

But, as far as I understand, the boundary layer has to still be C (the side that loads DLLs and stuff), because of the natural limitations of templated languages and linkers.

And as soon as you change any interface you'd need to recompile more parts of the code. The same can be applied with Rust using dylib. At the end, the glue code always end up being C.

etra0··on The C++20 Naughty and Nice List for Game Devs
is it any better in C++, though? IIRC C++ doesn't have a stable ABI either.

If you either commit to dylib or C++'s DLLs, you still have to recompile everything on version change, unless you also use the C ABI in C++.

etra0··on GTA 5 source code leaks online
> Video games are already full of exploits. That's what allows a rich modding scene to thrive

I'm not sure I see the correlation? unless you explicitly mean online modding, which I'm not sure it happens that often.

I've been modding games for a few years and it's mostly interacting with Windows API and its capability to access other processes in the same user space by injecting DLLs. I've never looked for vulns inside the game itself.

If you refer to online modding, usually while they're local some games allow it, but as soon as it affects gameplay they're very rarely what I would say they're wide enough 'to thrive'.

It is true that the term of security doesn't apply that often to offline games, though.

etra0··on Super Mario RPG is an endearing, perplexing relic
I also have very fond memories of the game.

I only played it through emulation (on ZSNES, in Windows 98!) but I was very young, and I'm a non-native English speaker so the gameplay felt even more obscure to me. It's crazy how now, that I have a better understanding of English, some things I got stuck for a long time when I was a kid were actually quite simple.

The most fun to me, it's that still retains the magic, the OST is still great (and the option to use the classic one is quite a gift), it feels mysterious and magical. They did an amazing job.

etra0··on .NET 8
I'm willing to try it, I'm just waiting for a few more benchmarks regarding memory usage. Last time I checked I could only find the Benchmark Game [1] for AoT measurements, but they're from .NET 7.

Memory usage is important to me and golang is very good at that being light, but I really hate writing it for various personal reasons.

If I had more free-time I'd just simply go with Rust but you know, free time is limited :P.

[1] https://programming-language-benchmarks.vercel.app/csharp-vs...

etra0··on .NET 8
> I therefore find myself stamping out boilerplate for e.g. JSON deserialisation more than I would like.

This was my first experience while getting started in the .NET ecosystem. I wanted something similar, I wanted to build small console tools/services and F# looked cool but hit the reflection issues too soon.

I mostly use crystal and golang, but both have their own issues. Hopefully F# improves with time to be fully usable with AOT!

etra0··on .NET 8 Standalone 50% Smaller On Linux
Do you have any resources?

I was looking for similar benchmarks but couldn't find anything conclusive. I found the benchmark game [1] but only had .net 7 AoT (not .net 8) benchmarks and memory consumption seems too high.

I'd ditch golang on a pinch as soon as I can use a decent type system, and C# seems like a great alternative.

Crystal would be my ideal but its compiler is still too slow, sadly.

[1] https://programming-language-benchmarks.vercel.app/csharp-vs...

etra0··on Mojo is available for local download
Same, and even worse, the playground requires you to be logged in. That's like the initial step of a demo and requiring an account is simply nuts.
etra0··on ZSA Voyager: Low profile split keyboard
I can totally relate. I bought my ErgoDox EZ a while ago and I still love it.

I changed the switches for some lubed linears, and added some foam and now it even sounds better. It also reduced my wrist pain.

I'm debating with myself whether to get the Moonlander or not. I don't actually need it, but it looks so cool (and the USB port of the ErgoDox is quite outdated haha).

etra0··on Animated Knots
The YouTube channel HowNOT2 [1] has a great collection of videos testing various ropes (mostly for climbing). Among these videos, there are a couple that test specific knots (like [2]). It's overall a very fun channel, even though I don't even do any sort of climbing.

[1] https://www.youtube.com/@HowNOT2

[2] https://www.youtube.com/watch?v=dagg2-If4h8

etra0··on Gojekyll: A fast, partially compatible Go clone of Jekyll
I can relate to this. I blog sporadically, using different computers, and every time I had to pull the repo and get it to run, several things would break, resulting in a very painful dependency management process (I must admit that I lacked experience with ruby projects in general).

After porting my blog to Hugo, having a single binary that can perform all tasks on all three operating systems I use (MacOS, Windows, and Linux) is a blessing, and now the blog builds incredibly quick.

etra0··on Opendream: A layer-based UI for Stable Diffusion
Corridor Crew did a some sort of anime using this technique [1] and then they did two videos [2, 3] explaining the technology behind. Quite interesting if you ask me!

There still are some issues with the eyes and a bit of flickering but at the speed everything is moving I wouldn't be surprised if this improves in a year or two.

Needless to say, there's still a lot of artistry involved in such a process so anything is yet to be completely automated.

[1] https://www.youtube.com/watch?v=tWZOEFvczzA

[2] https://www.youtube.com/watch?v=FQ6z90MuURM

[3] https://www.youtube.com/watch?v=mUFlOynaUyk

etra0··on ‘Baldur’s Gate 3’ Prepared for 100k Concurrent Players, They’ve Gotten 700K
It's a DRM free game. I cannot say if the game pings home or not because I don't own it but this statistic is collected by Steam, not Larian.
etra0··on Crystal 1.9.1
I really wanted to like Nim, but its async story is not that great (no multithreaded runtime AFAIK, no channels) and albeit justifiable, I don't like the way it treats imports. I think Crystal and Go are better in the async space.

I thought I'd have more troubles with the case insensitivity thing, but it turns out, it wasn't a big issue at all, and UFCS is great.

etra0··on Astronomers witness energetic switch on of black hole
Now they're building the ELT –– Extremely Large Telescope.

They're great with names haha.

etra0··on Threads Is Now Live
The site now links to the Threads app for Android [1] too, I just tested it and it's working fine [2]. Maybe it's a regional thing?

[1] https://www.threads.net/download

[2] https://play.google.com/store/apps/details?id=com.instagram....

etra0··on Why [“1”,“2”,“3”].map(parseInt) yields [1, NaN, NaN] in JavaScript (2011)
Python does not do this:

    > help(int)
      class int(object)
      |  int([x]) -> integer
      |  int(x, base=10) -> integer

    > list(map(int, ["1", "2", "3"]))
      [1, 2, 3]
Even if you define a function that takes two parameters, it complains about not having a second one:

    >>> def to_int(a, b):
    ...     return int(a, base=b)
    ...
    >>> list(map(to_int, ["1", "2", "3"]))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: to_int() missing 1 required positional argument: 'b'
etra0··on Functional Python Programming
This looks cool! I always wanted something similar for pandas, because I found it very elegant in dplyr in R. AFAIK they do have a `.pipe` method now but it could definitely be better in the future.
etra0··on Show HN: Hacker News with Tags
This looks like a very useful tool, but the contrast ratio is so low that I have a hard time looking at it. I don't know if there's a way to measure that for accessibility but I'd appreciate some sort of more contrast-y theme.
etra0··on Try Galaxy: A web app to demo Samsung’s OS on an iPhone
My experience, sadly, has been the opposite. I had an iPhone 13 Pro Max with 120hz, and switched to a S22 Ultra, and although I can see the animations at 120hz, most of the time they feel stuttery.

I always was an Android user until that iPhone, I had it for about a year, and switched back to Android again because I thought I was missing some stuff, but I was wrong, I don't miss a thing of current Android, I think current iOS is simply smoother and more fun to use, and stutter free 95% of the time.

etra0··on Ryujinx: Experimental Nintendo Switch Emulator written in C#
I agree. For some reason I can't enjoy reading/writing C#, it reminds me too much of Java (and I have personal distaste for CamelCase), but if an emulator can squeeze such performance in this language... it tells a lot about the good work they're doing.

Also I still haven't seen anything as good as the Visual Studio integration with C# to create GUIs in Windows.

etra0··on A visual book recommender
woah, didn't know about this site! it is super cool!

It feels like what Pinterest would be without the annoying bits.

etra0··on How to Start Your Blog in 2023
I haven't tried Astro, but I moved my blog from Jekyll to Hugo.

I did it because I remember having issues with jekyll installation from time to time, like it suddenly broke out of nowhere, and trying to fix it became a pain.

Then I looked for alternatives and found Hugo, changed the template and installed in all my systems (Windows, Linux, macOS) and it has worked like a charm. Also, the speed boost was super noticeable, like, several times faster.

So if I were to choose again between Jekyll and Hugo, I'd go with Hugo.

etra0··on Ruff: A fast Python linter, written in Rust
It might been my ignorance but I haven't seen any tools written in JVM or Swift for these kind of scenarios, but I haven't looked too hard either.

I do think Go has have success in the same space because it is fast, but IMO the ergonomics in Rust for this problem space are a bit better. Of course, that's just my opinion.

> You can still have kinds of memory bugs in all of these incl Rust, esp leaks.

You're right. Leaks are not covered in the memory safety guarantees by Rust, neither are OOMs, but you can't deny you're on a way more safer space than with either C or C++.

etra0··on Ruff: A fast Python linter, written in Rust
I agree, I should have phrased it as *I believe it's one of the reasons*. Developer ergonomics matters a lot, too. The compiler is incredibly helpful, it makes these kind of projects less scary to contributors too, and I agree that pattern matching is fun as hell.
etra0··on Ruff: A fast Python linter, written in Rust
I think this is because now one of the fastest languages is also safe. Before, the usual options for writing 'performant code' were usually C or C++, and even though modern C++ has better tools for memory management and safety, it was still scary to most people and you could still have some sort of memory bugs.

Now, we also have Rust in the performant side of things, and the guarantee that 'if compiles, it'll work' (aside from logic bugs), is quite a big one. Also, considering how helpful the compiler is, and the mentioned guarantees, more people are enthusiastic about having faster things.

etra0··on Universal Summarizer
I just tried it with a blogpost of my own that's written in a somewhat localized Spanish and it summarized it pretty well in English, which is quite surprising. Good job team kagi!
← PreviousPage 3 of 4Next →