Programming and/or Sys Admin Beginner's Thread - Because there seems to be a need for this particular thread

If it's stupid but it works it isn't stupid.
100%. Especially for learners, this is how to think. Computer languages are specialized engineering tools. Make your engineering product as robust and straightforward as possible. "Weird" languages have specific applications, and often, domain-specific knowledge in several fields is required to justify choosing an unusual language for a solution, which few developers really have. It is better, especially from a career perspective, to focus on simple languages that are in common use, but then you get Python, so...
 
  • Thunk-Provoking
Reactions: Belisarius Cawl
100%. Especially for learners, this is how to think. Computer languages are specialized engineering tools. Make your engineering product as robust and straightforward as possible. "Weird" languages have specific applications, and often, domain-specific knowledge in several fields is required to justify choosing an unusual language for a solution, which few developers really have. It is better, especially from a career perspective, to focus on simple languages that are in common use, but then you get Python, so...
I know I've said this elsewhere but I just don't get the Python hate. It's not perfect but so much more enjoyable and pleasant than the even more ubiquitous JavaScript that still really deserves hate (though various successive ECMAScript standards have diminished the need for said hate).
 
I know I've said this elsewhere but I just don't get the Python hate. It's not perfect but so much more enjoyable and pleasant than the even more ubiquitous JavaScript that still really deserves hate (though various successive ECMAScript standards have diminished the need for said hate).
I tried to like Python. I just find it very annoying. It's slow. I don't like the whitespace shit or the import system.
 
I just don't get the Python hate.
I'm more memeing. In context, I positioned Python as "robust and straightforward", "simple", and "in common use". Again, I just professed my love of Ruby, so that I have a preference against Python shouldn't be too surprising. But I REALLY don't like semantic whitespace either. That's pure personal preference.
 
I tried to like Python. I just find it very annoying. It's slow. I don't like the whitespace shit or the import system.
It is slow in the scheme of things but semantic whitespace just makes you do what you should be doing anyway. Why the hate? I'm not aware of any specific criticisms about how Python implements namespaces and importing etc. but I'd like to hear about them.
I'm more memeing. In context, I positioned Python as "robust and straightforward", "simple", and "in common use". Again, I just professed my love of Ruby, so that I have a preference against Python shouldn't be too surprising. But I REALLY don't like semantic whitespace either. That's pure personal preference.
Ruby definitely has a few things going in its favor vs. Python. Ruby was clearly intended to be object-oriented from the start and single inheritance with mix-ins is better than multiple inheritance. In certain respects the standard library is better and there are clear signs of an influence from Smalltalk like how you can send an Integer the #times message to repeat a block that many times. It's also nice to be able to just write out regular expressions in the code.

(Same query re: semantic whitespace)
 
  • Like
Reactions: Vecr
It is slow in the scheme of things but semantic whitespace just makes you do what you should be doing anyway.
Visually I prefer brackets and whitespace as code is just a retarded concept. Maybe if every single text editor represented tabs the same way then sure it wouldn't be so bad.
I'm not aware of any specific criticisms about how Python implements namespaces and importing etc. but I'd like to hear about them.

All of this. Just all of it. Speaking from when I was a beginner. That shit is why I dropped Python for the project I was working on and restarted it from scratch in Lua. I could not figure out how to split my code into multiple source files. I followed every instruction and just could not make it work. It was my first time ever writing anything big enough to split into multiple source files and that shit ended up being a wall for me I couldn't figure out.

I also ended up learning a lot more about Object oriented programming after switching to Lua because I had to make my own classes out of tables and it made me understand how all that shit I was using in Python actually worked. Lua's everything is a floating point number thing pushed me away from that eventually though when I really needed real integers for something.

As far as import systems goes my favourite is D.


It's very straightforward with no fucking around.
 
semantic whitespace just makes you do what you should be doing anyway
I just prefer to explicitly delineate my blocks. I don't mind a little verbosity.

Semantic whitespace feels like $ in Haskell. f $ g $ h x = f (g (h x))

I just prefer brackets. There isn't a lot more here than preference.

I have literally nothing against Python save good-spirited ribbing. I have a Python project published on GitHub.
 
Ruby definitely has a few things going in its favor vs. Python. Ruby was clearly intended to be object-oriented from the start and single inheritance with mix-ins is better than multiple inheritance. In certain respects the standard library is better and there are clear signs of an influence from Smalltalk like how you can send an Integer the #times message to repeat a block that many times. It's also nice to be able to just write out regular expressions in the code.
I don't use ruby often, but I have found it really enjoyable to write when I used it for the odd web scraping thing. It's much less of a pain in the ass to write async stuff with it compared to python. The syntax has a nice intuitive flow to it and I think it does anonymous functions in a nice way. I like unless too.

There's crystal, a cool looking compiled language that has a similar syntax. I haven't messed around with it much, but it looks promising.
 
  • Winner
Reactions: Belisarius Cawl
Visually I prefer brackets and whitespace as code is just a retarded concept. Maybe if every single text editor represented tabs the same way then sure it wouldn't be so bad.
I have heard it said that "tabs are for tabulation and spaces are for indentation"
Semantic whitespace feels like $ in Haskell. f $ g $ h x = f (g (h x))
That reminds me of the pipe operator in R. It goes like so:
The whole point of the syntax is to do something like "do X, then do Y, and then do Z", whereas the syntax of f(g(h(x))) gets everything backwards.
I have literally nothing against Python save good-spirited ribbing. I have a Python project published on GitHub.
Maybe the OP needs to be edited for this reason. People shouldn't post their GitHub because they could end up getting doxed. GitGud might be a nice option with more anonymity.
 
I take it you're automating the use of a website or something like that? One thing I definitely want to say is that you should use a lowercase i instead of I. Python variables in all caps (possibly with underscores) are typically expected to be constants of some kind. i is much more canonical. Also if i not in [1, 2] could be removed if you would just set the range object to range(3, 10).
no it was supposed to be a way to write hello world using MSPaint from the command prompt but that got lost after the edit.
 
LunarVim isn't being maintained, at least for now, because the creator currently has higher priorities. I like extensive book format resources to learn things and found LazyVim for Ambitious Developers quite useful, LazyVim being another configuration framework for Neovim. One thing you gotta know about LazyVim is how to translate configuration instructions from how they typically appear on GitHub to how they work in LazyVim. For example, I use the cyberdream colorscheme for Neovim. The GitHub page says stuff about require("cyberdream").setup() but that's not how it works in LazyVim. Following the documentation here:
http://www.lazyvim.org/configuration/plugins http://www.lazyvim.org/configuration/examples I came up with a plugin ~/.config/nvim/lua/plugins/colorscheme.lua that goes like this:
Wow, thank you so much! Kiwitech Q's is already better at replying in good faith over every other technology question-and-answer websites. Really appreciate you throwing out LazyVim for Ambitious Developers, this is my preferred format of learning this stuff!
I know I've said this elsewhere but I just don't get the Python hate
My first time working with it was for a required cert (I don't use python at all to this day, well maybe to install stuff) but my immediate thought was that it was dirty. Not in the sense that it was trash or bad, but I started with Java as my first language (shivers) and my first thoughts were "Wow, I have to do so much less to do the exact same thing in Java." Syntax was so simple and barebones. I hop between C and C++ now primarily, but I notice when I have to watch newbies who come straight from python I see that sometimes there's just bad practices/not following style guides. Personal thoughts though.
Any of ya'll code for a hobby and as a job? How do you keep the soul-crushing aspect of the job out of your hobby coding?
There's much better programmers than me here who will have better takes or insight, but I've never looked at it this way. I look at programming like working on a diesel engine; I'm more enamored by how things work, how improvements could be made, and what it'll take to put things back together to a functional state so it never has made me feel "fatigued" constantly looking at LoC.
 
Last edited:
Any of ya'll code for a hobby and as a job? How do you keep the soul-crushing aspect of the job out of your hobby coding?
I was never able to balance this sort of thing, so I have never had a formal programming job. Though, I did a number of upper level CS courses in my undergrad for what I thought would be fun and easy credits. Even though I knew and enjoyed the material, it was still unbelievably exhausting at times. The moment it becomes something I'm obligated to do rather than for enjoyment, it immediately becomes dreadful and feels horribly tedious. Any enjoyment I get from programming is from overcoming challenges, solving puzzles, and creating something usable out of nothing. It's a very autistic sort of appreciation for the craft.

It was like that with math to an extent, but I was able to work around the feeling well enough to tolerate writing papers on it for a living. Then again, I no longer do research, so maybe I eventually cracked. Who's to say?
 
Any of ya'll code for a hobby and as a job? How do you keep the soul-crushing aspect of the job out of your hobby coding?
By writing in different languages mainly. My day job is TypeScript/React/Next.js and whatever other web framework that exists for us to host our client's projects on. Also working on hobby projects that have almost 0 overlap with the principles and methodology involved in developing software at your job. I used to work on C# applications and then go home and work on my C# project and just got unbelievably burnt out within just a few months, but after switching it up and just messing around with hobby projects in Python/C++/Rust, things that are disparate to my day job, it felt awesome again.

Now that I'm working in TS I've gone back to writing hobby projects in C# lol
 
  • Feels
Reactions: Belisarius Cawl
Any of ya'll code for a hobby and as a job? How do you keep the soul-crushing aspect of the job out of your hobby coding?
Being able to architect and design your own personal projects from start to finish instead of being delegated into tedious bullshit on top of mountains of technical debt. Like recently I've been teaching myself Rust by creating a little file server. I've actually come round to Rust a lot being a systems specialist (working with windows C in my day job).
 
I am thinking of writing a beginner's course to programming which teaches solid fundamentals, beyond just language constructs, but actually teaching the "why" behind the "how". That being said, I'm undecided about a couple things: language, and hosting.

For language, I would like Lua because it's easy to understand and very DIY, but I think Go would be better since it's more applicable to real world scenarios. However, I'm unsure.

For hosting, I'm clueless. I'd like to post it somewhere that's neutral and resilient, since I don't necessarily want it to be a "kiwifarms guide". I want it to be able to be posted without the forum's reputation following it.

My curriculum would be:
  1. Behaviour: Sequence, Selection, and Repetition
  2. State: Data Modelling and Stateful Programming
  3. $language syntax
  4. CRUD; Execution; Migration: CRUDE/M
  5. Thinking In Sub-Systems
  6. Algorithms And Big O (not my strongest point, will probably co-opt a guest teacher)
  7. Creating Resilient, Correct Software (tdd/bdd)
  8. Version Control Systems
There's probably stuff I'm missing, any suggestions? I know for a fact I'm missing OOP and Data Structures, but I don't actually think those are important to programming on a conceptual level: to me they are more advanced concepts. One is a particular aspect of data modelling. The other is more related to the physical realities of computers. I think both would be fitting of a follow-up post.
 
  • Informative
Reactions: Belisarius Cawl
Maybe the OP needs to be edited for this reason. People shouldn't post their GitHub because they could end up getting doxed. GitGud might be a nice option with more anonymity.
Remember to also change your git username & email if you want to be anonymous or pseudonymous.
A good way to do this is by having multiple git identities (random blog post about it).
Code:
# ~/.gitconfig
[user]
    name = Real Name
    email = <realname@gmail.com>

[includeIf "gitdir:~/chudware/"]
    path = ~/.gitconfig-chudware
Code:
# ~/.gitconfig-chudware
[user]
    name = Chud
    email = <chud@nigge.rs>
If you are really schizophrenic you might also want to change your timezone, as it is included in every commit.
 
Remember to also change your git username & email if you want to be anonymous or pseudonymous.
A good way to do this is by having multiple git identities (random blog post about it).
Code:
# ~/.gitconfig
[user]
    name = Real Name
    email = <realname@gmail.com>

[includeIf "gitdir:~/chudware/"]
    path = ~/.gitconfig-chudware
Code:
# ~/.gitconfig-chudware
[user]
    name = Chud
    email = <chud@nigge.rs>
If you are really schizophrenic you might also want to change your timezone, as it is included in every commit.
I just keep the global git config's name and email blank so that I'm forced to set it individually per project/repo. Shell history makes this fairly easy to do repeatedly, especially with use of some semicolons to make it a one-liner like this:
Bash:
git config user.name 'y a t s'; git config user.email '140337963+y-a-t-s@users.noreply.github.com'
The point is to make setting the values a deliberate and informed action where I have to see what I'm setting it to and hit Enter if it looks fine. So I avoid setting it as an alias or similar.

The timezone thing is a good note. A lot of people aren't even aware the offset gets saved in the logs. Pretty easy to catch people in wacky timezones like in Newfoundland.

There's probably stuff I'm missing, any suggestions? I know for a fact I'm missing OOP and Data Structures, but I don't actually think those are important to programming on a conceptual level: to me they are more advanced concepts.
I argue data structures—at least the basic ones like linked lists—are important for programming conceptually. There are plenty of ways to create and use data structures that don't go deep into OOP territory with class methods and shit.
 
Last edited:
I am thinking of writing a beginner's course to programming which teaches solid fundamentals, beyond just language constructs, but actually teaching the "why" behind the "how". That being said, I'm undecided about a couple things: language, and hosting.

For language, I would like Lua because it's easy to understand and very DIY, but I think Go would be better since it's more applicable to real world scenarios. However, I'm unsure.

There are too many beginners courses already, what's more needed is intermediate level. Focusing on the "why" probably lends itself more to intermediate anyway, so I would recommend you lean hard into that, rather that drowning in a sea of Hello World guides.

Language choice should probably be guided by your target audience and really your labs, since if you're going to do something intermediate there needs to be a project that keeps people engaged and wanting to use your shit instead of the other 10,000 resources online. Lua could be a good choice for that, if you're willing to go the Roblox route as a teaching/learning vehicle. I happen to think Roblox is gay, just using that as an example of how a follow-along type project with something tangible can be a great vehicle to hone Lua scripting skills at least, and I could see that working as an overarching theme to make your guides/courses standout somewhat.

Depending on how much effort you're willing to put into it, you could have an actual proper course(s) on Teachable (or Udemy/Coursera if you're an Indian peasant) that earns you cash.
 
Back