Sneedforo

  • 🐕 I am attempting to get the site runnning as fast as possible. If you are experiencing slow page load times, please report it.
enjoy your electron pajeet-trannyware, you will be calling yourself Jessica long before this project is finished
Yeah yeah he should use vim or emacs or ed or just a hex editor because if you're making life easier for yourself and actually getting somewhere, you're doing it wrong. Everything besides a text editor is bloat when coding, and why would you want a linter, formatter and syntax filler to make your life easier? What are you, a pajeet troon globohomo Bill Gates shill kike nigger faggot?

As much as Electron is gay and shit, VS Code is the best code editor around just because of how extensive it's plugin ecosystem is and how it makes coding anything a breeze, from full programming languages to scripts or even LaTeX documents if you so wish to desire. vim's only merit is that when you rewire your brain to use this one piece of software efficiently you edit text faster. That's it. It's not an IDE. Anyone doing any serious work won't use vim for anything beyond quick basic text edits.
 
VS Code is the best code editor around just because of how extensive it's plugin ecosystem is and how it makes coding anything a breeze, from full programming languages to scripts or even LaTeX documents if you so wish to desire
I guarantee you Sublime Text has the same if not more plugin support. Also JetBrains has a fully featured IDE for Rust.
Everything besides a text editor is bloat when coding, and why would you want a linter, formatter and syntax filler to make your life easier?
not my point at all, I don't know how to use vim outside of :q
There are so many better options than using a Microsoft product that's a glorified Chrome Browser made by indians.
 
  • Agree
Reactions: y a t s
why would you want a linter, formatter and syntax filler to make your life easier?
VS Code is the best code editor around just because of how extensive it's plugin ecosystem is and how it makes coding anything a breeze
When you find out about vim plugins and emacs packages, it's gonna blow your mind.

and the existing ones tend to try to compile the entire codebase of ffmpeg into your Rust binary, so I couldn't use that.
I think this is an issue related to how rust handles shared objects and linking. I'm sure you've noticed the big target folders and how builds involve compiling and packing in everything from imported crates to the final binary.

so I bit the bullet and just went with command execution for ffprobe
This can introduce compatibility issues with different systems and potentially command injection vulnerabilities. Trying to mitigate this with input validation is not worth the headache.
 
Last edited:
  • Like
Reactions: no-exit
Sublime Text
Sublime Text is paid software.
JetBrains
Yeah okay IntelliJ IDEA Community is Apache 2.0.
There are so many better options than using a Microsoft product that's a glorified Chrome Browser made by indians.
Still, VS Code is the only good modular IDE that's actually free. Other options are either limited in the scope of what they can support or are paid. I guess IntelliJ IDEA Community is a strong contender, but I never tried it, and I don't know if they haven't gimped it hard to incentivize paying for the proprietary Ultimate version.

And I'm gonna be an Electon apologist for a second here. Yes, it sucks dick, yes, it's a resource hog, but, at a certain level of complexity of the project you base upon it it's not as bad. For example, Joplin is a very nice note taking software, but the desktop program is based on Electron. It's way too heavy for what it wants to accomplish.

But VS Code? This is an IDE, it has debuggers, linters, and other complicated bullshit, it's not something you'll keep running in the background at all times and it's not something you'll be closing and opening over and over again. In this case the shortcomings of Electron aren't as abrasive as with other Electron based projects.

Also, VS Code takes ~5 seconds to fully launch on my i5-12400. If you have a fairly modern CPU it's not so bad to launch and use it, Chromium likes modern multicore processors. I still use Notepad++ for basic text editing because it opens instantly and for what I need to do it's a competent little program. VS Code is for the heavy lifting.
When you find out about vim plugins and emacs packages, it's gonna blow your mind.
How many professional development environments utilize vim/emacs with extensions as their main IDE? Oh yeah, that's right, none. Only Stallmanist GNU+Linux neckbeards use it for some shit they do for personal use. A fringe minority.
 
This can introduce compatibility issues with different systems and potentially command based vulnerabilities.
I'm writing this so it can be changed but I am absolutely not going back on this right now. There's no point discussing it with me, I am not open to suggestions. I discussed this with other developers and the consensus was that most Rust devs would use command execution.

I'm also not opening the repo. I don't want help. There's nothing anyone can do to help until the project is further along.
 
There's no point discussing it with me, I am not open to suggestions.
I'm also not opening the repo. I don't want help.
Okay, so what's the point of this thread being open to discussion if you don't want people to share their opinions on the project? So that people can make suggestions for you to get mad because you're not open to them? Just lock it for the time being and treat it as a public announcement bulletin, and unlock it once you're ready to get bombarded by suggestions, critiques and code commits when the project is "further along". That'll save you some annoyances.
 
I'm writing this so it can be changed
This may be a controversial opinion but I think that is the right way to approach this. Henry Ford quote about how nothing is hard if you divide it into small jobs.
I don't get Pajeet or Troon from VScode I get either Game Dev or someone who went with the "default" option.

The Pajeet Code Editor is Chat GPT.

I would think trannies would program in something like Vim or Emacs as a guess but I don't know if there is an IDE or Text Editor that screams tranny
There are so many better options than using a Microsoft product that's a glorified Chrome Browser made by indians.
Microsoft is bad though. I concur.
Sublime Text is paid software.
>Not just clicking no

I started with Sublime text and now I can't program in anything else because nothing else gets the colors quite right.
Everything besides a text editor is bloat when coding
This is true though It takes like 15-30 seconds for IDEs to open sometimes especially if you have other stuff open in the background.

I unironically write in Sublime text and then copy paste into Jet Brains to run/test. I like Jet Brains because you don't need to worry about going through the hassle of creating an environment it is just plug and play.
 
This may be a controversial opinion but I think that is the right way to approach this. Henry Ford quote about how nothing is hard if you divide it into small jobs.
I agree with the principle you describe, but I differ in how it's applied. One of the things that makes things from the Unix era so great is the Unix philosophy of modularity, where you do one thing and do it well. However, a big caveat here is if you're going to do something, do it (reasonably) right the first time. This way, you don't have to bulldoze major parts of your project and rebuild them with better foundations. Effective programming is all about doing things in a way that won't bite you or your users in the ass later on.

To tie in some discussions we have had about OOP in the programming thread, this is a huge part of what makes OOP so attractive to many developers and project heads: the ability to break up concepts into objects, determining how they relate to each other in a hierarchy, and define specialized methods that handle the specifics between layers of abstraction. One of the first things I do if I'm making some object or class is determine what values I need to manage to make it work, what operations I need to perform on those values, and then how I can split all that up into tiny modules (here, it would be class methods). When writing generics that other classes inherit, you often define empty (unimplemented) class methods that are shared between more specialized inheriting types—some languages use the term pass, others just have you return a junk value—so you can re-define it with implementations that are tailor-made to the inheriting classes. This allows programmers to sketch out the skeleton of their program and pick away at it in those little modules. You don't need OOP to do this, since you can just define a function with a TODO: comment and a simple return statement until you get around to implementing it all.

Aside from making large tasks easier to tackle in small chunks, this modular setup inherently brings less rigidity to your project's structure, and this makes changing/updating/fixing things >9000x easier. If we take the example of executing shell commands (like with Python's subprocesses or other language equivalents) and put aside the significant risks of command injection vulnerabilities, parsing output from commands like ffprobe inherently requires more rigidity in the user's setup and you have to make more assumptions about output formatting, version types, paths to the binaries, whether the binaries are even installed in the first place, etc. It's unlikely, but ffprobe output (and regular ffmpeg output by extension) could change at some point years later and break existing parsing logic. If you want a good example of this, look into how much of a bitch it is to make shell scripts compatible across different systems (even just between mainstream Linux distros). This isn't much of an issue if you do a typical package/library (in Rust, they're called crates) dependency, which are usually tied to specific versions of each package that you can be sure will behave in the same way as when the dev originally wrote his program that depends on them.

I know I use it as an example a lot, but if you look at my chat client commits over time, you will see that the core project structure hasn't had to change drastically despite the major changes and improvements I added as development progressed, nor have I had to significantly rewrite large chunks of existing code. I didn't have a complete mental image of everything I wanted to eventually add or even everything I needed to do to cover basic functionality. What I did have from the start was a flexible modular project structure that allowed for easy adding/deleting/moving of modules as I developed a better sense of how I wanted to do things. I left some methods unimplemented while I worked on more important ones first, tested the important core stuff early on (it all compiled and ran because the unimplemented stuff just simply returned placeholder values), and then I implemented the rest of it later when I got around to it. I don't say all this to brag or claim some false sense of superiority, but instead to give a personally relevant example of how I have learned to do things over the years. There are plenty of times where I have written rigid stuff that I inevitably had to rewrite, and those rewrites very often required major revisions to other parts of the programs that interacted with those rewritten bits. It's best to invest the time upfront to write it well instead of effectively procrastinating and creating more work for yourself later.

Anyway, to sum up all this rambling: rigidity opposes scale, and scale requires constant on-the-fly adaptation to rapidly changing environments and circumstances. This isn't the first time I have written garrulously to disagree with the structure of one of Jersh's projects (never with the intention to insult, of course), but at the end of the day it's his project to write as he sees fit. I have written all this primarily in the hopes I can save other readers like yourself the headaches and wasted time I'm all too familiar with.

I like Jet Brains because you don't need to worry about going through the hassle of creating an environment it is just plug and play.
I had forgotten about this factor, and it's the main reason I changed my disagree rating on Slav Power's post below my previous one. It's been over a decade since I have done any serious development work on Windows, and I'm starting to get war flashbacks to all the times I had to fuck with and fix simple development environments just to make basic shit work. Having things like Android Studio with everything bundled together in a way that just works™ is practically a necessity if you're using Windows. I have 0 clue what it's like now, but I hope WSL alleviates at least some of the pain for others.
 
Last edited:
Trying to apply 'divide it into small jobs' for the design stage of a piece of software is 1:1 with asking 9 women to make a baby in 1 month, its retarded

e: i do however support opening up the repo so i can lampoon it from the sidelines
 
Last edited:
  • Thunk-Provoking
Reactions: y a t s
Right now the templater I have is Askama. I only have experience with React from SS13, because /tg/station uses that for their stuff.

That's just the templating engine though. By frontend I mean, scaffolding for the actual UI.
 
I don't know what you mean by scaffolding, I'm interpreting it to mean predefined styles and themes for components like bootstrap. essentially this is included in Dioxus by way of Tailwind CSS, which provides you with utility classes to build components instead. Additionally each utility class can be conditionally applied, I.E. hover and focus for state changes and small/medium/large for responsive designs. lots of people will say that it produces ugly ass html with tons of hard to read duplicated classes. this isn't really dealt with in Dioxus for developers at least, and if it's really so unreadable when compiled you can use the CSS apply directive. Generically, it weighs in at about 3566kb, but when compiled removes unused utility classes from the final bundle so this gets reduced dramatically. I guess if you're using USWDS then you want all the appearance aspects pre-configured, but I find it fun to make the custom classes and the fact that Dioxus handles other UI aspects like event handlers, routing, coroutines, dynamic rendering and even state hooks just adds to it. True, Dioxus is not feature complete or even stable currently, so that's a big downside but I think it has a future.
 
1714337499380.png

huge gap but that is because of a 1000 line commit to pull off a very complicated work queue system, which I have been informed by email is called a "multi-provider, multi-consumer". It works, and now the system can very painlessly receive an attachment, process it, then queue up sub-processes which handle things like thumbnailing. I've also written it so that adding re-encodings (described as "alternatives"), so if someone uploads a huge .mov I can theoretically re-encode it into a 720p webm. It's possible that I can get a 'media accelerator' card for handling very impressive media streaming with this system.

debug info.png
 
With media processing working, I went ahead and played around with using a similar worker queue idea to check the Database connection. The program now automatically reconnects to the database if it becomes unavailable, and will deliver 503 errors when the database is off.

So now I'm kind of lost at what to do. There's still a lot to be done but I want to stay mostly in Rust. Getting attachments actually attached to posts may require doing work with JavaScript, which I don't want to do right now. I have not really put much thought into how I want to do the frontend at all.

I have some choice between post attachments, post drafts, or breaking ground on the member area of the site and doing avatars or something instead.
 
With media processing working, I went ahead and played around with using a similar worker queue idea to check the Database connection. The program now automatically reconnects to the database if it becomes unavailable, and will deliver 503 errors when the database is off.

So now I'm kind of lost at what to do. There's still a lot to be done but I want to stay mostly in Rust. Getting attachments actually attached to posts may require doing work with JavaScript, which I don't want to do right now. I have not really put much thought into how I want to do the frontend at all.

I have some choice between post attachments, post drafts, or breaking ground on the member area of the site and doing avatars or something instead.
It sounds like you're almost done.
 
  • Optimistic
  • Like
Reactions: Null and Google.com
It's just a question of, where do you start breaking new ground at? what parts of the code do you want to be an active construction site?
Do you have a roadmap or plan set out for long-term development? It would be useful to have a list of things to be completed whereupon the forum could be considered "production ready".
I like to have at least a vague graph of tasks that converge on milestones within the project and eventually on some goal, that way I have have a "frontline" that can be pushed forward within the project by completing tasks, and if one front is too hard or boring I can just work on something else until I find the motivation to break through.
 
Back