• 1 Post
  • 133 Comments
Joined 2 years ago
cake
Cake day: June 18th, 2023

help-circle
  • I usually just look into the docs, for most of the more basic things, search engine will find you the related function, and the docs usually have usage examples.

    Also, learning to work with and read a documentation will be one of the best skills you can acquire as a programmer. I was so glad I was used to docs, because when I started to work with libraries that are under NDA (porting games on consoles, most prominently PS5), where the only resource you have are docs and internal forums without any kind of tutorials, being able to figure out what you need from docs is really nice skill to have.

    I have tried using AI for non NDA programming questions, and usually I’ve ran into an issue that it simply just halucinates even on basic questions. For example, I was trying to figure out how to prevent Quest from sleeping, so we can run long-running automated tests, and all of the solutions were adb parameters that do not exist. Unless it’s something super basic, AI will probably just send to you the wrong direction.


  • It works simillarly to an IRC. You have a server, that server can have channels, I think it can even do voice. But, unlike IRC, you can also use your server to talk to people on other servers, similar to how Fediverse works - if I have a server hosted on myserver.com, and someone else has a public room on server otherserver.com, I can either join the room@otherserver.com or message person@otherserver.com, all from my account on myserver.com.

    And bridges are basically just bots that run on your own server, and by scraping websites/using API of the service your bridging they create a private room i.e Messenger@myserver.com, with subrooms per chat, and the bot then sends every message it recieves signed into your messenger account to the room, and vice versa - anything you send there will it forward to the real messenger, basically allowing you to chat with people on messenger through your matrix server. Which solves the problem of “Each of my friend is using different messaging service, can I have them all in one app? (The app being Matrix client)”.


  • I’m a fan of self-hosted Matrix server. You can get a dozen of bridges for those stubborn people that refuse to leave messenger/whatsapp/telegram (at a loss of encryption, and they still get your convos, but at least you don’t have their spyware on your mobile and you can have everything in one app), while also being decentralized.

    Self-hosting a server is actually really, really easy. It took me like half an hour, because there is an amazing Matrix Ansible Deploy script, that has a pretty easy to follow documentation, and is also one of those super-rare projects that just works. Even if I forgot to update my server for several months, I could literally “just update”, and the script is clever enough to figure out what changed, tell me what I need to update in the config files (which are still only like four rows of stuff I needed to setup), and it is a really smooth experience. Even when you want to set up some bridges, for most it’s literally just adding “<service>_bridge_enabled: true” to the ansible yml config file. I’ve already set up Telegram, WhatsApp, Discord and Messenger this way, and it was effortless.





  • I forgot to add that I had a Masters in Game Development and Computer Graphics, which definitely helped, but I still learned most of my gamedev skills by regularly attending gamejams and working on my own projects. I’ve also started working in gamedev for the past year, and I wouldn’t say that it teaches you much, since you are missing out on 80% of actuall development and only crunch JIRA tickets and bugfixes, as a junior that is, without being exposed to the more important parts or other skills. Assuming you join a larger studio with game in progress, in an indie studio with team of 10 people, you’ll probably have a lot more responsibilities and impact on other stages of the game’s development.


  • This isn’t true. If you can get by while working part-time, you still have at least 40 hours every two weeks to work on your game.

    It’s one of my biggest regrets, that after school I immediately jumped into full-time job, even though I realistically could live comfortably with 1/3 of the pay I was getting, since young+no familly+no car+shared living reduces your living costs by a very large margin. My best friend did that and has been working only 2 days per week since. I was trying to keep up with him, working on our game in my free time, but it’s simply not feasible to build on top of 40 hours per week of regular job, and then do anything meaningful on your side projects. I barely struggled to get myself to do at least 20h of work per month on the project, missing deadlines, and it sucked.

    He, on the other hand, kept our game project afloat and moving forward, with 60+ hours per month, while also writing and running a large LARP for 100 of players, directing his own theater group, and in general successfully working on a lot of projects, including several smaller games.

    The best advice I can give, if you want to be a game developer, is to 1) not work in gamedev and 2) work part-time. The IT salary should net you a comfortable life even on part-time pay, assuming it’s not gamedev. Smaller studios will have difficulties keeping afloat if they need to pay you, and in larger AAA studio you will be the same code-monkey crunching JIRA tickets as you would be in any IT job, but for a lot less money. And the design freedom you get when your livelyhood doesn’t depend on your art’s success, be it games or anything else, is totally worth it.

    For example, this game has been developed solely in free time, without anyone getting paid for working on it. It’s not AAA and the development takes a long time, but it definitely doesn’t need to be a fulltime job.


  • I highly recommend reading Digital Minimalism, which deals with exactly what you are talking about. It’s a great and inspiring read, even if you don’t actually go through with it.

    From what I remember, it mostly talks about how to approach any kind of technology as a tool, though a pretty simple process - honestly think about what your goal is (networking, getting information about new topics, keeping up to date on events…), and properly decide whether the technology is actually The Best way how to do it, while minimalizing any drawbacks.

    Some examples I remember are:

    • I have to use social networks to stay in touch with my friends and family. - Is that really the best way? Isn’t it better to make sure to visit or call them regularly, so they can tell you what they have been up to, instead of you passively seeing it from soulless posts? If your goal is to have a meaningful connection with them, is chatting in a group-chat the best way and better than talking less often, but in person?
    • I have to stay up-to-date on news. - Is endlessly scrolling through clickbait articles for hours the best use of your time? Wouldn’t just subscribing to a physical newspaper/journal, that you get to read every day/week/month, accomplish the same thing while also saving you an immense amount of time?
    • I need to have a smartphone so I can be reached at any time. - Do you need to have a smartphone for that? Isn’t dumb phone way better, since you don’t get distracted with other stuff? And are you sure that you have to reply immediately, and it won’t wait until the evening? Will setting up regular 30 minutes per day, to check and answer your personal mails/IMs be sufficient, and if someone needs to reach you immediately, they can always call you.

    Most of the arguments in the book were thought-provoking, and from what I’ve tried implementing, it has made my life a lot better. For example, switching my phone to a dumb phone (and carrying a powered off smarthphone that I can make a hotpost for, if I really need an app for something) made my away-from-computer life a lot better and peacful, and it was really easy to get used to that. Once you start considering anything you do on a computer from the pragmatic point of view, and ask yourself what your goal is, and if there isn’t a better way - the answer usually is yes, there is.



  • This puts to words something I was recently thinking about pretty well, especially the part about being an “advice seeker” and not really being able to solve stuff on your own, which is something I’ve always attributed to just being a field where you are driven to, especially in school, to have The Correct Solution, and that one always exists.

    I mostly struggled with this when I tried getting into art, especially music or drawing. Suddenly, there’s no algorothm or The Solution, and you have to figure out something based only on your creativity and judgement, and there’s no-one who will tell you “this is the correct answer”, which for someone being used to there mostly being one, was something I never managed to get over to this day, because it simply stresses me to the point of creative paralysis.

    Thankfully, due to enshitiffication of most of the services I was following, which basically forced me to drop them due to invasive privacy rules, AI integration, or not working in privacy focused browsers or over a VPN, it’s getting better. I’m kind of looking forward to OpenAI, Google and Meta finally killing most of the internet, so I can let go when 90% of content is AI generated, 60% of websites wont work without chrome, and the rest is just porn.



  • Oh, I totally forgot about this bit. Maan, I really want to write “a practical guide for programming with the Omnissiah.”, a book of fun rituals and litanies to support your software development. I always felt like computers are kind of really literally magical, and adopting a more spiritualistic approach to programming sounds like a lot of fun. Unfortunately, I didn’t find any existing spiritualism that would match this, Tech Priests being really close to what I was going for.

    I need to add more litanies and copious amounts of censer into my programming workflow.


  • It took me a long time to realize the worth of having a CS degree. When I was leaving the school, I felt like it hasn’t tought me much. I was already a pretty ok programmer, since I was programming most of my highschool, and it felt like I’ve wasted a lot of time on languages I’ll never see in my entire life. Which is kind of true - I’m still pretty confident that I’ll never use Lisp, Prolog, Lambda Calcul, base assembly or Pharo ever again, but after a few years I’ve realized something important that I was missing - the school wasn’t trying to teach me how to be a “pharo/lisp/prolog programmer”, but to be “a programmer”.

    I noticed it on my pentesting colleagues who didn’t have formal programming education, how they mostly spoke about programming in relation to languages - “I know a little bit of python, but wouldn’t call myself a programmer. What programmer are you?”. That question felt wierd, and I eventualy realized that’s because the lines between languages eventually blured for me naturally, and I paid no mind to the language of choice - I was simply able to naturally pick up any language, and write anything I needed in it pretty quickly.

    Only then it occured to me that I have my education to thank for that. Sure, I might never use Lisp again, but I do vaguely remember the concepts and workflow the language has, so now I can more naturally pick up any lisp-like language. Same goes for the prolog-style of languages, or the more OOP-focused languages, like Pharo. Since I had to drag myself through hell to pass an exam in most of the flavours of languages, it made me a versatile programmer that can just naturally pick up anything I see, to the point where I don’t have to think about it - I just subconsciously detect what kind of basic workflow style is it going for, google the basic syntax and standard libraries, and I can write whatever I need in whatever language is available in a reasonable amount of time.

    I don’t see this “ascendance” mentioned in the post, and I think that it’s a really important point in learning to be a programmer. It’s also a piece of advice I try to give anyone unsure about whether his degree is worth it, because it feels like you’re learning useless stuff. I have no idea how to teach it, though. It kind of happened naturally for me, and I can’t identify the point when it happened or why, or how would I go in teaching it to someone else.

    It’s important to keep a wide field of view when learning programming, and not just lock yourself into one language. You can always google for syntax pretty quickly, but seeing the wide array of workflows and flavours different languages use to accomplish the same thing will go a long way in making you a better programmer.


  • I don’t think so. If people leave and the only reputation you’d hear about the platform is that it’s full of shit like that, you won’t have any reason to start an account in the first place, since there’s no “normal” content with which they’d first hook you in, before they can slowly start changing your views.

    If the serious content remains, you’ll get people signing up for that content, only to be slowly manipulated into whatever The Algorithm feels will drive the engagement (which is probably fascism). If there’s nothing in the first place, you don’t have that hook.

    Let it die.




  • Mikina@programming.devtoProgramming@programming.devMaking malware
    link
    fedilink
    arrow-up
    6
    arrow-down
    1
    ·
    edit-2
    3 months ago

    I can’t recommend Maldev Academy enough. It has been an amazing resource, to get into malware development. Keep in mind, however, that malware development is pretty difficult topic. You will have to eventually use WinAPI and syscalls, so learning about that even outside of malware development will help you a lot.

    For example, try looking into how to execute a shellcode in memory - allocate memory as RWX, copy some data and then execute it. Try executing it in a different process, or in a different thread of another process. That’s the core of malware development you’ll probably eventually have to do anyway. Manually calling syscalls is also a skill that you’ll need, if you want to get into EDR avoidance.

    Also, look into IoCs and what kind of different stuff can be used to detect the malware. Syscall hooks, signatures, AMSI, and syslog are all things that are being watched and analyze to detect malware, and knowing what exactly is your program logging and where is one of the most important and difficult skills you can get.

    There probably are a lot resources for these two skills, and they are an important foundation for malware developemnt, so I’d suggest researching that. You’ll probably not get much from looking at other malware, because it tends to be really low-level, and obfuscated, exactly to avoid the IoCs I’ve mentioned above. Implementing the malware behavior after that is the easier part.

    Another good resource to look into are C2s and communication, for example Mythic C2 has some interresting stuff.

    And I really recommend joining the Bloodhound slack. Throughout my cybersecurity carreer as a Red Teamer, the community has helped me a lot and I’ve learned amazing stuff just by lurking.


  • It’s best to have a local copy of package repos with whitelisted libraries, or so I’ve heard. But containers are fine, too. Especially with VSCode .devcointainers, it’s super easy to setup and distribute with the repo, there’s really no reason not to do that.

    The biggest issue here that a lot people don’t realize is Bing AI, it’s insanely easy to poison it’s results, since it summarizes search results. It’s only a matter of time before someone convinces it to start using or adding a typosquatted/malicious library to answers to a common programming question, and it will be a fun times ahead.


  • As someone who works in gamedev, I’m sure that some of the people there are passionate about it and it is gutwrenching to see your work fail so hard. I’m sad for every project that launches after years of work and fails to get any attention or sales, and I’m definitely sure there’s someone losing sleep due to that.

    I never worked in super-large projects, but I did work for a AAA studio and even there, you got people invested into the project.

    From how I’ve seen it, you wouldn’t work in gamedev unless you are passionate about it, because you can get drastically better pay for the same job in other, more business focused, industries. So, if all you cared about is money, you have better options.