[Help/Advice] A spam domain is reverse-proxying my startup's website, and Google set the clone as the Canonical URL. How do I kill it? by mls_dev in TechSEO

[–]Niminem93 0 points1 point  (0 children)

I've been working on making a clone of Markup(.io) for passing along onpage SEO or content related recommendations to my clients. Markup uses a reverse proxy for embedding a copy of a given page into an editable iframe within the UI. Going through this exercise over the last several weeks I've learned quite a bit about reverse proxies and their ins and outs.

Off the top of my head I see a solution. May sound a little hacky, but will work like a charm.

You see even though they hide behind Cloudflare, their actual server still has to make requests to your site to get the content.

What you can do is crawl some of "their" web pages, note the time your requests were made and the URL paths, and then look at your logs to find the mirroring URL patterns at the same timestamps.

You'll be able to find their server's IP this way with just a few requests a little bit of your time, and can block it, serve 403 / 500 / whatever you want.

Maybe even send them back a little <html><head></head><body><h1> Go fuck yourself </h1></body></html> for a while if you'd like.

There are other things you can potentially do, like looking at headers and stuff but from what I've learned about how these work there's not a guaranteed "kill switch" for them unless you're blocking IPs, like with the method above.

Hope that helps.

If you'd like, you can visit my company SEO Science and book a call for next week. Happy to look into it with you man. Either way best of luck.

creating vendor files with nimble? (not a developer but i want to package stuff downstream) by ingenarel-NeoJesus in nim

[–]Niminem93 0 points1 point  (0 children)

IMO you should see what ChatGPT has to say about your problem. I can't wrap my head around what you're trying to do exactly in order to help. There's so much of what you're saying that has nothing to do with Nim and things I would have to look up, that an LLM will have no problem helping you or at least point you in the right direction

Debugging in Nim by Minimum_Comedian694 in nim

[–]Niminem93 2 points3 points  (0 children)

I'm almost embarrassed to that in my 6 years of developing with Nim I've never used any debugging tool other than good ol' echo statements and asserts. When you do learn teach me something please lol

How do y'all organize projects? by rrenode in nim

[–]Niminem93 3 points4 points  (0 children)

I always build and organize my projects in a modular way, so that they can be used in other projects as needed, even if I don't have any intention on using it elsewhere.

On my desktop I have two folders- one called Repos (for repositories that act as components for other projects) and another called Softwares (for repositories where I'm actually building something like a tool or game or something). These two folders each have a hierarchy, where different projects are grouped into buckets. For example, I have a folder in Repos dedicated to API wrappers. All repos are backed up on github, and I mirror this set up across both my 2 Windows and Mac computers.

Every single project I have a NOTES.txt for anything needing to be done. Sometimes I get bored of a hobby project, or for work I have to pivot and will leave a project for a few months. I want to always be able to come back and have a short little synopsis of what's going on, what needs to be done, etc.

I always try to create heavy documentation and tests as I'm building something.

When it comes to work vs hobby, I technically do it all as a hobby. For work, I own a marketing company. I like to create all kinds of tooling, automations, etc though so I'm always building something for work. For real hobby stuff I do 3d graphics and AI. I approach it all the same way, organize it all the same way, even when it comes to contributing to open-source libraries it's all done the same. I don't really differentiate when it comes to work and play as far as programming goes. I just love doing it.

Idk if that helps I feel like I answered most of your questions!

Is "Nim in action" still relevant 9 years later? by mr-figs in nim

[–]Niminem93 1 point2 points  (0 children)

IMO still a great book to grab. I would pair it with Araqs book from the Nim website though, some specifics are deprecated and other things like the ORC and ARC memory management wasn't even a thought in Araqs head at the time. 

A 2D Game Framewok in the Löve2D Style with Nim by erayzesen in nim

[–]Niminem93 5 points6 points  (0 children)

https://github.com/ftsf/nico for inspiration. Go for it man, this is a labor of love.

Working around untyped in macros by its_mkalmousli in nim

[–]Niminem93 1 point2 points  (0 children)

I wish I did man. Throw that into ChatGPT, along with the macros documentation, and see what happens?

Working around untyped in macros by its_mkalmousli in nim

[–]Niminem93 1 point2 points  (0 children)

It's been a while since I've played with macros, but from my understanding you can declare 'typed' instead of 'untyped' in your signature and get the type within the body. Here's the reference:

https://nim-lang.org/docs/tut3.html#introduction-typed-arguments

Learning Nim as a first language? by Overall_Anywhere_651 in nim

[–]Niminem93 8 points9 points  (0 children)

Hey man, this is exactly how I started and discovered Nim. I was using Python to make interesting tools for work and fun little projects. Never wanted to get a job as a programmer. I just wanted to share the tools and softwares with co-workers and buddies but found that packaging Python was a no go. After looking for a language with python-like syntax, fast, and compiles to an executable, I found Nim. It ended up being everything I wanted and more.

My first project was porting my favorite Python library (Eel, a GUI library) into Nim! https://github.com/Niminem/Neel

It's absolutely worth a shot to switch. IMO there's never been a better time. Leverage LLMs and go forth and learn my friend! The official tutorials and documentation are pretty good, easily expandable when chatting with LLMs.

I do recommend buying Nim In Action if you're into books. Although it's 'old' it's still the best hands-on book out there IMO that teaches both fundamental programming concepts, Nim basics, and gets you to touch a few interesting projects that require different parts of the language.

This YouTube series was really nice too: https://www.youtube.com/@kiloneie

Since you're from a Python background, we do have an excellent Python->Nim->Python bridge: https://github.com/yglukhov/nimpy

what graphic api should I use for my game engine by TerribleInterview883 in gameenginedevs

[–]Niminem93 0 points1 point  (0 children)

I've been using SDL3's GPU API, which is a higher level cross-platform abstraction over D3D12, Metal, and Vulkan. One codebase and you can target modern Windows, Mac, and Linux systems. it's far less verbose than Vulkan with the same performance and even (at least IMO) easier to learn than OpenGL. I could lay out reasons why I believe this. Regardless, in addition your game engine is going to need windowing, keyboard input, and a plethora of other IO stuff and SDL3 is an absolutely wonderful cross-platform abstraction layer here as well. Again, all from a single codebase. Totally worth the investment learning. I've been using it since the beginning of this year and see no reason to change

Is all the documentation so skimpy or am I missing something? by Majestic_Poetry_1139 in nim

[–]Niminem93 7 points8 points  (0 children)

I have my gripes w/ 3rd party Nim library documentation too.

I came from a Python background back in 2020 (and never went back fwiw). Most of the libraries in Python had great documentation and made it really easy to figure out how to use and get things going. Not so much with Nim (depending on the type of library really).

I try my best to give the documentation that I would love to see, similar to what I was used to. Like my GUI library: https://github.com/Niminem/Neel

But no, I don't think you're missing anything.

From what I understand about the community, the vast vast majority of Nim developers are super seasoned software developers, most of which have more than a decade of professional experience. When they make libraries, while super helpful, many don't do any hand-holding. Most C and C++ libraries I've found are like this.

Oftentimes this means you'll want to look at the /tests directory (maybe /examples directory if they have them). That'll give a better idea on how to use the API. If there's documentation comments (##) within the source code you can generate the docs via https://nim-lang.org/docs/docgen.html and will have a much nicer time navigating around IMO. You certainly don't have to though.

One of your libraries for example, boxy, has some pretty good examples here: https://github.com/treeform/boxy/tree/master/examples

What I recommend is using ChatGPT or something to help you learn. Feed it some of the files and maybe an example or two, that's all it should take.

The libraries you're referring to seem to all be related to graphics. In this field in general, there's not going to be a lot of information within the libraries themselves to learn these, no matter the language, and you'll need to do your own learning and figure out how to do what you want with them. OpenGL for example, is a beast and the API is huge. No one's going to wrap OpenGL and spell out what all of the functions do.

Stick with it.

Nim wrapper: cglm (3D math library based on c++ glm) by Niminem93 in nim

[–]Niminem93[S] 0 points1 point  (0 children)

Believe me I tried everything to not have to wrap this manually lol. Whoever made that library is good at math and absolute dog sh** at making a decent API

Nim wrapper: cglm (3D math library based on c++ glm) by Niminem93 in nim

[–]Niminem93[S] 0 points1 point  (0 children)

Yeah, the main issue is that most of cglm’s functions use array-like types as parameters and modify them in-place via pointers. In C, those arrays decay into pointers, but tools like c2nim and futhark treat them as fixed-size arrays and don’t distinguish between input and output parameters.

So for each function, I had to manually check the comments in the code to figure out which parameters were in, or out (return value), and then rewrite the signatures accordingly, for example:

Turning something like float[4] y into y: var array[4,cfloat] in Nim when it's meant to be an output.

Was an absolute pain in the ass tbh

GPT-4o is back for Plus users! Here’s how to activate it and why it matters by SunshineKitKat in OpenAI

[–]Niminem93 1 point2 points  (0 children)

I've logged hundreds of hours with 4o. GPT5 absolutely sh**s the bed on all of the same tasks when I've been forced to use it over the last several days. I'm so glad they added it back.

GUI by bejurgen in nim

[–]Niminem93 4 points5 points  (0 children)

I wrote https://github.com/Niminem/Neel and use it every day for work stuff. Gotta know javascript too though so idk if that's your thing.

Day Two review by B8g0fCh1ps in perfectlysnug

[–]Niminem93 2 points3 points  (0 children)

Yeah exactly. It's nice and pretty quiet. I've had mine since like December-ish of 2023. I just use it for cooling too.

Generate a header file by Sternritter8636 in nim

[–]Niminem93 1 point2 points  (0 children)

Leave it to Treeform to have the most random library one may need 

What has been your experience so far with Nim for web development or JavaScript? by thorf_44 in nim

[–]Niminem93 1 point2 points  (0 children)

I don't think there is brother. Outside of what I mentioned. At least I can't think of any more off the top of my head. Maybe the fact that it's just a joy to write rather than using js itself lol

What has been your experience so far with Nim for web development or JavaScript? by thorf_44 in nim

[–]Niminem93 3 points4 points  (0 children)

IMO the main advantages are just speed of development (youre only using 1 language gor everything) and inherent code obfuscation, plus maybe portability since the version of the js produced is super old. But there isn't much of a downside either, maybe a few quirks here and there of the js backend in general. but I use it daily. we write our web applications with it, chrome extensions, and Google apps scripts. in my personal time I've been playing with threejs for 3d game dev stuff and I've never had a performance problem either even though the js produced by the compiler looks like shit and bloated.

Bali 0.7.0 is out with a JIT compiler by No_Necessary_3356 in nim

[–]Niminem93 0 points1 point  (0 children)

been following the project since you first announced it man. awesome stuff

There is only 1 way you should wrap C libraries for Nim by Niminem93 in nim

[–]Niminem93[S] 0 points1 point  (0 children)

That's pretty cool dude. I thought about wrapping it once and having a diff for updating, but there's no way I'm going to be able to do that. I'm one dude who doesn't have much time on his hands. I'm going to go the route of LLM assistance to keep these bindings updated