Starting a Community For Code Help!
I'm going to try something new. Just for fun and to see if I can make something nice and perhaps help some folk out. I've started a Discord server with the intent to create a small community around programmers, beginners as well as verterans. The main aim will be to help each other out, perhaps primarily focusing on helping new folks get started,
but also with plenty of opportunity for more experienced programmers to guide each other along. I imagine the server will initially mostly be me helping out but I hope that as the people there become more trained or we attract other more experienced programmers that there'll be a lot of interest in assisting everyone who may have inquiries.
I imagine it to be a chill and respectful place, and probably with a small enough group of active users that folk will get to know each other a little and I would encourage chatting about hobby topics outside of code too in appropriate channels. - I will be promoting this on my coming YouTube videos as well, when I continue the Learn Programming series,
or start up the long-planned algorithm-analysis series where I will go through LeetCode questions and demonstrate solutions and algorithmic thinking in various languages from C to Swift and Java, in the process also demonstrating that the mindset matters more than the language.
And on that point, for the Discord server, you're welcome regardless of what language you prefer/want to learn or what platforms you develop for or whatever. There may not be someone who's an expert in that particular language on there yet. You could be the first, or if you have questions, try asking anyway
hile there may not already be someone who knows, there may very well be people who can use their experience to find out or make heads and tails of documentation that confuses you.
So come join, it'll be a blast.
The CodeHelp() Discord Server
The Full Stack Developer
This post, more than anything, is merely an expression of pride and joy in what I consider a pretty neat accomplishment for me. As I write this, I recently finished my bachelor degree, and for my bachelor project, my project partner and I implemented an operating system. The project was based on the JOS design originating at MIT, but while we thus cannot claim ownership of the OS design principles, we did make design choices along the way, about our specific implementation. There is something tremendously satisfying about running a system where every instruction the machine executes, is one you've made happen. From the assembly code in there to the C code that made up the majority of the code base, everything that ran from the BIOS handed control to the bootloader and to programs executing in userspace atop a bash-like shell; It was our code the whole way. No mystical libraries doing black magic or opaque frameworks operating as black boxes. No, every library function and the system calls that made it work, we had written and knew how worked. The term "Full Stack Developer" is used a lot in this industry, but I would argue that having written code for an operating system, macOS and iOS apps with GUIs and a tad of server code, I'm at least close to feeling I can justifiably claim that title. In any case, while in my last post I recommended everyone make their own tools they can use regularly as an empowering and fun thing to do, I'm not going to recommend everyone write an operating system. While it is fun, and can be recommended if you feel you have the time and lack enough gray hairs (debugging and dealing with legacy hardware decisions can really make you go crazy sometimes), it is also a big endevour and I would say to have fun with it you need to very specifically like talking to hardware through code. It can be very different to higher level programming at times. If you write a GUI program you work on an abstract plane where you need to consider your problems at hand, and the design of your own code and app, but when you delve into writing a kernel your code must adhere to the hardware's expectations as well. The meanings of registers you couldn't even touch in userspace become important. It is not to say that kernel development is too difficult to attempt; I do not believe you should avoid it out of fear you can't figure it out. At the end of the day, it's code like any other, you just need to be mindful of hardware specifications and expectations and keep chip manuals handy. But it is an experience that requires long time dedication, and is probably best done collaboratively rather than a small hobby project like what HexHelper was. If you want a bit of insight into OS development however, regardless of whether you want to try your hand at it yourself or just desire knowing a bit more, I recommend checking out Andreas Kling, aka awesomekling, and the SerenityOS project. His YouTube videos are excellent and the project is still small enough in comparison to something like Linux, that you can more easily make heads and tails of it and perhaps eventually submit a PR if you feel so inclined.
On Making Your Own Tools
I've written a lot of code at this point. I've done projects both for university and for myself, and have learned a lot from all of them. Something I appreciate more than most of what I have done however, is a little tool I've made called HexHelper. Not because it's particularly well written, or because it is very complex, because it really is not, but because it's something I've made that I actually use myself regularly. It's all in all a simple little tool that just translates between different number systems like hex, octal, decimal and binary, but it is significant because every single time I go to the menu bar and pull down my little program, it's a satisfying feeling to know that I have written the tool I rely on. So I encourage you all, if there's something you find yourself often looking up online or using another tool for that you can potentially program yourself and perhaps get a little more efficient in your workflow by doing so, even if the time to make it really doesn't overall win you efficiency; Go for it. It's a fun way of picking your next project to be something useful, maybe just to yourself but perhaps to others as well. But it's also a way of keeping yourself motivated going forward in your programming adventures. Every time you consult your tool, you will know that you made it, you are capable of creating something useful, and maybe it will put a smile on your lips too. And if you're interested in HexHelper, a macOS menu bar utility, you can read its terrible source code on GitHub and compile it with Xcode to create your own executable.
If you need to contact me, you can email me! Send Email! Or text my Discord! Casper#3603
Thank you for visiting.