Programming thread

I mean, the answer to any question of the form "Are there any good <basic computer stuff> libraries for C" should always be "yes."
That's why I posted the first vaguely-related to graphics thing that came to my mind when answering the question :story:

And really not trying to be a dick, it's just that the question is not well stated.
 
And really not trying to be a dick, it's just that the question is not well stated.
Oh, I was totally being a dick. But yeah, the better question is "what's the best/your-favourite 2d graphics library for C."

SDL is my go to, but I'd be interested if there are cooler alternatives these days.
 
I'm competent with system administration and shell scripting, I also host a shitty website. I've done beginner exercises in a multitude of languages, if only a company would be willing to pay me to write fizzbuzz over and over again. My biggest problem is actually getting started; I feel like I'm not ready to take on a project and just keep repeating the same exercises over and over again. I bought a C++ textbook recently, halfway through that but I still haven't learned anything (again, these are newbie exercises that I've done in other languages). I'm a poorfag and there is no way I can afford to go to real college, I'm doing an IT "bachelors" at a community college and at the end of it I will be competing with pajeet for helpdesk-tier job or if I'm lucky junior sysadmin.
Not asking for advice, just putting myself out there for ridicule as I'm a retarded linux ricer with no skillz.
t. never going to make it
 
Last edited:
SDL is my go to, but I'd be interested if there are cooler alternatives these days.

What about Cairo?

The only time I heard about Cairo is when it was brought up for standardization and everyone collective went "w-what?" People usually talk about SDL and SFML but I don't really see anything else in general discussion. You can try to be a man and do raw Vulkan but i wanted to hang myself after a month.
 
My biggest problem is actually getting started; I feel like I'm not ready to take on a project and just keep repeating the same exercises over and over again. I bought a C++ textbook recently, halfway through that but I still haven't learned anything (again, these are newbie exercises that I've done in other languages).
Two suggestions: decide on a project to accomplish something, anything, it could be entirely trivial and ultimately pointless, and then use what you've learned to get it done. If you're fairly good at math, try Structure and Interpretation of Computer Programs, the content and exercises won't be like anything you've seen before, and like Python for example but not C++ you do them in an interpreter. The contents of the book and the language implementations to run the exercises are all free.
 
Last edited:
decide on a project to accomplish something, anything, it could be entirely trivial and ultimately pointless
I've done this, but they have all been what I'd consider to be beginner exercises. For example I made a snake game using ncurses, I've made a gui calculator with qt, etc. I've also played the overthewire.org wargames up to Utumno and have write ups on the solutions (I know this isn't an accomplishment lol). The issue with being self taught is that I don't know where I stand, it's entirely possible that I already am employable but don't know it yet. I've also been out of high school for a considerable amount of time. Do I revise calculus and start practicing mathematics regularly, do I pick up a book on common algorithms and learn how to implement them? Coming up with a study regime is very hard for me.
read SICP
I thought recommending the Wizard Book was a joke, but I might work through it if you're being sincere. Funnily enough I already have the pdf.
 
Last edited:
I've done this, but they have all been what I'd consider to be beginner exercises. For example I made a snake game using ncurses, I've made a gui calculator with qt, etc. I've also played the overthewire.org wargames up to Utumno and have write ups on the solutions (I know this isn't an accomplishment lol). The issue with being self taught is that I don't know where I stand, it's entirely possible that I already am employable but don't know it yet.

I can say it right now in terms of basic skills you are employable! Compare yourself to a typical web front end boot camp graduate, you're doing things that are different and probably harder in their own ways. Although getting employed right this very moment is of course a hard thing with so many out of work due to COVID-19, and you don't have any experience on your resume.

One way to address that is to volunteer, to a genuine non-profit, or an open source project. With the latter you can get some work on GitHub that can act as a portfolio. Either should help your self-confidence, since you'll be doing real things that people need instead of exercises.
I've also been out of high school for a considerable amount of time. Do I revise calculus and start practicing mathematics regularly, do I pick up a book on common algorithms and learn how to implement them? Coming up with a study regime is very hard for me.

Except for the Wizard book suggestion below, which is not required by any means, at this point you don't need more self-study, you need experience in the real world (as I got before I tackled the Wizard book), and that will naturally have you learning new stuff. You should never stop independent learning, but right now in addition to real world experience I'd suggest software engineering books like The Pragmatic Programmer (a cheaper used first edition should be quite sufficient), and the Antipatterns book (again, cheap used (in the US), and I have no idea what that claimed 2nd edition is). If you find algorithms intrinsically interesting, by all means get one of the standard books and study it, but today's ecosystems with plenty of libraries means it's very unlikely you'll need the skilled you might pick up any time soon. Instead you need basics like big O notation to help you pick which algorithm should be used for a task in front of you, and if you don't know it, the Wizard book will teach you it.

You can absolutely get real world experience in one or more open source projects; if that interests you, ask for more details. PM me if you want some specific ones that could use some love, and in any case if we can get along, I can help in mentoring, I have a fair amount of experience in that from a decades long systems and software career.
I thought recommending the Wizard Book was a joke, but I might work through it if you're being sincere. Funnily enough I already have the pdf.

Never! Well, as long as you have enough mathematical maturity. It was written for MIT students who at minimum were ready to start learning the calculus, so examples and exercises frequently use non-trivial although not very difficult math. If by revise calculus you mean review what you've already learned of it, you should already be there. And you can still learn a lot if you've somewhat forgotten your pre-calculus math (against speaking from experience).

But even if you were to choose to volunteer to a LISP or Scheme open source project (Clojure is not something you should tackle without more experience), you don't need the knowledge in the Wizard book (it uses Scheme in part because it takes "15 minutes" to learn enough to do useful things, instead of a whole semester of just learning weird syntax and idoms). Rather, the Wizard book will teach you a lot about programming and some software engineering, from a viewpoint, well, it's probably a lot more common now, but the book was revolutionary in the early 1980s when it was first published in MIT AI Lab Technical Report form, then in two formal book editions.

There's two hard concepts you really want to learn, pointers, which you might have gotten from your C/C++ work, and recursion, which the Wizard book can do a great job of getting you really familiar with. Do/for/whatever loops are for wimps, it'll teach you looping using recursion in constant space (no exhausting the stack).
 
Last edited:
I've done this, but they have all been what I'd consider to be beginner exercises. For example I made a snake game using ncurses, I've made a gui calculator with qt, etc.
I agree with @Besachf Jhakut that you're probably employable right now.

But you can easily expand the scope of that snake game by writing it in javascript and hosting it on your website. Then implement a public high-score table that you persist. And then write a level editor where users can sign up for an account, design a snake level, save it to your server, and have it automatically playable by others. Then make it multiplayer either over your host or peer-to-peer.

That's covering a decent amount of web-tech and a non-trivial web app to show off to employers.
 
Last edited:
I have been doing some work with the Java Spring Framework and am loving it. I've just wrapped up another project where I used TypeScript and Express as my backend, and by comparison Spring is looking easier. I have found so far that the freedom of the TypeScript/JavaScript world is mostly just freedom to hang yourself in an interesting way. Spring, by comparison seems much more mature and designed for 'real world' apps.

I am missing the whole Express 'Middleware' approach though, where you can just load your own code into the path the request follows (I used it for some weird authentication stuff). Doesn't seem to be as necessary with Spring though.
 
So i have had to start learning a bit of Python for a project. Mostly so i can read others code.

I mostly work on PLC programming with structured texts in as my base and then some C++ follow op for things that needs doing. I can also do stuff in Java, but that was a long time ago. So trying to learn Python is not hard in any way, but it kind of scares me.

It is way to free form and honestly it feels like i am making up sudo-code. I get why people like it, it is fast to write in. How ever as i am to used to the limitations of a PLC and C++ this new free form do what ever you want scares me and i fear my code will be a lot more "spaghetti" then normal if i where to use python.
I cannot stand the fact it doesn't use curly braces.

How can I know if I'm a good programmer at a professional level (or in other others: hirable)?
If you're good you will always feel like a retard.
If you're industry standard you hide behind your degree.

Good developers never stop learning.
 
Wow, I didn't expect those responses at all, thanks.

I can say it right now in terms of basic skills you are employable! Compare yourself to a typical web front end boot camp graduate, you're doing things that are different and probably harder in their own ways. Although getting employed right this very moment is of course a hard thing with so many out of work due to COVID-19, and you don't have any experience on your resume.
I never thought of it that way, I guess I overestimated just how 1337 your typical code monkey is. I obviously have an inferiority complex because I couldn't afford to go to real university, so maybe I actually am at a point where I should be trying to get work. If that's the case then I'm probably wasting my time with the study I am doing at the moment, I've done one and a half years coasting through this networking/hardware/sysadmin 'bachelors', just to get a piece of paper.
Also yeah, I did do Calculus in highschool, and was always in the extension mathematics classes. In my country I feel like highschool is very dumbed down for political reasons (school system was revised to boost the grades of indigenous people) and that the "extension" classes I were in should have been regular classes.
Just one more quick question for you; why do you consider the two project examples I gave to be of an employable standard? I see those meme kids like that one little shit who "dreams in code", and that Indian kid who learned how to use metasploit and gives talks about security now and it just makes me feel inadequate. If there are kids who are better than me then why should feel like I'm good enough to go write software in the real world, y'know? I took note of all your recommended reading by the way, thanks for the advice.

But you can easily expand the scope of that snake game by writing it in javascript and hosting it on your website. Then implement a public high-score table that you persist. And then write a level editor where users can sign up for an account, design a snake level, save it to your server, and have it automatically playable by others. Then make it multiplayer either over your host or peer-to-peer.

That's covering a decent amount of web-tech and a non-trivial web app to show off to employers.
At first I thought you missed that this was an ncurses game, but then I looked on github and someone has actually ported the ncurses library to js for use on the web! LMFAO! I'll definitely have a crack at this, as it's an excuse to learn some javascript. My site used to be a static blog duct-taped together with c++ and shell scripts for generating pages... I finally saw the irony of the /g/ memes I had fallen for and did a php rewrite and started using Postgres like a sane person would have done in the first place :L

(I apologize if I'm derailing the thread with blogposting, someone tell me to shut up if that's the case.)
 
Why don't you guys who aren't sure if you're good just apply to jobs anyway?
If you're not good they won't hire you, if they do hire you anyway and you suck you can get that sweet programmer paycheck until they figure it out, which might take awhile. Then you have "experience"
 
I never thought of it that way, I guess I overestimated just how 1337 your typical code monkey is. I obviously have an inferiority complex because I couldn't afford to go to real university, so maybe I actually am at a point where I should be trying to get work. If that's the case then I'm probably wasting my time with the study I am doing at the moment, I've done one and a half years coasting through this networking/hardware/sysadmin 'bachelors', just to get a piece of paper.
Maybe it's changed since I was in hiring roles in the 1990s, but most people who claim they're programmers can't actually program. You can, and you're pretty new in the game, probably not a journeyman yet, so you shouldn't worry about your level quite yet.

Having a degree, I don't know. I got into one of the very best universities for this (although wasn't going to major in it), was forced to drop out due to finances, and in one US area where I lived for a decade just that was good, in another, not having the degree closed a lot of doors, and not having one will almost certainly eliminate the possibility of emigrating if that makes sense, or a company you work for would like you to move. Your local job markets may not care so much (in the US a college degree is about the only credential with signaling power), although that may change, and of course a non-programming degree might not be worth so much, or maybe it'll check off a necessary box for some companies or industries. If you go for remote work you'll be competing with a lot of people who'll lie about their degrees, and of course their ability to program.

One thing to consider is opportunity cost, if you can get a job right now, or perhaps after COVID-19 gets a lot more controlled, and maybe the economy picks up, it might make more sense to start working now. Find out how bad ageism is in your area, in the US, it starts to get hard to get new jobs when you turn 30, much harder at 35, and 40 is all but a brick wall, you'd better either be able to pass yourself off as being much younger, change careers including going into management, be in the embedded market, or have a serious security clearance. So getting in a few more years in the beginning of your programming career can have a big payoff.

On the other hand, right now could well be one of the worst time in this decade to find a job, so finishing your degree and learning more programming, doing some real open source projects you can show on GitHub, could be the very best thing you can do to build a good looking resume, no shame in not finding a job when you're not actually officially trying to find one because you're in college. But the downturn could go on for a very long time, the economic damage wrought by COVID-19, and the sometimes insane responses to it, will almost certainly last a lot longer than the threat from the disease once we have safe and effective vaccines Real Soon Now.
[You can do math.] Just one more quick question for you; why do you consider the two project examples I gave to be of an employable standard?
The ncurses snake game, and the QT GUI calculator? Yes, as long as you put plenty of your own work into them, and understand enough of the snippets etc. that you no doubt copied off the web (don't worry, everyone does that nowadays).
I see those meme kids like that one little shit who "dreams in code", and that Indian kid who learned how to use metasploit and gives talks about security now and it just makes me feel inadequate. If there are kids who are better than me then why should feel like I'm good enough to go write software in the real world, y'know? I took note of all your recommended reading by the way, thanks for the advice.
You're welcome.

Those memes sound like garbage, certainly not intended to encourage others, and "Indian kid" should instantly be suspicious. And what he did isn't programming, it is? Security is also a awful field, most of it is to look good, and have someone to blame if the company suffers and attack. You're already at a pretty good level of system administration, and that's good (unless you go to work for a company that locks down their developer's machines and you get frustrated, especially if they prevent you from actually doing your job), ... well, here's the best advice you're likely to find:

Check out the Ask the Headhunter site; there's a good chance his strategy is the only thing beside human-human networking that's clearly not available to you, UPDATE although you could get that from open source work, that would find you a job in this economic downturn. Rather than resume blasting with hundreds of others to a job, perhaps including many pajeets who can't program, find hiring managers, and convince them you can add value to what they're doing. Never forget HR is never your friend.

One job to avoid at all costs: testing. No respect, and could get you pigeonholed, or at least require you to leave it off your resume, and explain the gap. Help desk, I don't know, but it also sounds difficult to get out of.
 
Last edited:
Back