Jump to content

DevBlox

Member
  • Posts

    251
  • Joined

  • Last visited

Everything posted by DevBlox

  1. From my experience, it's in some ways similar and different in others: Exercise is extremely important. Gym and jogging alternating days every morning. Getting it done in the morning leaves the entire evening free to do anything I want. Plus is doesn't wear me out, it actually helps with alertness. One cup of coffee in the morning, maybe one immediately after work if I feel like having one, but no later (minimize impact on sleep). I'm thinking of completely ditching coffee, for one, I had complete caffeine addiction beforehand, withdrawals sucked. The problem is that I love coffee... But because of coffee, energy roller coasters happen, much like with sugar. On that point... Diet. Low carbs, minimal sugar. Not only that keeps body weight in check, no sugar rushes mean no energy crashes during the day. I get a protein shake after working out in the morning, pretty low carb lunch (mostly salads, some meat in there at times). Evening I keep a bit more lenient, let myself enjoy some good food from time to time. Commute. It's a weird one, but I've found that a commute helps me to get in the zone. I've discovered this when all of this WFH thing started happening... A short (up to 30min) commute is great. Going via bicycle is great. Workspace. Good headphones (not necessarily noise cancelling), an ergonomic keyboard-mouse set (not waiting for repetitive strain damage to occur), comfy office chair, ultra-wide monitor ideally, but 2 regular ones are fine, two notepads (one is daily stand-up notes, other is where I unload my ideas into, flow charts etc). Tools. Due to the nature of my work (and because I like it, of course), I use Linux. Due to the languages I work with, I can drop the IDE game completely and work with tmux+kakoune+language server combo. I plan on staying with it indefinitely at this point, it's great. I can use it for all languages I work with, I don't need an IDE for each. That means all the motor skills 100% transfer from one language to the next. And did I mention that this compo is superbly fast? On another note, tiling window managers are great, but I'd hate to have something different at work and at home, so I'm sticking to Pop!_OS for now. That will change though, as the extension there is buggy as hell, so I'm looking for an alternative and Budgie DE seems to work great with it's Window Shuffler plugin, will cover all needs. That move might happen pretty soon. Focus. Colleagues are a great help, as it turns out, both when discussing things on work, giving ideas and some banter at times helps with sanity. Have your high focus time, but don't forget to wind down for a bit too. Focus is a budget, overdrawing it is unsustainable. WFH is goes downhill after a while for me, I feel that I don't get proper interruptions, don't feel work time properly. Sleep. Get enough of it. Pretty different for everyone. Waking up can suck in the winter, since we get about 8 hours of sunlight (you leave home it's dark, you come back home - it's been dark for over an hour already). so I've got one of those bedside alarms that turn up the light up slowly, before the alarm rings, seems to help. I guess that's all. Take from it what you will
  2. I'd say - start with excelling at something. There will always be a demand for highly skilled programmers, might not be the case for anyone mediocre. People want to hire professionals , that'll never change (probably). So, figure out what exactly it is what you want to do and start grinding at it, hone your craft. It does not mean you're stuck with something for life. And you will have to learn new things constantly, prepare to be a student forever and ever in this field. You can kind of coast through sometimes, but it's not worth it IMO.
  3. Well, for the original idea, how skilled are you at low level stuff? It will take a large amount of time too. Unless you're bent on doing everything from scratch, just start off some platform. Here's a fantastic resource for starting something like this from scratch though: https://wiki.osdev.org/Expanded_Main_Page
  4. Some not mentioned things: Flutter might be another option you could try, can do web also. But unlike electron, does not need to be shipped with a browser integrated into it, though it still has some "weight". The language there is Dart. You could use wxWidgets, that works on all platforms AFAIK. You can use C++ and Python, there are bindings for more languages I'm sure.
  5. Yes. It's great as a hobby and as a career. Can it be really - nut-crushingly - difficult career (depending on what you do of course)? - Also yes. Can you sort of coast through in some cases, if you're not reaching too high? - Kinda, but not worth the time investment IMO (it's far too interesting to me), also you're not likely to get paid as much as ones that constantly hone their skills, it shows usually. If it's a hobby, who cares, it's a hobby. Should you reach high for a career? - Well that's for you to decide, we're not your dads/moms out here to discipline you. But it'd be best if you at least learn to love it, it'll be more natural.
  6. I highly encourage learning even though it's impractical in 99.99% cases. The importance of understanding it supersedes the impracticality. Also do well to emit ASM from some language and compare, optimized vs not optimized etc. Keep in mind that a modern x86 instruction set (with extensions and stuff) is huge and you will not learn all of it anyway. Consider starting of with Intel 8088 (you can use DosBox and Turbo Assembler) for a start, or even going ARM or RISC-V.
  7. Oh man, are AMD GPU's competitive in anything anymore? It's not even worth to buy for OpenCL work like in the past, CUDA has completely demolished the competition there.
  8. Next up - using jpeg for network compression. On a more serous note - deflate will not be quick enough network traffic. It's not a good idea. Yes, it yields a better compression ratio, but it's relatively slow speed will *insert a more violent/expressive phrase for 'utterly destroy'* the performance of a network. That's based on compression benchmarks on larger files (can't find any other sources at the moment), so what you will see does depend on a lot of factors. If there's any seriousness to this - it must be thoroughly benchmarked. That might be: compression ratios, added latency, CPU usage, memory usage. OpenVPN is already not doing too well on the CPU usage (sometimes latency too) part. I've not heard any prominent projects using deflate for network traffic, I either don't know enough projects, or the reason stated above is in play, and no one's willing to use it because they've done their research. Be careful when taking advice from the OpenVPN codebase though - it's already a heap in some significant ways (it's single-threaded and user-space only for a start). Things done there are not in line with high performance VPN networking for the most part.
  9. Since I haven't really worked with a domain language like C# or Java in a long time, I've been using VSCode, and more recently nvim (just vim basically). They're great for pretty much every language that does not rely on IDE automation too much (both of those can perform those functions too, but not out-of-the-box, needs some time to set up usually). Suits my needs well, because of the languages I use. Otherwise, I've used Jetbrains tools in the past, and I've found them great. If I was to jump back into C# or Java, I'd probably use them. I wouldn't exactly want to, but those languages almost require using a full blown IDE IMO. Visual Studio itself used to be nice at least, have not used it in years, so I don't know how it's holding up.
  10. Multiple implementations for the same operation and then checking for support at runtime.
  11. Here's a start: https://www.gnu.org/software/libc/manual/html_node/Using-Pause.html Obviously daemons are usually not that simple, and are often multi-thread or multi-process (forking) systems. But this should be enough for the thread that listens for OS signals for starters at least. Graceful shutdown is the harder part of the daemonization IMO. Harder to do properly that is.
  12. CPU wise, I get much better performance on my tasks for a much better price. Threads is what I need, and higher-end AMD CPUs have plenty. They have Intel so far back in the dust in this regard it's crazy. GPUs are not as competitive (feature-wise especially), but I've still got one. That's because I run Linux and I don't even need to install drivers on my system, AMD cards have that perk there.
  13. Everyone would probably argue about what programming language to write it in lol. Then end up implementing it in 5 different languages after arguing for days/weeks on the forum and not coming to a compromise. Monkey's paw this `CALLING ALL coders...` thing be. Manufacturers do tend to do this stupid *bleep* of not allowing other programmers to use their integrated 'auxiliary' hardware easily. This area will always stay fragmented until they have some standard in place (read: never). Best solution to that is throwing every RGB part you have into the bin and setting it on fire. And if you'd want to make RGB things work under Linux it's even worse, most things you can't get support for because it's proprietary, there are no official applications even, so you're stuck with hacked together scripts the entire time, if that. I thank the brilliant developer that wrote a python script to control the RGB on the AMD Wraith cooler before I became epileptic.
  14. In any sort of practical terms and to scale - no. The amount of different knowledge areas and time for development and testing needed to achieve any sort of stability is not at all possible by a small team. You can make a game engine that suits the game you're working on, and that's not a bad thing at all, but you will not achieve what UE achieved AND have a game. The motivation to try to match UE from the get-go is an ill one. You would not be able to keep it going. And if the goal is to make a game, you'd waste a lot of time and effort and not have the game completed before you'd fail. If your goal is to make an engine - for what game are you making it? Making an engine alone is disconnecting from reality of sorts, it may not even be functional as a game engine at all, because no one ever made a game with it, you just don't know. So, if you'd throw away time and budget limits, you'd probably take years, because anything other than creating both in parallel is unrealistic. You'd find that pretty much all game engines have had their start that way anyhow, UE included. You'd want to improve what you have over a period of multiple games, and that's probably over 5 years already. Working on a single game, it would get stuck in development hell. That's my take on it at least.
  15. If it'll build on Linux, I'd sure have a try.
  16. Master Python first. You'll just make it harder for yourself if you try to learn C on top of that, it's a completely different beast, Java is yet another different beast from both of those. In regards of language/level of abstraction/technology specifics at least. You'll get lost in the details, you won't be as effective as fast. Python is much faster to get started with. Even if it's not the best language to do things with in the long long run, arguably, I guess that's just an opinion anyway. Since you can have a professional career out of it still.
  17. Willingness to pull through with a task (exercise, project, whatever) when you don't understand anything and the going gets difficult. Everything else you learn on the go.
  18. I'd dare say VS Code is more flexible, the amount of extensions is vast. It works great on all platforms too, it's not vim, but it's definitely fast enough.
  19. To put things into context: I've been programming for nearly 11 years now in multiple languages along the way, projects big and small. Vulkan is still hard. I can do stuff with it now, way past the triangle, but it's still a massive amount of work. And I can't write anything too complicated because it's not my full time job, and that's the time you need to sink into a game engine to make anything worth while at all. Rome wasn't built in a day, and neither are modern game engines and technology. Imagine your own situation. Follow @straight_stewie's advice. Otherwise you'll just beat yourself up when you'd fail. Master programming and computers in general first. Programming is a fun and fulfilling career/hobby, don't go to a lvl99+ dungeon while not even lvl1.
  20. this In that case, yes, you're all good with that solution. It is probably a better place to start anyway, P2P is a way more complicated, especially when you introduce that third-party. You can minimise the possible damage in case of break-in by segmenting/firewalling (basically DMZ'ing) away that machine from the rest of the LAN, making it more difficult to pivot over it. Not really necessary, but that's an option. I'm not sure about this one, can possibly be a router feature to expire automatically. At least my router does not display any such option. It sounds silly that it would just remain open if an application would crash for example. But I suspect it's good hygiene to close it after. Pretty much yeah, both peers check in to that third party server with their addresses and ports. The peers' respective NATs get new mappings and thus new 'holes' in the firewall. The server then gives you the peer's info on request and you use that info to traverse it's NAT to the peer. The server should be publicly addressable by both peers too, that's the only requirement for it (you could port-forward that in your LAN for example). I'm still in the dark on some of the details, like how that NAT mapping, only intended to work for the server, works with the peer, etc. I've not implemented such a thing to try yet, I hope I'll get around to. A fair bit of applications use this method almost exclusively as I'm aware, it means you're not dependant on UPnP that may or may not be there.
  21. I imagine you'd like something that works like a P2P system, like torrents or a lot of video calling services. You have only one option really, the UPnP system in your router (it is likely to be turned off by default if it's an office router, because it's notorious for being insecure). You can use that for the application to port-forward itself. The issue with NAT is that if neither peer is able to connect to the other one (closed ports on both, and no UPnP), you need a third party to negotiate a connection for the two peers. So if UPnP is off, that's the only other option, you'd still need a server.
  22. Anything newer than 2007, that's with speed considerations. You can do something like C or Pascal (who even uses that anymore) basically on an even more ancient potato. Python will also work. Buy a cheap thing and go with it. You won't need anything faster any time soon.
  23. Sounds like a compilation issue of some sorts. You seem to make a correct executable, because otherwise you'd get an "invalid ELF" error, something else might be off. How do you assemble it to binary? EDIT: To be clear, SIGSEGV happens when your process tries to access memory it's not supposed to. If your application does that on the first line (loading the address of the array), it tells me your process map is set up incorrectly (segment not in process scope), or something related to that.
  24. MongoDB, Elasticsearch (document id is the key if it fits your needs, and great for searching through things too). Or just have one database - a fast key-value db that stores on disk, usable on cloud storage as well: Aersospike (can use anything that can be abstracted as a block device - files, devices, but is mainly optimised for SSDs), or you can shell out for RedisLabs (also grants you SSD storage option) since you use it already basically. Having one database would simplify your application greatly.
  25. Well, if your source code is gone, you're gonna have to figure that out with manual tools. Visual Studio will probably not help you much. Read about the build procedures and try to complete them manually. That's gonna be a pain though, might be better to just rewrite the code, depending on what you've got there.
×