Where should I start?

I think this thread has outlived its purpose a bit. I think I’d get analysis paralysis with all this info. If I just wanted to know where to start.

dont ever volenteer or look @ php… esp as a new web developer

learn reactjs w/ server and serverless…

.net core 3.x is cross platform if you want to learn and stay on linux

majority of big businesses will be using Microsoft technology.

just pick a problem, learn the concepts and ask questions… dont get caught up on the language fight… use the tools that the team members use or figure out a better solution.

Python for automation for sure, depends exactly what you want to automate of course, but python is easier to learn and faster to develop in. There are a lot of useful open source packages for python that can be helpful.

If you get along with python then alongside it javascript is really useful for building frontend web interfaces that can work with python.

I reccomend coding challenges to get to grips with the language. There is codingbat, learnpython, exercism and pybites (it is paid but has some free stuff too). Then of course work on projects.

As people have said learn bash as well and powershell.

Python lacks fundamental components of modern OOP languages like abstracts, generics/templates, and interfaces. These are in php7 out of the gate.

Understanding these concepts has been very important to my career development.

You could take the time to learn all the different primitive types, pointers, how arrays work under the hood, etc in C++ or you could use php7, which is interpreted and gradually typed, which frees you up to focus on “how” to properly program rather than all the nuts and bolts.

I would always suggesting learning php7 before learning python simply because of this.

As I mentioned, learning proper Software Engineering principles and concepts like interfaces, design patters, favoring composition and loosely couple components has been invaluable to my career.

Good luck!

cotton

I want to learn to code

Great

learning to code in one or two languages I can satisfy my creative desire to both automate my life and create things from scratch.

You are likely correct

I’ve heard good things about python but figured someone looking from the top down might have some insights into whats good

I started with Python, more on that later.

.

I’m a CS student so not very qualified to talk about employment but I enjoy programming and have been doing it as a hobby for the best part of three years, people who are serious about programming know and have experience with multiple technologies so your intention of “learning to code in one or two languages” already puts you on the right track.

Learning to program is very much a journey and a long one at that, everyone has a progression of using various different technologies, be these operating systems, text editors, programming languages or ideologies. Currently I am writing programs in C, using Neovim on Arch Linux. It probably isn’t a surprise to you that I didn’t start my journey with this setup and I’m sure I won’t end it with this one. I started on Windows 10 using Python and the IDLE development environment which comes with Python, when I started out using these I thought they were amazing and if you asked me if I saw myself ever using anything else I would probably have told you no. Now if you asked me about Windows 10, Python and IDLE I would describe them all as steaming piles of garbage, this is not to discourage you from using these technologies, I think you should as they can serve as a good launchpad, but rather to give you perspective on them and hopefully to put the idea in your mind that you shouldn’t stick to these things but progress onto others because there are certainly better things out there.

My disliking of the software mentioned above is comparable to a musician describing their first instrument as terrible; they’re probably right but if they hadn’t have started with said instrument they likely wouldn’t have started at all or, at least, they would have had a harder time learning using something more advanced from the start.

My progression from the beginning to today, at a high level, looks like this: Python/IDLE/Windows -> Ruby/Atom/Linux -> C/Neovim/Linux. I say “high level” because to explain it in full detail I would have to talk about the different text editors, programming languages, programming paradigms, and operating systems I used in-between these as well as the various types of software I was interested in making and the opinions I formed on various things, for example: as of today I strongly dislike object orientated programming, IDEs, webdev and C++ but a year or two ago I thought highly of them, possibly because I didn’t understand them yet so thought they were advanced and therefore good (or something like that).

As a new programmer I advise you to try new things and always question the norms, ask yourself “is this thing really good? Why?” and if you can’t find a clear answer to either or both of those questions look for something for which the answers to those questions are positive. Oh and always remember: no matter what anyone tells you, programming is not math.

TL;DR Learn to program, never stop learning to program, don’t get stuck in a mob mentality, try new things and programming is not math.

Hello again everyone who gave me some guidance originally! I ended up having memory issues with my old PC and kinda jumped the gun on buying a new mobo/cpu because I couldn’t risk down time for multiple reasons. Now I have two working PCs after getting my DDR4 RMA’d back to me with a replacement 40 days later.

So I’ve been resetting up python on my new PC and I want to try doing a VM with linux running python. So is Hyper-V the best way to go about this? I remember a decade ago or so I would dual boot to get a linux and windows OS. Is that no longer the best way or just a different way of doing the same thing? Any recommendations?

I know Wendell talks about Virtual Machines a lot and I have a 3900x now so I want to put it through the paces. :smiley:

1 Like

If you have Windows 10 pro or enterprise you can use WSL. Hyper-V is gated by license too so you are gonna need something > win 10 home either way if you dont now.

I have W10 Pro, I’ve heard Level1 mention the new WSL stuff and I watched that video with one of the co-developers of it? Are there any limitations to doing WSL versus linux or?

In WSL 2 there should not be any limitations besides not really having a Linux desktop (at least not that I´m aware off). In WSL 1 systemd didn´t quite work and you could not run some services like docker in WSL, but you could run the CLI and connect to another docker engine on your Windows system, or another system. But since WSL 2 you can pretty much do anything as there is a full Linux kernel running in hyper-v.

It has some neat integrations. Like your Windows drives are mounted right off the bat and when you type "code " anywhere in WSL it opens vscode on your Windows machine. even if the path is on your Linux file system. You can work off it just fine, without needing to setup SSH.

Very cool, okay. Is WSL2 still apart of windows insider program? I don’t think I have it on my windows yet?

Yeah, it’s available as of Build 19041. Docs can be found here.

It’s not quite there yet, but soon you’ll actually be able to run some GUI apps using Wayland!


I’d echo Python as a good starting point, or Go.

If going down the Python route, Windows is actually quite well supported, and Visual Studio has pretty great Python support (and VS community edition is free). When you get past basic “hello world” type projects, I’d advise looking into pipenv pretty quickly as it’ll alleviate a lot of headaches you may run into otherwise.

Even with wsl 1, you can run apps via xming(or similar) and ssh x11 forwarding. Not that it x11 forwarding is that great of an experience but works well enough for basic programs.

Yeah, I’ve seen that done but never tried it. Having something that seems to be actually supported by MS is likely going to be a slightly smoother experience (or at least I hope it is…). I’m more looking forward to the new Docker Desktop experience though, rather than running a Hyper-V VM. I’ve not yet built up the courage to switch my workstation over to insider builds to try it out though.

Same here, no way I would go to insider on any machine that I need to actually do stuff on.

I am also not sure if I will enable wsl2 when it comes to stable, as I don’t think I could give up Virtualbox.

I moved from VirtualBox on Windows to all-in on Hyper-V and a separate Proxmox server about a year and a bit ago. Only problem I’ve had is that I can’t persuade DragonflyBSD to boot on Hyper-V no matter how hard I try. Otherwise, it’s been a very smooth experience so far.

I’m still stuck with VirtualBox on the Mac though…

I haven’t gotten along with hyper-v in the past, so maybe it is time to give it a good try again.

1 Like

i suspect that latency adds up as you work on larger and unpolished stuff in python but get faster when you get more control over it in C++.

Apparently not. :wink:

I was catching up to this thread and noticed this point was being made and got a “somebody’s wrong on the internet” itch.

Python doesn’t have a name for those things, it doesn’t really need them considering its “dynamic typing” and “dynamic dispatch” everywhere. It’s definitely flexible enough to use in same use cases.

The problem is usually once you start approaching million lines of code, static analysis tooling that normally easily works with c++/go/java starts to squeak.

But, it’s a great first language.
More so today than 10 years ago.

I’m still reviewing Python/c++ code from people who learned programming in Java, and haven’t done much else , oh the horrors. Those Python modules containing abstract base classes with a single abstract method called Run… wtf, just write a function. Use mypy if you want static type analysis.

While looking into Python (what I intended to play arround with), I found Julia which is “python-esk” in a way, but much to my liking, performance-first.

1 Like

Imagine never understanding the concept of indirection because it was abstracted away from the programmer.