[a / b / c / d / e / f / g / gif / h / hr / k / m / o / p / s / t / u / v / vg / vm / vmg / vr / vrpg / vst / w / wg] [i / ic] [r9k / s4s / vip] [cm / hm / lgbt / y] [3 / aco / adv / an / bant / biz / cgl / ck / co / diy / fa / fit / gd / hc / his / int / jp / lit / mlp / mu / n / news / out / po / pol / pw / qst / sci / soc / sp / tg / toy / trv / tv / vp / vt / wsg / wsr / x / xs] [Settings] [Search] [Mobile] [Home]
Board
Settings Mobile Home
/g/ - Technology


Thread archived.
You cannot reply anymore.


[Advertise on 4chan]


File: miku.jpg (176 KB, 1607x1297)
176 KB JPG
I know the basics of programming and making games using OpenGL, but I still don't know how you go about making “real” software. Drivers and compositors are a mystery to me, heck, I don't even know how I would go about making a text editor.

I'm also very curious about how to get started contributing to open source. The codebases are massive and honestly quite confusing.
>>
>>108868685
Cute Miku!
>>
Learn the rope structure. There. Now you know how to make a text editor.
>>
>>108870316
only someone who never made one would think that
>>
>>108871140
LOL, text editors are simple to make. Unless your definition of one is neovim competitor.
>>
File: fligu-migu.png (85 KB, 296x256)
85 KB PNG
>>108868685
read sources for software you're interested in.
I was interested in filesystems and power IC drivers so I just started reading Linux sources for that. Found out some cool macros and programming techniques in there as well that i now adapted to my own programs.
For text editor, you can look up FLTK, it's an old school GUI toolkit, not as bloated as GTK or Qt, but more capable than Tk, the documentation literally contains a tutorial on how to design and write a text editor with it: https://www.fltk.org/doc-1.4/editor.html
>>
>>108868685
>"to make an apple pie truly from scratch, you must first invent the universe" ~Science guy
>>
>>108868685
Drivers and compositors are pretty low level.
If you know how to make games, you can easily make a basic text editor. Use a bitmap font and a grid.
Unfortunately, a lot of people are under the false impression that this sort of learning by doing is effective. You'll reach a point where you realize that the way you've written and designed your software isn't good and you'll be stuck. Since you don't know the "right" way to do this, refactoring/starting from scratch are pointless. The hard part is knowing how to do it correctly.
Some naysayers might argue that there is no such thing as "the right way", but I say that they are coping because of their own lack of knowledge. There's an objectively good way to write text editors, and the secret lies in the vim/vs code/etc. source code.
Reading large code bases is really hard
>>
>>108868685
>Drivers and compositors are a mystery to me, heck
https://tldp.org/LDP/lkmpg/2.6/html/lkmpg.html
https://github.com/obiwac/x-compositing-wm

>I'm also very curious about how to get started contributing to open source
Most bigger projects will have some guide on how to contribute and maybe labels for good first issues to look into.
>>
>>108868685
read Petzold's book on Windows programming
>>
>>108868685
making software is about documenting what the fuck you actually want it to accomplish.

and it's not even hard. write down the information which will come in and the information you need the program to output. then write down flowcharts of states the software will be in. then write functions which implement data transformations and state transitions.

that's it, you have "professional" software.
>>
Why not use AI (like codex) to plan and implement a project in small steps and learn that way?
>>
File: 1779232030007058.jpg (66 KB, 640x785)
66 KB JPG
>>108873606
>use AI
Not OP but
>picrel

Using AI is detrimental to your skills no matter how you use it.
>>
>>108873606
AI often does fundamental bad decisions and if you don't correct it, you will end up with retarded, broken architecture.
Use AI only for things you've already done 100 times and know all ins and outs of the problem.
>>
>>108873781
>AI often does fundamental bad decisions and if you don't correct it
They do need babysitting but that is another topic. They are great for learning. A problem like "text editor" is absolutely heavily included in the model training. If I would like to learn to how to make one, I would use codex for it.
>>
>>108874032
>They are great for learning.
If you just use them as a search engine with extra steps, not as in "hey Claude, I want to write a X11 compositor using JavaScript, prepare project structure"
>>
>>108871704
even sqlite amalgamation file is completely manageable with simple std::string/std::vector like growing buffer and you won't even notice the O(n) in-middle insertion. so yes, they are simple, and rope/gap-buffer/b-tree anything more advance won't really help you, so it's bullshit to claim that learning one automatically makes an editor

you need three core things: screen coord to text position mapping function, text position to screen coord mapping function, and word boundry detection. and that's literally 90% of simple editor
>>
>>108868685
>>108868685
>I still don't know how you go about making “real” software
Read SICP or watch the lessons on YouTube if you want to "get it".
https://web.mit.edu/6.001/6.037/sicp.pdf
https://www.youtube.com/playlist?list=PLE18841CABEA24090
>I don't even know how I would go about making a text editor
That should be really simple personal project though, particularly if you already know some graphics (assuming you want to make it graphical-first in the first place), what do you think you don't know?
>how to get started contributing to open source
Don't bother it's a waste of your time, focus on your own projects.
>>108873606
>Why not use AI
Because it's not fun and you won't learn anything from it?
You are allowed to use some use AI (in a smart way without losing understanding of your own code) only when you already know what you're doing.
>>
>>108874089
Yes I originally suggested planning with the agent and step by step implementation. The models are surprisingly good now. Much more reliable than they were not too long ago. Imo it is really bad advice at this point to say OP should avoid AI.
>>
>>108868685
Whatever you do ignore the vibesloppers.
>>
>>108874649
I don't know anything about making a text editor. How do i even capture key inputs, saving to file, selecting, making the cursor change when hovering over text... All things I have no idea on how to make without using a premade library.
>>
>>108868685
>I'm also very curious about how to get started contributing to open source.
You want to provide your labor to corpos for free?
>>
>>108876673
> without using a premade library
Then your objective is your own Qt/GTK/WinForms shit.
>>
>>108868685
there's no magic behind software
to accoomplish something 99.9% of the time you just have to do what needs to be done
it's as simple as that
>>
>>108876673
For making an application I find it useful to not even think about the UI at first, try to think about the essence of what you're making, a text editor is a tool to modify text, you can reduce the whole thing to a buffer where you keep text in memory and a bunch of commands that do operations on that buffer (this what vim does), these commands may or may not be something users actually use it can also just be a internal API, but since any UI can be reduced to a series of commands once you have that you can build any frontend on top of that.
You can load and save files using the operating systems API, or more likely whatever your language gives you in your standard library.
Your cursor is just a position offset in the buffer, selecting text is just keeping a range from position A to position B (moving cursor and starting and ending a range selection should be commands in your API).
If you're in terminal it's pretty straightforward you get keyboard input from standard input stream.
If your're in a graphical window you should honestly use some library, like raylib or SDL, you use the library API.
My advice is don't get lost in the useless details, focus on the essence of what you want to build.
>>
>>108874649
miku legs
>>
File: htbi.jpg (30 KB, 397x441)
30 KB JPG
>>108868685
> how to get started contributing to open source
do you use free and open source software often? have you ever found any bugs or inconveniences in it? maybe just things you know you could improve? if the answer is "yes" to at least one of these questions, check out the bug tracker of this project. if there are no issues for your problem, just open one. write a detailed bug report if you can, because even if you can't really contribute with code, a good detailed bug report is a contribution too. then, if you actually know how to fix the issue, submit the patch, too
at least that's how i did it.
>>
>>108877240
What's the point when the project it's either full of power trippers that will never let you contribute or by insane trannies obsessed with politics which will ban you with CoC when you disagree with them or by aislop spam?
Open source is dead.
>>
>>108877803
NTA.
I contributed to bunch of projects so far and never had any problems like you are describing.
>>
File: F1EY0jcaEAAZ9hE.jpg (974 KB, 1464x2048)
974 KB JPG
>>108877803
> incomprehensible babble
anon i don't care, i've literally contributed to free software, and i will continue doing so for as long as i have something to contribute. i'm speaking from experience here
>>
>>108872669
>and you'll be stuck
ive never gotten stuck with improving on things. maybe youre just shit?
>>
File: judgementalcat.jpg (109 KB, 730x800)
109 KB JPG
>>108877240
>>108878189
why even contribute to opensource? i just fork shit with the patches i write for the stuff i want. by having a fork i'm padding out my resume.
>b-but the other users won't get your patches!
ok, fuck them. why would i just give you my work? backport my work if you want to benefit from it, and credit me in your repo. if i didn't need shit on github for brownie points i wouldn't post my patches anywhere at all.

contributing to someone else's repo is no different from being a paycuck.



[Advertise on 4chan]

Delete Post: [File Only] Style:
[Disable Mobile View / Use Desktop Site]

[Enable Mobile View / Use Mobile Site]

All trademarks and copyrights on this page are owned by their respective parties. Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.