After the (temporary) defederation announcement of earlier i checked the Lemmy repo to see if there was already a ticket on the federation limiting option like Mastodon’s that people mentioned Lemmy doesn’t yet have. Not only i didn’t find it, i also saw that there’s about 200+ open tickets of variable importance. Also saw that it’s maintained mostly by the two main devs, the difference in commits between them and even the next contributors is vast. This is normal and in other circumstances it’d grow organically, but considering the huge influx of users lately, which will likely take months to slow down, they just don’t have the same time to invest on this, and many things risk being neglected. I’m a sysadmin, haven’t coded anything big in at least a decade and a half beyond small helper scripts in Bash or Python, and haven’t ever touched Rust, so can’t help there, but maybe some of you Rust aficionados can give some time to help essentially all of Lemmy. The same can be said of Kbin of course, although that’s PHP, and there is exacerbated by it being just the single dev.

27 points
*

Maybe I should learn Rust for this. I’ve never used it but otherwise I’ve got 20 years of programming experience so can probably pick it up. I’m very experienced with web development so maybe that’s a better area where I can contribute.

permalink
report
reply
3 points

Similar 20+ years programmer here. Even before Lemmy Rust was top of my list for languages to learn. Now I’ve got a boost in motivation too.

permalink
report
parent
reply
10 points

I’m in the same boat. I’m thinking this might be the opportunity for me to give Rust a try.

permalink
report
parent
reply
3 points

Also in the same boat, and I’ve been putting some thought into combing through the code and actually giving it a go between finding both Lemmy and a game called Veloren that are both small community-made projects in Rust that could use some extra contributions.

permalink
report
parent
reply
2 points

Haha same. Everytime I try to learn Rust I fail because of how difficult it is. At least now I have a reason I failed, as opposed to “I want to learn Rust”

permalink
report
parent
reply
15 points

I wish so badly I could code, I spent 8 years trying to understand it and get into the industry, but it never quite clicked in my brain. Soooo I do IT infrastructure. I wish so badly to contribute code

permalink
report
reply
7 points

May I ask you more about your experience attempting to learn? I don’t know if it’s because I can program but eight years seems a long time. In return, I’d be happy to offer you a few pieces for advice that could help?

permalink
report
parent
reply
1 point

That’s so kind of you!
I started by aiming for front-end web dev. I learned HTML & CSS (I know, we’re not PROGRAMMING yet). At the time, that’s all I was hearing it’d take to get into the role. Then it was “you should probably know some Javascript,” and I wasn’t ready for how big of a jump that was. By the time I started understanding it, it became “learn jQuery,” which I learned and used for a couple of small websites, then came the libraries…
“AngularJS is the future” well now I need to learn Git, compiling, CMD…
ReactJS starts becoming a thing and I say “seriously? I’ve learned enough of these things, quit moving the goalpost, React isn’t going to stick around”
Yeah…it definitely stuck around…but as an Open Source nerd, I got super excited by VueJS and started learning that. No jobs in that apparently, aaaand I no longer want to do web dev, especially since I never reached the point of enjoying coding, it was always a means to an end.

So there were two major issues for me: \

  1. I never focused on one language enough to truly LEARN to code, it was a constant sense of “I’m not keeping up”. I may be able to write the syntax, I might know the basics about functions, vars, and looping, but never really got using it in a super practical sense other than to try a couple of personal challenging projects that my ADHD arse couldn’t ever stick with. \
  2. Me and coding speak and think very differently. Stick with me here, I know, it’s a language, but the way something should be written and formatted are different from how I think it should be, and this is a very hard one to explain to folks. The best example I can give is that I might say like (and this is a poor example because remember, I don’t code and I’m not doing any active coding projects) \

var person = { userInput }
var num;

function findNumberOfLetters (person) {
    num = length(person);
}
function response(person, num) {
    findNumberOfLetters(person);
    console.log("Hello " + person + "! Did you know that your name has " + num + " letters in it? Numbers are rad!");
}


I’m sure I did things wrong, but again, this is just for the sake of example. So, I write something like this thinking that it’s nicely structured and easy to read, and inevitably won’t work. I pass this to a friend, and the answer seems to always be a less structured, more nested code. So for this example, something like \


(function response(userInput) {
    console.log("Hello " + userInput + "! Did you know that your name has " + length(userInput) + " letters in it? Numbers are rad!");
})


Obviously their answer is shorter and this isn’t exactly a complicated program, but for some reason, making the thing that provides a response to the user to do any of the logic feels wrong and messy to me. It’s a really hard thing to explain, I hope this makes some amount of sense, but I just process things very differently than code does, and it just ends up really incompatible. I’ll beat my head for weeks over-complicating something because I want it to “be clean” only for someone I know to come up with something that actually works within seconds.
This isn’t to compare my skills against them, it’s to say that I’m thinking about it wrong, I’m organizing it wrong.
That said, knowing how code functions has helped me to know enough to be dangerous and apply it in other ways, such as building Azure Logic Apps to manage ticket intake, or building alert monitoring. So it’s come in very handy in its own way, I just don’t have to competency to actually make any contributions to Open Source projects, especially since I don’t write in two of the coolest languages that I wish I could learn: Python and Rust.

No pity party here, I love what I do and I don’t intend to change careers to coding, but I do end up feeling helpless in the face of instances like this where I wish so badly to contribute to a project that I care so strongly about and want to see thrive. I know there’s other ways to contribute, such as providing graphics, UI, documentation, financial, hosting, etc. but coding always seems to be the most in need to keep up with demand, and with more and more projects coming out all the time, the more programmers are in need to see them through.

permalink
report
parent
reply
3 points

Going front-to-back

The entirety of your first paragraph is a humongous red flag. Your rationale makes sense, and it appears at each stage of the process you made logical decisions but the end result is disaster. You are evidently a knowledgeable and intelligent person, so I’ll ask you now to consider how old the underlying technologies on the web are, and how the web looked when they were written. Web frameworks exist to bridge the gap between languages and methods that are popular in the present day and the arcane mysteries of the world wide web. They bridge this gap with magic.

Now, this magic is a wonderful thing. It enables developers to make applications for the web in a way they’re familiar with and saves them having to think about the ‘web’ part which is:

  1. Arcane.
  2. Reasonably boilerplate.

However, if you’re trying to ‘learn programming’, starting with web dev is backwards in my opinion. You either choose to use a framework, and then you’re not really learning programming: you’re learning the framework. I always find this unrewarding, as it feels like the framework is doing all of the work and robbing me of the satisfaction. Furthermore, when you’re in the ‘beginner mindset’, you want to know how things work, you want to understand, you want to learn. Web frameworks are powerful when you focus on the ‘what’ and less on the ‘how’. Experienced developers have an understanding of ‘OK, this is what the framework abstracts for me, I’ll let it do its job and I’ll do mine’ and ‘Oh, I am not sure about this and it’s important I learn’. This is obviously a skill only gained by experience.

Furthermore, as you touched on, web frameworks go in-and-out of fashion and can have radically different approaches. With professional experience, you can apply your knowledge of one framework to learning another. As a beginner, I do not believe you have a broad enough understanding to be able to make connections between frameworks. This leads to your feeling of always being on the back-foot.

My recommendation for anyone who wants to learn programming in-and-of-itself, rather than to a specific end, is to start low-level. C was my traditional recommendation, though I may be altering this to Rust. C will never let you forget that you are programming a computer. This might sound ridiculous but it’s remarkably easy to lose track of and once you do, everything (in my head, at least) can get a bit esoteric and conceptual, and I find the ‘grounding’ deepens my sense of satisfaction working with computers.

My diagnosis as it stands is that you attempted to work from ‘abstract’ (web frameworks) to ‘concrete’ (learning how to program) and I’d always advise the reverse. Use C to gain a clear appreciation for how a programming language is altering 1s and 0s on your machine. Then build up with other abstractions, languages, and, in due time, frameworks.

Thinking differently

It sounds to me that, in your experience, you made some correct assumptions and some very incorrect assumptions. Correctly, you identified that structure, ease-of-understanding, and writing your code in a style that you’re comfortable with is optimal. Incorrectly, you assume:

  1. Differences in programming styles are more often objectively better, than subjectively better.
  2. There exists no good programming style that will ever match how you conceive of code.

Now, these aren’t merely incorrect assumptions, they’re incredibly incorrect. In the professional sphere, those who write code that is well-structured, easy-to-reason about, and is well documented are sparse but they are often highly valued (in good teams, at least). I was always taught, and still vehemently believe, that clarity and readability are absolutely the first priority. Speed of execution is a secondary concern. Terseness is not even a concern of mine at all.

Good code is easily understood by computers, as well as human beings. You are the first human being who has to understand your code. You should always write it in the way that is most easy for you to understand. It is a darn sight easier to optimise neat code, than it is to neaten optimised code.

I believe you’ve come to these conclusions because of your experience learning web development. I find web frameworks and JavaScript as a language to have syntax that is odd and inflexible. The pseudo-code you provided was in JavaScript and is reminiscent of many of the traits that mean that even experienced developers such as myself find it difficult to parse. There’s a reason callback hell is a meme. If you get the opportunity to use some other languages, I believe you’ll see there’s more flexibility in expressing yourself than maybe you’ve had the opportunity thus far.

Furthermore, I am reticent to comment on what is valued in the JS community, as I have never written anything of note with the language but looking at the two code snippets you provided, the first snippet smacks more of a ‘professional’ developer. It’s more modular, finely-grained, expressive.

Finally, if you’re still clinging onto the notion that coding demands a ‘particular’ way of thinking, I encourage you to look-up internet rants from people who know a lot about Java, Python, C++ etc. bashing Haskell. Haskell is a beautiful language that forces its developers to write in a style known as ‘functional programming’. I won’t go into depth about the differences and why functional programming is amazing but let’s put it this way:

How far do you believe you could get in JavaScript without:

  • Being able to loop?
  • Being able to re-assign variables?

In Haskell, you cannot do either of these things and it’s for the better.

Conclusions

I’m glad to hear you’re happy in your work but disappointed that you were unable to find a groove with programming. From what I’ve read, you absolutely seem to be the kind of thoughtful individual who should enjoy it.

I’d encourage you to start learning Rust. I am learning Rust at the moment myself. Pay close attention to references and memory management. When your material discusses memory concepts, such as the heap and the stack, ensure you develop an intuitive understanding of how they work. Don’t just view this as an important part of your development (one many developers neglect!) but as a window into what is happening on your machine. If your brain is anything like mine (and I think it might be), it’ll further your satisfaction.

Avoid Python. Python is tremendous is you want to use a tool that mandates Python. It will hinder your learning and force you into bad habits if you learn it early. Furthermore, when your project gets to any level of complexity, it’s going to be far more pain than its worth. I understand why Python is so popular in some non-programming domains but it has no appeal to me as anything more than a scripting language with boundless 3rd party libraries.

Look at functional programming, if you’re curious. This free book on Haskell is popular for a reason. Functional programming ideas are slowly making their way into all mainstream languages, for a very good reason. They force you to think differently, and it might be different in a way you prefer.

permalink
report
parent
reply
2 points
*

Thank you so much. This is a terrific insight. A little later I’m going to sit down at my PC and type something up I think will help.

I’d ask you as a fellow ADHDer ✊ if I forget to please remind me to write up my response 😂

EDIT: Response now posted here

permalink
report
parent
reply
1 point
*

Here is a thing I found helpful in my >10 years of programming career: break your problem from top to down (aka Top-Down programming).

Consider this problem: I want to send a post card to my friend.

Now let’s break down this problem into several steps:

  1. Obtain a post card
  2. Drop the post card at a post office

Next, each of those problems can be broken down even further.

Obtain a post card:

  1. Visit a store that sells a post card
  2. Select a post card to suit your taste
  3. Go to the cashier and pay

Now each of those steps can again be further broken down into even more sub steps:

Visit a store that sells a post card:

  1. Identify a nearby store that sells post cards by googling them and find their address
  2. Open Google Maps to plan a route to the store
  3. Get out of the house and enter your car
  4. Drive to the store

You see where I’m going? Break your problem down into actionable pieces you can solve in the programming language of your choosing. How deep you go depends on what programming language to use. If you’re using a High Level programming language such as Python, you usually don’t need to break down the problem too deep in order to solve it. But if you’re using a Low Level programming language (e.g. assembly), you’re going to need to break down your problem very deep into actionable pieces that can be solved in assembly.

Hope that can help you.

permalink
report
parent
reply
3 points

Oh sorry to hear that :-( I feel very lucky now that it just seemed to click for me

permalink
report
parent
reply
1 point

Kinda the same for me, although I recently moved into something more security focused.

I know a little python though! Should anyone ever need one more “knows a little python” guy lol

permalink
report
parent
reply
1 point

Yessss, honestly, it really helps to have that knowledge, I’ve been surprised at how often it comes in handy

permalink
report
parent
reply
7 points
*

I’m not a dev, but I do have SOME coding experience and have been wanting to help with some open source projects, if nothing else but for the experience. Rust has been on my “to learn” list for like a year now. I def have a lot to learn, but the best way to learn is to get your hands dirty. I’ll take a look at the Github page and see if there’s any low-hanging fruit I can try to tackle lol

EDIT: I’m pretty sure I can help with some of these. My coding skills are out of practice, and idk any Rust yet, but I’m a fast learner. Currently learning how to use git to fork a repo, add code, and create a PR, then I’ll go learn some Rust syntax and get to work! I’m actually really excited! I’ve been wanting to figure out how to contribute to FOSS projects since I started daily driving Arch Linux like a year ago, and this is a great opporunity for me to learn!

If anyone has any development tips for a noob like me, let me know! I’m going in pretty blind here, so any advice is appreciated!

permalink
report
reply
3 points

Just a general tip: don’t use your distro version of rust (Lemmy) and nodejs (lemmy-UI). Instead, install them using a version manager, which allows you to switch to different versions of rust or nodejs without being tied to whatever version your distro have in their repository. This is very useful during development when you often need to try different versions to debug an issue (e.g. is this bug only happen on certain compiler version?), testing an upcoming beta features, etc. This apply to most programming languages as well, such as Python, PHP, Go, etc.

For rust, rustup seems to be a popular choice. For nodejs, nvm and asdf is quite popular. asdf even support both rust and nodejs.

permalink
report
parent
reply
1 point

rustup seems to be a popular choice

Not just that, it’s the official way of installing and updating your Rust toolchain, maintained by the Rust project themselves.

permalink
report
parent
reply
1 point

Thank you! Ill keep that in mind!

permalink
report
parent
reply
2 points

My only coding experience was way back in Sixth Form in the early 2000s. I love the enthusiasm that comes across from your post.

Do it for Lemmy! For the Fediverse!

permalink
report
parent
reply
1 point

And my keyboard!

permalink
report
parent
reply
7 points

I’m hoping to contribute to jerboa. That’s more my wheel house than rust

permalink
report
reply
3 points

Thank you! Every contribution to the ecosystem is valuable :).

permalink
report
parent
reply
34 points

Maybe this is a good excuse for me to (apologies) shake off the Rust and contribute some. I’ve only contributed once or twice to a FOSS project, though, so I’ll need to read up a little on best practices and etiquette.

permalink
report
reply
3 points

Yeah don’t let fear inhibit you too much. I started contributing and everyone has been very helpful in the PRs , no one made me feel like an annoyance

permalink
report
parent
reply
21 points

Don’t shake it off! They need all the Iron Oxide they can get, from what I’m hearing.

permalink
report
parent
reply
3 points

Kind of thinking the same thing, I want to learn rust, but have not gotten an excuse to start using it. Maybe dedicating 8-16 hours per 2 weeks could help me learn rust and do something more complex than writing hello world. I have some additional time in a month or so, so might as well try

permalink
report
parent
reply

Programming

!programming@beehaw.org

Create post

All things programming and coding related. Subcommunity of Technology.


This community’s icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.

Community stats

  • 72

    Monthly active users

  • 319

    Posts

  • 3.3K

    Comments