25+ yr Java/JS dev
Linux novice - running Ubuntu (no windows/mac)

  • 0 Posts
  • 121 Comments
Joined 2 years ago
cake
Cake day: October 14th, 2024

help-circle

  • For being not a coder, this is fairly ambitious. I’ve been coding software for thirty years and I’m not sure I can offer anything technical. Personally, I’d probably try to do this in Python rather than shell script. Shell script is fine if you have tools you’re just trying to stitch together, but this is far beyond that.

    That being said, I get it. The first coding I ever did was making a character sheet for roleplaying by sending raw commands to my dot matrix printer from my Commodore 64. You have a vision in your head and a computer at your fingertips and you have to bring it all together.

    I respect that and if part of your goal is to achieve this using only bash, then god speed. Otherwise I might look at a language that gives you library support and modularity and unit testing. I write Python scripts all the time, and the truth is I don’t know Python at all, so I know it can be done. Define a unit of functionality and build that piece. When that piece works build another component. Then build a parent program that calls those two things. Then build more components. Define functions that can be reused when you have code that needs to do similar things.

    The key is to build standalone functionality — what is the smallest useful thing you can do? Build it. Now you can invoke that every time you need to do the thing. Construct your program out of components you create.

    This is kinda like if I told AI to build me a web service but keep everything in a single Java class. It would be a wild and unreadable, untestable mess.


  • Claude cli almost exclusively. So far mostly opus, but I need to start using less expensive models more frequently.

    I have Codex installed, but I mostly use it to interface with Obsidian, which is where I track all of my tasks and organization stuff. Unfortunately, codex doesn’t play cleanly with Claude, so it’s hard to use it for coding at all, but I do have it review documentation and identify gaps or discrepancies, because it’s far cheaper than having Claude do it.

    I’ve tried lmstudio for local AI with some ~30b models. It works fairly well and fast, but only for tiny context sizes. One I pass a few thousand tokens the speed falls off pretty quickly.


  • MagicShel@lemmy.ziptoProgramming@programming.devLocal LLM agents
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    1
    ·
    25 days ago

    I run this setup with 36GB (32+4). Local LLMs can be really effective BUT you are constrained by context size in a way you aren’t on cloud services.

    Cline supports running a local model through lmstudio but my experience feeding it any significant tasks is it just can’t handle reading and holding the contexts to build components for enterprise scale applications.

    I use Claude to write a lot of utility one-off scripts. With a maximum window of 1M tokens I can hit 30+% context just writing Python scripts. API contracts, development standards, existing reusable modules, and sometimes reading the code/documentation of the services I’m going to be calling.

    My MacBook can’t handle 300k token contexts. 30k seems doable. I should see how it handles my utility script folder…

    Anyway that’s still no Claude but if you need a cheaper model and you can afford for developers to spend time on it before ultimately deciding they need to spend for Claude or Codex or Gemini, then rubbing a local model on a beefy MacBook is 100% an option.

    Stepping up from there to building a locally hosted LLM is probably the worst of all worlds. It will be a beefy CapEx, prone to saturation by all the users, and you will most likely still have to punt the hardest jobs to cloud AI. It can certainly be done and done well, but the best example I know runs on $250-500k worth of hardware (to service a pretty big number of users to be fair).



  • So I have frequently worked in projects where I don’t know how end users interact with the software. I can make code hum without knowing how it fits into the ecosystem. Sometimes that’s all the job is because that’s the structure.

    That said, I can contribute a lot more if I do understand the bigger picture. Domain knowledge helps me triage. It helps me propose effective alternatives. I’d say it is critical for understanding separation of concerns and deciding what compromises to recommended practices are reasonable.

    I reject this principle. You can write code without domain knowledge, but software by itself has no purpose until it meets users. And to write software that works best for users you have to understand them.


  • I thought this was an interesting article. The only thing I would want to point out is that you could probably implement a barebones message queue system in a couple hundred lines of code, but Apache Kafka exists essentially covering way more edge cases and failover scenarios and scalability, and I wouldn’t say it has no clothes.

    I’ve been writing code in a lot of domains for a lot of years and my observation is edge cases and error handling is the biggest difference between any professional package and amateur garbage.

    But I suppose if the goal is clickbait rather than accurate summary, touché — you got me.





  • I’m not trying to defend that guy but I work for who is hiring when I’m out of work. I’ve spent 11 out of the last 40 months unemployed, and as a result I have no retirement savings to speak of — I can’t afford to turn down work. I’ve worked for Ford, Home Depot, Autozone, Uline (honestly felt so relieved to get laid off, that place was fucking scummy), the Army, and a shit ton of places you’ve never heard of. I had to turn down working for an insurance company — and I think they are pretty shitty — because they wanted to pay 1/3 what I’m making today. And I make fucking nothing compared to Silicon Valley.

    engineers work for the company, not for users.

    On the other hand I’ve never made any bones about the fact that I work to develop good products and if someone can make money on that good for them, but I fight for the best design for end users I can. I have mostly developed internal software, though, and no one but me cares about internal users. You can tell because everywhere you go, front line workers are bitching about garbage software.

    I might be wrong about the best solution, but I refuse to be evil. Even at Uline, I worked to make better software for the workers. But what a bunch of assholes.




  • Probably JS as the fact that every computer has by default everything you need to execute JS. But there is a bunch of browser stuff you have to worry about before you can do anything with it. I’m not sure how you learn JS before html.

    With Python you can do simple command line stuff without having to really know anything else. You can learn one concept at a time.

    That being said, people have a lot of familiarity with browsers and it might feel less abstract. JS might a better choice for demystifying coding. Python is probably a better choice for accomplishing anything useful.



  • you’re really nitpicking my English

    Mate, the hardest part of software development is communication and autism is ubiquitous — got a touch myself. So I over explain and I’m very specific. But let me make one thing abundantly clear: I don’t have time to spend this many words trying to be a pedantic asshole. I have much better things to do with my time. If you don’t like my approach, feel free not to engage, but I’m here trying to distill some value for you out of my experience.

    Now, I don’t put too much stock in up and down votes (and to be clear none of your downvotes is from me — I don’t waste time responding to stuff I downvote), but the pattern suggests that what I’ve said resonates with other developers.

    So of course I’m more curious to understand how to solve situations when you do have conflict, if you don’t it’s easy.

    So here’s the disconnect: you’re worrying about shifting burdens like it’s a huge weight, but conflict is exceedingly rare — too rare to worry about. It’s a non-consideration.

    I’m going to leave it there because I think anything else would just be repeating myself.


  • If a story gets created, the code will be merged… when it’s right. If you’re talking OSS, then I am out of my element, but I’ll wager there’s no universal answer because each code owner sets their own standards.

    you have to appoint a person that have the final say on what to merge right?

    If there is work that needs to be done, and you are asked to do it, the code will be merged when it’s right. I don’t decide what to merge, I decide when something is ready to merge.

    The problem of deciding what should be merged or blocked

    If you want to merge something and I read it over and reject the PR because you forgot about concurrency, that doesn’t mean you don’t get to merge, it means that it’s not finished baking. And assuming you give a shit about the code your response should be “oh shit, lemme fix that and resubmit” OR “actually this code will never have concurrent access, and here’s why.”

    You’re making this process sound adversarial when it isn’t. It’s a group effort. Everyone wins or loses together.


  • Everything gets reviewed. If you have a constructive comment you put it in the review.

    I note when I think I have a better way of doing something but the existing way works fine, and I leave that fix up to the submitter. But sometimes I just say no this is wrong. And then whether it gets merged anyway depends on my role. I’m a tech lead now so that’s basically the end although if they want to argue their case I’ll hear them out.

    The devs I work with are all seniors and have all been working in the system longer than me, so I respect them and listen when they disagree. Generally when that happens I’m right in principle and they agree with me, but the code is a fucking mess and we can’t do A right without having to change the rest of the alphabet, and we have bigger fish to fry.

    In other positions I made my comments and whoever was in charge got to decide whether to accept the change or send it back. I try to always make at least one constructive comment even if it’s just like: I really like how you did this.

    I’m not sure what problem you think is being moved to the reviewer. It’s a team and everyone has the same end goal. I appreciate when my code is reviewed because any of us can make a mistake or forget to consider some outside factor. Code review is where assumptions are tested and discussed and hopefully everyone comes away knowing more and agreeing on a path forward.



  • MagicShel@lemmy.ziptoProgramming@programming.devWhat do coders do after AI?
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    3 months ago

    To each their own I suppose. By which I mean maybe the author enjoys different parts of coding than you do. Trying to wrangle AI into writing something decent is generally an exercise in frustration for me. But I enjoy architecting and figuring out how to define units of work that are small and self-contained enough to get AI to understand.

    I’ve been mulling over what kinds of architectural changes might make it easier for AI to be able to contribute. That’s a puzzle I find interesting in the same way I enjoy other programming problems.