Looking for advice on portfolios/are my projects actually worth it
Posted by Competitive_Field828@reddit | learnprogramming | View on Reddit | 10 comments
So I've been programming my own stuff off and on for ten years, but also went through and had to withdraw from a phd plus had a lot of life stuff knock my confidence while still unemployed. I'm currently still brushing up on my maths and a bunch of other stuff since I would like to get into academia but that's besides the point.
Basically, I don't care about webdev enough to do anything much, and things like network programming and more data science type stuff like sql while they seem very useful for getting a job also don't have any of the immediate use as someone who's unemployed and gets limited social contact, so I've had no motivation for that either.
I'm just very focused on what I can do well, so did a tonne of C/C++ programming, studied from the audio programming book to do C audio projects and a website/book for learning opengl graphics in C++. But I never got motivation to make it fit for a portfolio to put online somewhere.
Things I've made:
-The first project I ever did that was particularly useful was optional programming coursework which contributed to my error-correcting codes module during a cryptography masters, although I stupidly lost the code - I think it was supposed to apply Huffman encoding with a binary message we got on turnitin and got 100% marks so that was nice.
-For audio I've made stuff based on following the book for 500 pages so reading/writing audio using portsf and portaudio in C, for specific frequencies, attack and decay shapes for the envelope, converting between sample types and sometimes accounting for stuff like endianness, and in the end because I wanted to make something bigger I combined a lot of the examples it gave into a library which takes a breakpoint file with MIDI/frequencies in Hz, choosing between sawtooth, square and sine waves etc with amplitudes in decibels or 0-1 range, you get the idea, and writes an audio file from it.
-For graphics with opengl I followed the website and made lots of containers, different texture stuff, the shaders for it, got through the detailed chapters on lighting and used diffuse/specular/ambient lighting with more examples, and for my own messing around purposes I wrote a program which randomly generates a surface in 3D space from randomly chosen partial derivatives which it renders a triangulated version of with lighting and moves around with camera controls(WASD keys plus rotating with the cursor like the other examples). Needs a lot of fine tuning though since the camera movement which looks fine for the website tutorial examples isn't adapted to move around the surface and might have other bugs. I also made a scrabble board in 2D for fun, it plays a full game with another player and doesn't have any of the single player ideas I had implemented.
-For the PhD I was supposed to finish a tuning system which I was working on with a MIDI keyboard, I'm thinking of buying one now and getting back into doing some audio stuff using that.
-I also just started applying some of the audio analysis stuff I've been studying for a research MSc which fell through, got it to print out lines of the different frequencies it picks up as minima for the autocorrelation function for an input audio file while playing through the default output device, using portaudio and portsf to read wav files. Am thinking of combining this with the graphics to try and play a wav file while having some colour changing lamp graphics to show the frequencies of ranked minima from the ACF while it plays, but I've been procrastinating because I'm new to a lot of issues with mutithreading and really need to study so it'll do the job despite opengl requiring a lot more of the processing time.
Since job applications give you so little information on whether you're failing to make anything you've done interesting or relevant to them, and obviously there aren't many jobs where I'd even talk about this, I just want to know if it's interesting at all to other programmers...? Like what SHOULD I be making, without just giving up on my interests being relevant to anyone in any profession I'd actually like? To be fair I have a friend who's really insistent he will be able to pay me to work on some robotics stuff he does and write some code for things like displaying and playing messages based on sensor input, but I'm kind of low in confidence that I'm what he's looking for(until he gives details I feel there's no point in worrying since I don't know what sorts of libraries the components use or basically anything, I was just more confident originally because I've messed around with some electronics code but it was tutorial stuff).
I'm also just curious if anyone else is in a sort of inbetween stage where they feel like they should be able to make something professional but get too overwhelmed to actually do it. As far as shipping code goes I can write makefiles and stuff but I haven't really done any of the other steps to make it look like a non beginner project. And finding where to learn this stuff gets overwhelming too.
pastpresentproject@reddit
After reading through your project list, I'm truly impressed. It's all C/C++, OpenGL, and audio – all top-notch stuff, no joke! Why are you so lacking in confidence?
Your projects, from Huffman algorithms and Endianness processing to 3D graphics rendering using partial derivatives and ACF audio signal processing, are incredibly valuable. Even outsiders would be confused looking at them.
If you don't like web development, don't force yourself. There are plenty of places in need of skilled C/C++ engineers, especially in Embedded Systems, Automotive, Game Engines, Signal Processing, or Robotics – the field your friend is trying to get you into.
Minimal_Sun@reddit
“Like what SHOULD I be making, without just giving up on my interests being relevant to anyone in any profession I'd actually like?”
If I were you I would open up OS three easy pieces and study it end to end. You have familiarity with C and self studying, and that book covers three undying concepts across all of computing. Specifically for jobs, network programming is never out of style and that books a good start.
I’d try to find or remake your project that practically applied huffman encoding, put it on your github, dont talk about coursework in a portfolio (unless its phd coursework). OpenGL also showcases chops so use the projects you have in your portfolio, but try to only showcase end to end solutions or programs.
I think the last paragraph actually resonates with most CS students these days. I know it does with me when it comes to game dev. I never studied it, get into a loop of using AI or building something out for awhile that doesnt come to fruition, then start the loop again when i see something shiny or get a new idea.
I think the correct approach is incredibly tight scope with whatever it is you want to make. If it’s new to you, you will implement it naively in one way or another, it will be suboptimal, there will be areas that practically beg you for scope creep. Don’t give in, just do what you know within your scope, and when you dont know how to do the next step or have a bug you cant fix, freeCodeCamp, stackoverflow, ai.
Competitive_Field828@reddit (OP)
Thanks for the advice. I remember bringing up adding network programming to things to learn with a friend where I said I could make the scrabble board multiplayer, and she thought I was insane. I think that falls into scope creep, am probably chucking in too many things I'm not familiar with into things I can also turn into a massive project! But there's honestly just too much to learn. I'm kind of surprised to have encoding stuff mentioned here, maybe I can make some other cryptography related projects based on my masters. (Mostly the older versions of public key, could do some of the modern lattice ones I studied for the dissertation. Although I would need to revise lots(I still remember how it works, shortest vector/basis problem and using some properties of the distribution together with the public key I think, although my project was looking at IBEs with a master key pair which is used to produce individual keys.))
...Actually I get why you brought it up, because it's such an obvious combination with network programming. Fucking hell, guess if I get into that I'll try and use more maths there too. I kind of feel like an idiot for thinking I wouldn't have any useful applications to make.
I kind of feel like the graphics with audio project I wanted to start on is getting into scope creep, but it also got me learning far more about multithreading than I would otherwise and I still need to read more of the beej's guide to c programming chapter. Since it's something I previously gave up on, maybe I just find it easier now because I've been writing callback functions and shaders where I'm debugging things which aren't easily understood procedural code anymore. But yeah, the advice on here has been pretty validating.
Worldly_Analysis_664@reddit
Firstly, learning is easy just use AI (NOT FOR YOUR CODE).
Everything should be uploaded on GitHub, every line of code etc. if you didn’t use git to begin with kinda shot yourself in the foot but not a biggy.
What you’re saying doesn’t really make any sense to me.
Just put all this stuff on your cv it seems fairly impressive. Again GitHub, link it everywhere.
I’m guessing you’re asking if you have enough to apply for developer roles?
If so just apply and tailor cv and projects towards them.
In terms of professional software.
Open source contributions. Really nice and shows you can contribute to professional code. Quite overwhelming tho.
Build stuff that you wanna build that you think would help you get a job in X.
Ie: I want to get a job as a games developer. Build a game engine or a game.
I understand what you mean tho. You can write code and program small things but no idea what to build and you lack confidence to take on a bigger project. Unfortunately only way to get past that is to dive deep into something big. When you do it’s pretty amazing tho. Just think of something and build it.
Idk if this helps but what I thought of when reading this.
33RhyvehR@reddit
Why would you not use AI for code and instead focus on understanding the architecture?
Worldly_Analysis_664@reddit
Because u need to understand the code to know the architecture
Competitive_Field828@reddit (OP)
Really grateful for the advice here, although I'm a bit overwhelmed lol.
Accomplished_Key5104@reddit
The audio stuff sounds interesting to me, mostly because that's an area I have no experience in.
If you're trying to get a job, and you don't have a degree related to CS, then you either need friends that can recommend you for positions at their company or you need bigger projects. The projects ideally showcase your ability to solve hard problems across a range of skills relevant to the job. I think the audio stuff is cool, but if I were interviewing you I'd be grilling you on the actual coding aspects, what system infrastructure you incorporated, version control, etc... I usually don't care for certificates, but having a few of those on your resume might help in your case as well.
It sounds like your work so far has been single execution programs running on your computer. I would dig into one of the major cloud providers (AWS, Google, Azure) and try to make a larger project leveraging multiple services. As an example, I would be impressed if I interviewed someone who had made a full website on AWS, with Cloudfront, Lambda or ECS backend, DynamoDB database, Cloudformation, and a full integration test suite.
grantrules@reddit
What kind of job DO you want?
It sounds like most of your projects are half-finished, so work on polishing up one or two.. it doesn't really matter what they do.
Competitive_Field828@reddit (OP)
OH! Context sorry, I'm a maths graduate and had basically zero computer science in either degree or A levels, I've just read a shit tonne from tutorials, I read references for libraries I use, did some sysadmin study stuff, did minor amounts of python, java, html css, latex for writing dissertations at uni etc. That's why my skills are so unbalanced, it's just a very isolated experience where the few times I might have participated in clubs or group stuff I end up accidentally as a teacher with specialisms and none of the collaborative work or broader knowledge of a comp sci graduate. And the PhD work in electronic engineering, which was also constant work/studying alone.