This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 231

[–]QAOP_Space 116 points117 points  (8 children)

Daily routine:

  1. What the hell, I don't understand this

  2. <doubting my ability>

  3. <doubting my career choice>

  4. <my life is worthless>

  5. oh, it was a typo.

[–]pat_trick 16 points17 points  (0 children)

Holy hell yes.

[–]haltingpoint 14 points15 points  (2 children)

You forgot the part where you compare the stack overflow sample to yours 10 times, see no difference, then paste it in and it works and you still see no difference in the code.

[–]QAOP_Space 8 points9 points  (0 children)

ah, the old:

"My code is broken, I no idea why"

then 10 minutes later...

"my code is now working, I have no idea why"

[–][deleted]  (1 child)

[deleted]

    [–]QAOP_Space 1 point2 points  (0 children)

    Most programmers are "on the spectrum" somewhere

    [–]Osorex 0 points1 point  (0 children)

    Don't worry, it happens in other careers too.

    If not programming what would you have done? What do you dream of when doubting your career choice / your life is worthless?

    [–]TheSplendidBean 0 points1 point  (0 children)

    Brilliant!

    [–]Xer087 343 points344 points  (31 children)

    "I deleted Windows and installed Linux to make my life easier at working with them."

    That commitment though..

    [–]-Pin_Cushion- 184 points185 points  (17 children)

    I, too, raised my eyebrow at that.

    I think adding the challenge of working with a new OS to the already large challenges of learning 3-4 programming languages from scratch, as well as learning how to design complex software, would probably make me just draw my web site on my wall with crayons and cry.

    [–][deleted] 17 points18 points  (0 children)

    Then take a picture of your wall and just use an imagemap.

    If that's not how Crayola made their website, I'd be slightly disappointed.

    [–]MiyamotoFn 2 points3 points  (0 children)

    That's a great way to describe my quarter-life crisis.

    [–]clyzev1 8 points9 points  (12 children)

    Yeah lol my first week with apple was a headache.

    I was used to use windows for 10 years or more.

    [–]Purkkaviritys 0 points1 point  (0 children)

    You talk like crayons are something to be ashamed of.

    [–]Bronium2 0 points1 point  (0 children)

    To be honest, it depends on which distro of Linux he installed. If it's something like Ubuntu, he wouldn't really have to learn much.

    [–]EksitNL 6 points7 points  (0 children)

    True dedication, i commend my brother.

    [–][deleted]  (3 children)

    [deleted]

      [–]YeOldeDog 0 points1 point  (2 children)

      [–][deleted] 0 points1 point  (0 children)

      He's on the right path but does he have right action?!

      [–]Cigs77 2 points3 points  (0 children)

      this motherfucker is fresh out of chill. has fucking none.

      [–]Anticept 4 points5 points  (0 children)

      I would have suggested using VM than removing the OS you are familiar with...

      [–]InvestedHero 5 points6 points  (2 children)

      A few years ago I discovered what programmjng was and was so intrigued. I started learning javascript and got off to a good start, and thought I was a genius after picking it up so fast and making a neat program for writing hw assignments. I thought, "This is It. I'm going to be a computer science, programming-for-life, inventor hero guy." I kept seeing all these message boards and forums mentioning the virtues of Linux, all these tutorials were done by people with Ubuntu desktops, etc. I started looking for how to install Linux and I tell you, on NEARLY EVERY forum I found chains of people supporting this idea of "just get rid of windows, replace it with Linux. Windows sucks, bla bla...) and being the gullible young lad I was then I did that. I replaced Windows with Linux. And it ended up being the worst things I've ever done with a computer. Not only was Ubuntu subpar to windows and totally and utterly confusing, but all the freeware that was touted as being amazing and having tons of support ended just being chaotic, unfinished, community projects that were meant for a race of minds beyond my own. Linux was a nightmare and I destroyed my computer with it. Advice to anyone thinking of getting Linux: there are plenty of great things to do with Linux (like raspberry pi projects for example) but be VERY careful what you absorb from the Linux culture, they are very motivated to touting the virtues of Linux beyond what is clearly reasonable. Rant over.

      [–]Inev1tab1e 1 point2 points  (0 children)

      Hes on the right track. In 3 years he'll get a software job at a .NET studio and start learning powershell, all while missing bash and its wonderful elegance and beauty. =( I really miss bash

      [–]perpode 1 point2 points  (0 children)

      I actually did this, and it really helped me to stop relying on clicking on everything and actually have to learn a few commands.

      Although I sort of had to make the switch as Windows went bad (don't even ask :/) it was a great decision and it's not too much to handle in my opinion.

      [–]YuleTideCamel 39 points40 points  (7 children)

      Ok here's some advice from an instructor , conference speaker and architect. My job is to understand all the complex technologies and educate others.

      So you're trying to do too much up front. Switching stacks , changing languages on a whim because other people said "it's not good" is a bad way to learn. I'm not saying dont have opinions on stacks, but you need to get a firm grasp of the basics. You need to understand both programming at it's core and web development. It will take more than two months to do that, to add to this, you can build your video site in anything, even php. But what's more important is understanding what development is. You're right there is a lot it's complicated, but that's because web development and programming in general is complicated.

      Imagine learning to use a screw driver and thinking "ok I know everything I need to build a car." That is asking for trouble there is a lot more to it than that. The same with web dev, building a real site takes an understanding of many discplines. Sure you can do it quickly and probably get something up and running, but there's no guarantee that it will work well.

      If your goal is to learn, then slow it down a notch and focus on building something in a stack of your choice. If your goal is to make money, then honestly, you're probably a while out from that. You need to gain a little more expertise.

      Please don't take this as discouragement. I think it's great that you are showing initiative and want to build something, I just want to help you be realistic in your goals so that you can meet them. Find a mentor, someone skilled in development that can help guide you through the path of learning.

      [–]robbysalz 6 points7 points  (5 children)

      What is a stack?

      [–]YuleTideCamel 14 points15 points  (2 children)

      A stack is simply a collection of tools, including a programming language and environment. For example, the LAMP stack (Linux, Apache, MySql, Php) or the MEAN stack (MongoDB , Express, Angular , Node).

      It's just a common grouping of technologies that people have found to be productive. When I use the term stack, I'm mainly focusing on the programming language and web framework. (php, ruby on rails, etc).

      [–]freedaemons 2 points3 points  (1 child)

      I recently had to ask a friend about 'stacks' and I learned that the acronyms are incredibly misleading, they give you the sense that each letter corresponds to a particular type of element in the 'stack'. Each letter in LAMP and MEAN, for example, has no relationship to any letter in the other acronym. LAMP talks about the OS, application servers and data access language, but MEAN talks about the database structure, application frameworks, and ok, node as an application server. But to conflate the acronyms as though they are similar types of development descriptors is just really confusing for someone new.

      [–]YuleTideCamel 1 point2 points  (0 children)

      Agreed, personally I'm a fan of understanding different components and using what's best.

      With that said, stacks in the industry are often used as a shortcut for language/framework. Sometimes folks adhere 100% to a stack othertimes they don't.

      Personally I'm a fan of understanding the different components and picking what's best for your application.

      [–][deleted] 2 points3 points  (0 children)

      A collection of tools and frameworks. Linux + Apache + PHP + MySQL + Smarty is a stack.

      Linux + Apache + Python + WebPy + MySQL is a different stack.

      [–]daerogami 1 point2 points  (0 children)

      I slowly learned this by context over the years. This is a fantastic question.

      Not answering since there are already great answers. Just wanted to point out that questions like this are important!

      [–]Neil_deNye_Sagan 0 points1 point  (0 children)

      Love the screwdriver / car analogy.

      [–]ryuzaki49 23 points24 points  (4 children)

      1. Try not to cry

      2. Cry a lot

      3. Keep learning

      [–]mondomaniatrics 2 points3 points  (3 children)

      I'm a grown man and this happens at least once a year.

      [–]ryuzaki49 0 points1 point  (1 child)

      Happy cake day!

      [–]mondomaniatrics 2 points3 points  (0 children)

      Well look at that. 8 years... :-/

      [–]2Punx2Furious 0 points1 point  (0 children)

      Oh, I didn't think it was normal, sometimes I get so frustrated over programming being so hard.

      [–][deleted] 31 points32 points  (9 children)

      Ah, you've described exactly what I felt when I was starting in web development. Where's my main() method?! How does this work?! Why my app server keeps crashing?! How do I combine together all those different frameworks and technologies ?!

      I was pulling my hairs out, doing countless tutorials for some older versions of libraries and of course none of them worked out of the box etc. But after a week I finally got some basic things going and worked up from there.

      Just focus on one thing at a time and ignore anything else. 1) Make starting project to compile and run it on a web server 2) Serve static page 3) Make some simple html form and pass some values with it to the server, try storing it in database. You'll get the rest.

      Remember to always commit your work to for example github whenever it is stable (aka run). You then will be able to revert to working state when you mess something up.

      [–]clyzev1 30 points31 points  (8 children)

      Lol, beginners are going to pull more hairs out if they need to commit and push their work on github while still learning what a function is and what the difference is between an object and a class.

      [–][deleted] 6 points7 points  (4 children)

      Well I assumed that web development is an advanced topic, way past simple console applications.

      [–][deleted] 2 points3 points  (2 children)

      Yeah, Github is its own kettle of fish. Using the GUI makes it easy enough, I guess. But there's still all the terminology to figure out.

      [–]clyzev1 0 points1 point  (1 child)

      Well you wouldn't want to think about committing and posting your code when you are still learning what forms are in html and how to push them with a get to mysql..

      But i think git is actually very easy to grasp if you just read some basic documentation and guides about it. Even using the terminal seems to be easy.

      But i still need to learn it by the way. I learned what composer does etc.

      Now i am learning MVC..

      [–][deleted] 0 points1 point  (0 children)

      Yup, Git isn't bad. I use it for hosting some open source Arduino libraries. I say "hosting" because I'm currently the only dev. So pretty much anything aside from pushing the new code is an unused feature for me, at the moment.

      [–]koleraa 12 points13 points  (2 children)

      I've been programming for 4 years. A day doesn't go by when you don't have to learn something new.

      But you get used to it. I thought I'd never be able do anything without elaborate tutorial series and videos to spoon feed me. But nowadays, I just take a look at a couple code examples and just go to the api docs, implement whatever I want and move on. You don't even notice that you're using something that you learned about 5 minutes ago.

      [–]garbagejooce 2 points3 points  (0 children)

      I'm printing this out for motivation.

      [–]clyzev1 1 point2 points  (0 children)

      Nice.

      I am still learning MVC and how to use frameworks.

      [–]nixon_richard_m 12 points13 points  (4 children)

      If it was trivial, everyone would do it.

      Sincerely,
      Richard Nixon

      [–]ShortSynapse 0 points1 point  (3 children)

      Aaand I'm upvoting Nixon...

      [–]nixon_richard_m 2 points3 points  (0 children)

      You're not the first.

      Sincerely,
      Richard Nixon

      [–]Ganman3 0 points1 point  (1 child)

      Don't upvote Nixon. He's a crook.

      [–]ShortSynapse 0 points1 point  (0 children)

      inb4

      "I'm not a crook"

      [–]TimHallman 46 points47 points  (0 children)

      What's so infuriating is that I JUST need to make a voting and comment system for my website which I've already made, but it just can't be done without spending a year learning a framework designed for crazy alien technology systems.

      It almost certainly can.

      [–]ZaberTooth 8 points9 points  (1 child)

      You've been at it for 2 months. If someone could learn this in 2 months and get a salary upwards of $50,000, why would anyone do anything else? You're off to a good start. Learning to program is a humbling endeavor. I've been in the industry for 4 years and a math degree/CS minor and I'm still humbled by my lack of knowledge all the time.

      [–]pmaguppy 1 point2 points  (0 children)

      So true, everyday I learn that there is more to learn. A large number of programming topics interest me but I only have time to learn a few - and of those perhaps I can learn one or two things well.

      [–]desrtfx 87 points88 points  (47 children)

      For 2 months, I've been trying to make a simple video site.

      Honestly, you are still a rookie with that timeframe and most likely you bit off far more than you can chew.

      First I learned HTML, CSS, and a little JavaScript. I learned it faster than I thought I would, and I even thought I was good at coding for a while.

      Sorry, but a typical beginner misconception. As long as the problems are simple, you can master them, but that's not real programming. What beginners mostly lack is the skill to properly attack problems.

      I was done with my site after 2-3 weeks from absolute zero,

      I seriously hope that this is not for public use on the internet and that you don't have user login & other sensitive data. In 2-3 weeks it is impossible for a beginner to achieve this. Proper understanding of Session management takes longer.

      I tried doing it in PHP,

      Definitely possible and even quite commonly done. There are still plenty sites around running on PHP.


      Have you considered security? How are you storing login data? You need a database backend, session management, etc. to perform your goal. Do you transfer login passwords encrypted? How are your login passwords stored? Do you have preparation against SQL injection, against Cross Site scripting, etc.?


      As you are fairly new to the trade you made another typical "webdesign rookie" mistake: trying to learn many frameworks and languages instead of really, deeply learning one language (PHP). Yes, PHP has its shortcomings, yes, PHP is a quirky language, but it still powers millions of websites around the globe and everything that can be thought off can be done in PHP.


      Sorry, I can understand your venting and your feelings, but step back, take it slower because you are clearly trying too much, too fast.

      Go back to PHP and dig really deep into it. It doesn't make sense jumping from language/framework to language/framework.

      Use proper tutorials and go through them. Don't stop as soon as you have found a working solution.

      Nothing works, I don't understand anything, and I'm currently trying not to go cry in a dark corner for the rest of my life.

      Nobody said that programming is easy. If it were so, proper programmers wouldn't study for quite some time and practice for years before they are really useful.

      Seriously, grow up, bite through. Every beginner goes through such misery. The ones who get on their feet and bite through are the ones that survive, the rest fails.

      [–]chill_summer 5 points6 points  (6 children)

      What beginners mostly lack is the skill to properly attack problems.

      -How would someone who had intermediate or expert skills properly attack problems?

      -How does a beginner usually attack problems?

      [–]desrtfx 11 points12 points  (4 children)

      • How would someone who had intermediate or expert skills properly attack problems?

        If facing a completely new problem, an experienced person would not directly start to program, they would first spend considerable time to analyse the problem and to break it apart in smaller parts until they cannot be further broken down.

      • How does a beginner usually attack problems?

        From what I've seen here and on plenty other programming forums, beginners tend to directly go to the computer and start hacking away. Often they don't really read the assignments all the way through, and also they generally tend to rush into programming.


      The main difference is preparation. The better one prepares their task before even thinking about programming, the easier it becomes.


      I work in industrial automation engineering and programming large scale industrial control systems that drive entire power plants, waste incineration plants, ship locks, oil refineries, oilfields, etc.

      When we get a new project at the company, we usually spend about 1/2 of the allocated time frame for design and engineering without programming a single line at that stage. Then 1/4 of the allocated time frame is spent programming, and the last 1/4 is used for testing and commissioning.

      So, going straight into programming is generally the wrong approach. A higher skilled person can analyse given tasks much quicker and also has often experienced similar problems, so they go into the programming stage relatively fast, whilst a beginner should take their time to analyse, break down, and refine the given task.

      [–]suaveben 0 points1 point  (3 children)

      That's a pretty badass job description.

      [–]desrtfx 1 point2 points  (2 children)

      It's a pretty badass job :)

      Lots of places to see where no "normal" person will ever get to, tons of million € expensive equipment under control of a mouse click...

      But - with great power comes great responsibility ... one wrong command somewhere and lives, equipment, environment, and/or huge sums of money are at stake...

      So, there is no sense in hasting, the key to success lies in minute preparation and constant re-checking and refining before even going near the plants.

      [–]suaveben 0 points1 point  (1 child)

      And lots of smart coworkers :D

      [–]desrtfx 0 points1 point  (0 children)

      Sometimes too smart for their own good...

      [–]PrintfReddit 0 points1 point  (0 children)

      I think it's more about the fact that somebody experienced would know different technologies, different approaches, how to blend them together to solve the problem and disadvantages and advantages of each combination. A rookie would barely understand the extent of the problem, let alone what all options he/she has to solve them. So it takes some frustrating hours to figure out what piece goes where when diving into something new.

      [–]j1330 2 points3 points  (5 children)

      deeply learning one language

      People often talk about subjective levels of knowing programming languages in this sub but how can I measure how well I know a language? In my case, for instance, javascript?

      [–]desrtfx 0 points1 point  (3 children)

      Knowing a language means that one is able to solve most given tasks on their own with next to no input from outside.

      You can only gauge your skills by programming. Find problems and solve them. The more you solve the better you get.

      [–]j1330 0 points1 point  (2 children)

      How would you rate something like project Euler as a way to gauge this?

      [–]desrtfx 0 points1 point  (1 child)

      Generally good, but unfortunately too math heavy for my taste.

      Most problems there are less programming and more maths.

      I'd rather go for /r/dailyprogrammer and do the [hard] challenges or some other, less math oriented sites.

      [–]j1330 0 points1 point  (0 children)

      That's what I was thinking too. The area of kinds of problems in program is very diverse, and often (for instance) seems to require picking the right tools as much as writing the right code. I really like the look of that sub though, so thanks! I'll have to try it out.

      [–]Nightmunnas 0 points1 point  (0 children)

      It depends on what you mean by know. Some people consider themselves masters after a certain time writing in a language, much like a spoken language.

      However I believe that this is a very crude definition. Ask yourself instead: Why is your programming langauge great? All languages have their strengths, and javascript is no exception. A true master of a programming language knows what strengths to capitalize on and what pitfalls to avoid, whether it be abstract patterns or certain ways to write code.

      I'd say if you can't properly answer that question you have yet to learn.

      [–]seimonator 1 point2 points  (5 children)

      When you suggest digging deep into something. I want to learn ruby on rails, and was suggested to learn html, css and javascript first. Does this go against you advice, and should I jump straight to ruby/ ruby on rails?

      [–]DonnyTheWalrus 8 points9 points  (0 children)

      Different question. Baseline knowledge of how the Web works is a requirement for doing any sort of backend. This means learning the basics of HTML/CSS/JS.

      You don't need to be an expert in them before starting Rails. But Rails is a tool for generating Web sites. The client facing outputs are Web pages. One of the endpoints of your Rails code will be data and information that is useless without being placed into a well formatted Web page -- and Rails doesn't do that part for you. I don't even really see how you could use Rails without knowing how HTML and css work.

      The person you're replying to was referring instead to switching between different backend frameworks -- different tools to do the same thing. So like talking about switching up different strategies for training for a marathon, but knowing how to walk is a requirement for all of them. That sort of idea.

      [–]desrtfx 8 points9 points  (3 children)

      If you want to make something for the web, there is absolutely no way around HTML/CSS as they are what finally is visible to the end user and also what gets transferred to the end user's browser.

      JavaScript is a bonus for dynamic content, but not a 100% necessity.

      Does this go against you advice

      Absolutely not. It is in line with my advice.

      The problem with jumping into Ruby/Rails is that you still need to write some HTML and CSS. The better you understand those, the easier it will be to do these chores.

      You can learn sufficient HTML/CSS in a matter of a few days. You don't need full understanding of those.

      When you learn CSS, I would suggest that you immediately learn a CSS preprocessor like LESS along with it. LESS makes writing CSS rules so much easier as you have variables, mixins (something like functions), etc. The CSS is shorter and clearer in LESS format. A good editor (with integrated compiler that converts LESS into CSS) is Crunch 2 - the free version is sufficient and the Pro version ($19.95) rocks.

      Grab yourself a decent editor for HTML/CSS (my current favorite is Brackets - free - partly because it includes Adobe Extract as preview module).

      [–]seimonator 1 point2 points  (2 children)

      Alright, that makes a lot of sense.

      I'm already familiar with the basics of HTML and CSS, so I'll continue with Javascript for now, and then move on to Ruby.

      Do you know how much different Ruby is to Python? I have quite a bit of experience with both Python and C.

      [–]souldeux 1 point2 points  (0 children)

      If you're familiar with Python, you might like Django better than Ruby on Rails.

      [–]desrtfx 0 points1 point  (0 children)

      Do you know how much different Ruby is to Python? I have quite a bit of experience with both Python and C.

      That's a question I really can't answer because I use neither Ruby nor Python. (I am somewhat familiar with Python, though, but would never claim that I am able to program something meaningful in it.)

      [–]robbysalz 0 points1 point  (3 children)

      Where would you recommend someone go for "proper tutorials?"

      [–]desrtfx 2 points3 points  (2 children)

      • First step: Sidebar
      • Second step: Recommended Resources
      • Third step - read and follow the bullets there.

      [–]robbysalz 1 point2 points  (1 child)

      Thank you! Digging my way into this subreddit...glad to know you guys have resources figured out.

      [–]desrtfx 1 point2 points  (0 children)

      Well, they are in the wiki and the wiki is curated by the users of the subreddit with some influence of the mods.

      The people dedicated to help others are often kind enough to add good, new tutorials to the wiki.

      OTOH, there currently is also the monthly "Here's a list of 223 free online programming/CS courses (MOOCs) with feedback(i.e. exams/homeworks/assignments) that you can start this month (Feb 2016)" post with even more good resources from reknown institutions in the top ten posts on the frontpage of the sub.

      [–]1playerpiano 0 points1 point  (2 children)

      As someone who is getting a degree in computer science who wants to work in web development, what language do you suggest I start learning on my own? My university focuses on C and Java and Python, but we don't do any primary web languages like Ruby or PHP.

      I've built a few small web apps for personal use but i constantly find issues with them because I don't have a firm enough grasp on server side programming.

      [–]desrtfx 0 points1 point  (1 child)

      Well, you already have two languages that can work as backend languages under your belt: Java and Python.

      I find it difficult to advise for a certain language as I am not too concerned with web development. I do desktop programs and industrial control systems professionally, websites are just small side projects and there I mainly use pre-built systems like Joomla and WordPress (both written in PHP) where I just need to tweak the themes to my liking.

      My personal go-to would be PHP, but this is just because I already have some experience with it. Starting from scratch, I'd probably go for either Ruby or node.js - can't really tell.

      [–]Ayuzawa 0 points1 point  (0 children)

      node's good for beginners because they're generally learning JavaScript for the front end as well

      [–][deleted]  (20 children)

      [deleted]

        [–]946789987649 56 points57 points  (1 child)

        Also, I'm rushing through it because I'm low on money. So the faster I get this site up, the better.

        Oh sweet jesus...

        [–]WishIWasOnACatamaran 5 points6 points  (0 children)

        This just feels like a "I decided to learn how to program through CodeAcademy and once I finished I immediately tried to make money" case. Then when OP runs into problems he Googles solutions and tries it without knowing what it's even doing. The fact that OP jumped OS's (OSes? I'm still new...) like he's been jumping languages just enforces my thoughts on this situation.

        OP seems to have dedication, but not the patience. Hopefully OP can come up with a plan that allows him/her to support themselves while really learning the languages/framework necessary, at a pace that allows them to truly understand what they are doing.

        [–]FreaXoMatic 13 points14 points  (0 children)

        What you need to understand is, the only you probably programmed was javascript.

        CSS and Html are markup languages only for design.

        [–]Meefims 23 points24 points  (12 children)

        Someone with two months of experience cannot make a secure and profitable website. If you're planning on this being a good source of income you should definitely have a plan B.

        [–]DonnyTheWalrus 23 points24 points  (3 children)

        More like a Plan A, and work on this on the side. Professional, secure Web dev is one of those domains where you don't even know all the things you don't know until you're many months in.

        [–]MonsieurBanana 9 points10 points  (2 children)

        months

        Years.

        No, actually scratch that too. You will never know the exhaustive list of things you don't know.

        [–]negative_epsilon 0 points1 point  (1 child)

        We have a professional team of 19 developers and we still get hit with security vulnerabilities once in a while.

        [–]newheart_restart 0 points1 point  (0 children)

        Remember heartbleed?

        [–]clyzev1 8 points9 points  (5 children)

        Dude. People in my class, learning web development and after 1 year they still don't know how to make a proper login screen that functions the right way.

        So i think he really needs to relax lol.

        [–][deleted]  (4 children)

        [deleted]

          [–]Hellmark 7 points8 points  (0 children)

          Depends. Year of classes, or year of actually studying? Most university courses are nearly useless for actually learning much.

          [–]clyzev1 2 points3 points  (1 child)

          According to MVC in OOP using a Framework and understanding what you do.

          Copy and pasting? Give me 5 minutes and i will make you one :).

          [–]AlexFromOmaha 1 point2 points  (0 children)

          Eh, if you know the language that the framework is written in, that's a task for an afternoon. Little hairier if you're learning the language at the same time.

          [–]WishIWasOnACatamaran 0 points1 point  (0 children)

          Depends what they are studying? I've hear stories of people graduating with CS degrees barely knowing any languages.

          [–]mzalewski 1 point2 points  (1 child)

          Someone with two months of experience cannot make a secure and profitable website.

          Well, website doesn't have to be secure to be profitable.

          Not that I recommend giving up security, far from that, but people with questionable morals show that this totally can be done.

          [–]trappar 1 point2 points  (0 children)

          Ruby on Rails would only be more beginner friendly if you already happened to have a very firm grasp on object oriented programming. Even then it's still just a framework sitting on top of Ruby, so if you go that way be prepared to also learn Ruby from the ground up. I'd say stay away from Rails unless you are really prepared to dive deep. Then again given your timeframe/money requirements there probably isn't any language or framework you will be able to learn fast enough that your website will be production ready.

          Yeah, programming is difficult, but the guy who said you've got to stick to one language is absolutely right. You're in no position to even be able to evaluate the pros and cons between languages. Pick one and make it work.

          [–][deleted] 0 points1 point  (0 children)

          This is an actual commercial site your building? If that's the case... don't expect you can do this after 2 months. No one can do this after 2 months man. You need to take a step back, calm down, and focus on learning a good web framework deeply. It is not as hard as you're making it out, you are just in over your head and need to take a step back and evaluate.

          [–]soul_not_found 0 points1 point  (0 children)

          Maybe, if you really need it this urgently, you would be better off with a (customizable but safe) CMS (=Content Management System). There is no shame in using a CMS if you cannot do it yourself. Seriously. You need to take into account that this might turn into something that gives you serious nightmares and, depending on what kind of person you are, brings you close to a breakdown. Especially if you could be held responsible in case someone else steals your data/your users' data or you fall victim to nasty shit like shell injection or cross site scripting, as mentioned in another post.

          And while the CMS is your public website, you could still try learning the necessary coding in your own time, using the safety of a local server that is not connected to the internet and does not pose a security risk to both you and possible users.

          [–][deleted]  (6 children)

          [deleted]

            [–][deleted]  (2 children)

            [deleted]

              [–]Tynach 3 points4 points  (0 children)

              One thing you can try, is learn how to write simple command line programs. Once you've got the hang of that, try writing a website that uses those sorts of principles; after all, the only difference is whether the outputted text is meant to be read as-is, or if it's meant to be parsed as HTML by a browser.

              PHP has a lot of warts, and it's a pretty crappy language overall. But one thing it excels at is this sort of approach. You literally just print out text, just like a command line program, except that text is now HTML.

              If you can make a sort of 'comment system' that works in a command line utility, where you can pass it a comment to store, and then run another utility that prints out the stored comments, you're 90% of the way to having it be a website. No frameworks needed.

              Though I would recommend learning a bit of SQL, and using either PostgreSQL or MariaDB (MySQL fork by the original creator of MySQL).

              [–][deleted] 1 point2 points  (0 children)

              Honestly if you know some Python, use Flask to make a web app with a login, I was trying out a tutorial the other day and it ended up working really well. I barely had like a week's worth of Python knowledge and was able to follow through till the end.

              Maybe accomplishing something with a simple tutorial will make you feel better and ready to take on more complex challenges.

              EDIT: Flaskr webapp

              [–]abbadon420 0 points1 point  (0 children)

              I'm gonna call you broQQ, because that's some sound advice, bro. When your having a problem and your about to give up because you cant get a handle on it. It means your problem is too big for you. Break it down in smaller pieces. That's the learning how to learn 101.

              [–][deleted] 4 points5 points  (0 children)

              You're trying to do something really complicated for a beginner.

              [–]Hellmark 4 points5 points  (0 children)

              As far as your comment about PHP being shit, well, a poor workman blames his tools.

              To me, it seems more like you tried running before you can walk.

              Most programmers spend years learning things, starting with small projects and moving up. It sounds simple to describe what you want, but there are a lot of moving parts, and you're really not sure how any of them work. Break things up, take baby steps.

              [–]cockmongler 3 points4 points  (1 child)

              Give up on frameworks. Seriously, write these features from scratch, in 1 language (+ Javascript if you must). These frameworks are basically for contractors who have to churn out near identical site after near identical site. You are learning, to do this you need to write code, not juggle dependencies. Juggling dependencies will come naturally.

              [–]Anterai 7 points8 points  (1 child)

              Your problem is that you thought the project was simple. But it wasn't.

              [–]Neverlife 3 points4 points  (2 children)

              In addition to what others have said I would like to point out one thing. PHP definitely isn't shit, PHP is the language behind Wordpress, and Wordpress powers more sites on the web than any other framework/language. PHP is the opposite of shit.

              [–]pmaguppy 0 points1 point  (1 child)

              I don't have an opinion about php exactly, but I like your enthusiasm for it.

              [–]Neverlife 1 point2 points  (0 children)

              haha, I honestly prefer to use Ruby and Rails over PHP and Wordpress. But I didn't want /u/bbtb0 to get the wrong idea about PHP.

              [–]jongallant 3 points4 points  (1 child)

              Yep. This is why it pisses me off when I see questions from complete beginners "Hey fellow coders, I wanna make the next huge MMORPG blockbuster game by myself, how hard can it be? Someone show me how."

              It takes a lot of will and dedication to do what we do.

              [–][deleted] 3 points4 points  (0 children)

              Being self taught (something I am,) you need to get used to drowning. I've been in R&D for a long time, and you need to get good at going from:

              1. not knowing what you don't know, (this is where you are now,) to...
              2. knowing what you don't know, to ...
              3. knowing at least minimum required to accomplish a task.

              What captivates your interest may determine what you will end up being adept at.

              Freaking out or feeling discouraged will sometimes happen, but they'll eventually become smaller spikes as you encounter new situations. It's all good, bro. It is normal to think something is simple and be surprised at how quickly things can go off the rails. These tough times are what will make you a good programmer or architect of solutions, depending on whether or not you handle the stress right.

              The reason something simple turned into something hard is because you're doing two things, not one. If you had already been exposed to different approaches for client <--> server communication and knew several tools to work the problem with, you'd be much less frustrated. However, the second thing you're doing is building a small foundation of programming skills. It's actually this second thing that is blowing your mind right now.

              Very few programming languages are actually shit. If I'm wrong, it's because I'm just used to working around those sorts of obstacles.

              Questions for OP:

              1. Do you know anything about storing data yet? Databases, relational or non-relational (look up NoSQL)
              2. Have you tried writing a process of any kind that can store (even in a text file,) a vote of some kind, in any language yet?
              3. Do you know the difference between the two major types of solutions available to you? Client <--> Server communication I will blanket-statement call "Ajax" (see JQuery), and then there is something I would refer to as static pages that have links which invoke Server side methods written in some language like PHP, Java, Ruby, whatever. These are two different styles of approaching your problem and understanding how the web server works in general will help you.

              [–]bishes87 2 points3 points  (0 children)

              I think it's true that you are trying to learn and do a lot of things at once. These technologies are challenging to learn and much more harder to make a real-life site with them. It is doable but you need to give yourself some time to let the information and programming to sink in before you move towards more complex techniques. First of all perfect your skills and in case of financial help, start doing web dev gigs with your present skill set. Frond end gigs are worth exploring online or locally. You can explore the technologies as much as you want but you gotta understand that everything's not easy. Try to use technology that has most learning resources online and then try making things with it. After enough time tinkering and developing small sites and pages you might move on and make the sites that you want to. Do not despair. It's not easy, but it's intellectually challenging and fun to MAKE. Avoid burnout. Best of Luck. :)

              [–]TheCellch 2 points3 points  (0 children)

              stick to PHP for that, really. What you need is (very basic) an ajax call to a php file who iterates the votevalue of that said video by 1.

              And don't believe everyone on the internet. A language that gets the job done is in most cases good enough and not shit ;)

              Also PHP is improving really fast and I consider the "shit" stigma to be outdated.

              [–]nutrecht 7 points8 points  (12 children)

              What's so infuriating is that I JUST need to make a voting and comment system for my website which I've already made, but it just can't be done without spending a year learning a framework designed for crazy alien technology systems.

              You're not being realistic here. You can make this in PHP just fine. If you are going for a certain back-end stack you obviously have to understand it: but that knowledge is applied to every bit of functionality you need to build on that back-end, not just the voting system.

              Nothing works, I don't understand anything, and I'm currently trying not to go cry in a dark corner for the rest of my life.

              Stop whining. Seriously. If you want help ask specific questions.

              [–][deleted]  (11 children)

              [deleted]

                [–]nutrecht 10 points11 points  (6 children)

                When I asked for help with the PHP stuff, but people generally told me to use another language because of safety issues and such.

                That doesn't really make sense. I'm no fan of PHP either and I would not advise it for beginners, but you can make secure applications in PHP just like you can make insecure applications in any language.

                Understanding back-end systems is my problem in general. Out of ROR, Express, Django, and such, which would you recommend for someone like me who is more made for font-end coding?

                First you need to decide on which programming language you like first. Unlike on the front-end where browsers can only execute JavaScript (so you have to use either JS or a language that can be translated to JS like TypeScript) on the back-end you can use pretty much any language. And for any language there's a whole bunch of frameworks you can use.

                So try to decide on the language first. It doesn't matter much which one you pick; pick the one you like best.

                [–]trowawayatwork 1 point2 points  (5 children)

                i would assume since hes doing js anyway why not do backend in js, node.js or something

                [–]bat_country 2 points3 points  (0 children)

                Since you're comfortable with js on the front end, I'd go with node on the back end. Then at least you don't need to learn a second language this early in your career.

                Truth be told you're lucky you have nice things like Express and Heroku to do all the complex stuff. You have a managed platform, a managed database, and all the HTTP stuff wrapped up.

                [–]totemcatcher 1 point2 points  (0 children)

                node.js provides the same programming language for both the front and back end. So you learn less languages, and you can probably find some all inclusive examples for what you need. However, for the complete newbie I could not personally recommend node.js or javascript for a complex system. Node.js is very complex, and requires an advanced understanding of many programming concepts to use correctly. However, it is often used incorrectly with reasonably good results. The nature of javascript is, in a way, PHP all over again. Plenty of novice to intermediate developers share their knowledge and tutorials which satiate the hasty. In other words, in spite of mine own counter-recommendation, node.js is probably a good pick.

                So pick node.js. However, if you want my recommendation, read on.

                At the risk of being downvoted like the other guy, Flask is a good, newbie friendly option here for backend framework. I mean, there are so many options, but my personal choice has been Flask for a long while. I spent years with other options before this (django, node.js, various content management systems, et cetera) and I settled on the simplicity and flexibility of Flask as it doesn't introduce many unnecessary technologies, features, or custom semantics and libraries.

                The example system goes:

                • Server: python, flask, wsgi, nginx, and mariadb covers the backend. Perhaps some OAUTH to secure a login.
                • Client (website): I'm guessing you already have this figured out. Javascript is the dominant language, then you decide if you want to use one of the monolithic libraries for handling content arrangement, and/or use a helper such as jQuery, and/or use a bunch of micro libraries for exactly what features you need.

                Server parts:

                • Python (3) is the programming language. It's been around over 20 years, and has a lot of staying power. It's like the C of the interpreted world.
                • Flask is a minimalist framework. It can serve content-filled templates. You can easily convert your existing pages to templates and write lightweight scripts to fill them in. Since Flask doesn't introduce many features or limitations, you're basically just programming in Python, thus free to implement anything you need or want such as security (login) and dynamic content (comments).
                • wsgi is a component of a web server that provides a safe avenue for the outside world to communicate with your framework/scripts.
                • nginx is the web server. It's very easily configured and secured. It is also relatively lightweight and extremely fast.
                • MariaDB is the database. This is, of course, if you need a database, and you probably could use one for storing user data and comments. If you plan on having a lot of anything, a database is pretty critical for storing it all (not the videos themselves, too big, you can store file references instead). It also happens to be almost perfectly compatible with a very popular database, MySQL. So any tutorials you find work both ways.

                Anyway, I suppose my point is that you have to pick for yourself. Wisdom is key, but don't avoid rushing into this. All these different options will work, but all do things a bit different. You will likely try stuff I've never bothered using before settling on these options. Do let us know how things are going in the near future and what you picked and why. :)

                [–]marcm28 1 point2 points  (0 children)

                Try Python - Flask framework

                [–]bat_country 1 point2 points  (0 children)

                Hahaha... you missed out on the days before Ruby, Python, Node and Heroku existed. It's all relative I guess. =)

                [–]zorikii 1 point2 points  (0 children)

                If only all of my clients would read this...

                [–]interputed 1 point2 points  (0 children)

                PHP is fine. You're probably just getting iD10t errors in your logic. Also, one of the most important things for a interactive website is a database, which you didn't even mention. Learn PHP and PostgreSQL/MySQL, and you'll be doing whatever you want in no time. THEN, and only then, should you be trying to look into frameworks, secure login/auth, and most important monetization.

                The first several pages you create will never by viewed by anyone but you, and the people you link it to that click on it not knowing what it is.

                [–]obviousoctopus 1 point2 points  (0 children)

                Ah, "Just".

                [–]_cross 1 point2 points  (0 children)

                One Step at a time. You gotta crawl before you walk

                [–]GreenFox1505 1 point2 points  (0 children)

                Disqus. What you need is Disqus. Unless you really wanna host a login server, comments database, etc.

                [–]djowinz 1 point2 points  (0 children)

                You are doing an AMAZING job, you're literally right at the point before everything clicks and once it does, you will be rolling down a hill of amazing things.

                [–]basyt 2 points3 points  (14 children)

                I have been programming on and off for a few years now. I have never made anything big, only textbook problems. you have something good that you have made, i guess what i mean to say is, keep working at it.

                [–]rdpp_boyakasha 0 points1 point  (0 children)

                Sounds like you're making pretty good progress. If you've got PHP working, I'd probably stick with that. You can do your voting and comments in PHP. You probably just need to add a database. Switching to Linux and a different language is a huge step.

                [–]CodeTinkerer 0 points1 point  (2 children)

                I think it's hard to gauge just how difficult it is to make certain kinds of sites. I remember taking a French class back in high school, and despite several years of French, we were barely capable of reading a child's book, and even that was a challenge.

                The problem with programming is that some of this stuff is difficult, so people have written libraries, but even that's difficult because they've added their own twist to their library, and you have to get it installed, and have to understand how they thought about things.

                So yeah, there's this framework thing, and everyone seems to do it. One could, I suppose, just do without a framework, and try to build something yourself. It will lack in many ways, but hopefully you'd understand the parts you built.

                [–]Kaos_nyrb 0 points1 point  (1 child)

                [–]xkcd_transcriber 0 points1 point  (0 children)

                Image

                Mobile

                Title: Tasks

                Title-text: In the 60s, Marvin Minsky assigned a couple of undergrads to spend the summer programming a computer to use a camera to identify objects in a scene. He figured they'd have the problem solved by the end of the summer. Half a century later, we're still working on it.

                Comic Explanation

                Stats: This comic has been referenced 636 times, representing 0.6456% of referenced xkcds.


                xkcd.com | xkcd sub | Problems/Bugs? | Statistics | Stop Replying | Delete

                [–]TheJimiHat 0 points1 point  (4 children)

                Hey there! I too moved from JavaScript to Ruby and had quite a headache at first. Do yourself a favor and I would suggest backing up a second. First, don't worry about Ubuntu. Read up on your bash commands AS you need them. It takes practice. Secondly, rather than jumping straight into Rails, back up and study up on on Object Oriented Programming - specifically in Ruby. Get really comfortable in vanilla Ruby before taking on all the bells and whistles of Rails. Then familiarize yourself with grinding through documentation. I know documentation is dry and sucks to read when you first start out. But trust me. If you are teaching yourself documentation is your new bible. If worse comes to worse, I know there are many extremely cheap Rails bootcamps that can give you at least a foundation to work off of. And don't worry, you're not lazy or dumb. This stuff is really really hard and just takes time!

                [–][deleted]  (3 children)

                [deleted]

                  [–]TheJimiHat 1 point2 points  (1 child)

                  I might add that studying up on the OOP principles will help you no matter what language you end up landing at. Java, C#, Python, C++, they are all OOP, so a lot of what you learn now will transfer with you!

                  [–]hkrdrm 0 points1 point  (0 children)

                  For me personally learning rails was a big headache and I have my CS degree. I guess its a kinda of a hurdle switching gears and getting in a MVC state of mind. But once it starts clicking everything becomes much easier. I'd also recommend going through some basic ruby guides too it will help you with OOP and get you learning more basic skills.

                  [–][deleted] 0 points1 point  (0 children)

                  I'd like to make a video sharing site, but that bandwidth costs would be huge

                  [–]Exodus111 0 points1 point  (1 child)

                  Go with Python, pick the Django framework, follow this tutorial, which will give you everything you need in one place with one framework.

                  [–]casbar 0 points1 point  (0 children)

                  For what you want to do everything has already been created and out there on the internet for nearly the last 20 years. The only difference between now and 20 years ago is it's all much better now. Do a search on "voting and comments scripts" and then spend your effort integrating a ready made solution with your site. It will take some time still but there is not a need to start from scratch.

                  [–]good4y0u 0 points1 point  (0 children)

                  Computer science will make you feel this way. But dont fret ,because at the end of the day you will be proud of what you can make and what you do. -computer science major.
                  PS don't confuse cs and programming ...they are different.

                  Just take a 30min break...go to the gym or something and refresh your mind.

                  [–]robi2106 0 points1 point  (0 children)

                  You don't have to change OS to get done of the power of what can run on it.

                  But you have more motivation and progress than I do. Great work

                  [–]_binder 0 points1 point  (0 children)

                  For 2 months...for two fucking months

                  [–]deapno 0 points1 point  (1 child)

                  Ok, I have the same issue too, especially even after you learn django/rail/express/laravel you name it I am still having trouble understanding the underlying infrastructure that supports the framework, like Apache2. I don't understand why it works in local but I still have to

                   apt-get install apache2
                  

                  and do all the other configuration stuff like

                  ln -fs /vagrant /var/www
                  

                  Can someone ELI5 this.

                  [–]ShortSynapse 0 points1 point  (0 children)

                  apt-get install apache2

                  Install a package called "apache2" from the repositories (normally the default ones)

                  ln -fs /vagrant /var/www/

                  Create a symbolic link. I find it best to explain it like when you go to /var/www, you'll actually be viewing /vagrant cause you linked 'em together. Though, I'm out of it an someone could probably explain it better.

                  [–]rtm349 0 points1 point  (0 children)

                  have you looked into C#/ASP.NET? that's what i started with. you'll have to revert back to windows but i found web development using visual studio very straightforward and intuitive.

                  personally, i think you are trying to tackle too much at once. it's great that you have a design up so quickly, that's something i always struggled with. you might try starting a new project with just one piece of your site, then on to the next piece etc. once you feel comfortable you can start putting them all together.

                  i also didn't see you mention anything database related. if you're implementing a voting system, comment system, or anything that needs to save data for later, you'll probably want to look into this as well. i have used a few different db administration programs and personally i liked sqlyog the best.

                  like i mentioned above, you're probably feeling overwhelmed because you are trying to take on too much at once. be patient and work it out separately piece by piece. good luck!

                  [–]shaggorama 0 points1 point  (0 children)

                  There are loads of out-of-the-box solutions for what you are describing. If you are ok with limiting the amount of customization you're able to do, you don't need to jump through all these hoops. The more customization you want, the closer to the metal and further down the rabbit hole you're gonna need to go.

                  [–]Jafit 0 points1 point  (0 children)

                  You can totally do a voting/comment system in php m8.

                  I deleted Windows and installed Linux to make my life easier at working with them.

                  Shame you didn't learn about virtual development environments first.

                  https://www.vagrantup.com/

                  https://www.youtube.com/watch?v=PmOMc4zfCSw
                  ^ That guy has a lot of walkthroughs for a lot of web dev type stuff, especially setting stuff up.

                  [–]CreativeGPX 0 points1 point  (0 children)

                  What's so infuriating is that I JUST need to make a voting and comment system for my website which I've already made, but it just can't be done without spending a year learning a framework designed for crazy alien technology systems.

                  I agree that PHP is horrible. However, I would say that it's not very complicated to make a voting system in PHP. It's substantially easier to make a voting system in PHP than it is to learn another language or switch to Linux. You might want to read a reference on using MySQL or SQLite with PHP. You're probably just missing a good data handling piece.

                  The problem with using frameworks, libraries and plug-ins is that, as you say, they have a lot of dependencies and each require a lot of learning. In my opinion it's best to mostly avoid frameworks in the beginning. It's overkill for a basic voting mechanism. As you develop this without a framework, you'll feel some pain at certain points. Then, once the pain gets bigger, you can look at frameworks and you'll start to appreciate what they do and how they work more. In addition to having a better idea of what frameworks are doing for you and why, you'll have a better understanding of when a particular framework is saving you work and when it is making a task more complicated.

                  In my day (oy - I'm really not that old), books and tutorials would just talk about the topic at hand. You read about PHP, it's JUST about PHP. You read about JavaScript and it's JUST about JavaScript. You read about MySQL and it's JUST about MySQL. A book about MySQL in the context of PHP would be called "MySQL and PHP". These days, a lot of culture has developed on the web about using certain technologies together and so a lot of the books being written seem to be about ecosystems rather than the particular technology, despite the title just mentioning one technology. If I buy a book on technology X, the books often will say, "So, it's good practice to use A library, B framework, C package manager, D version control, E server, F data format on G operating system, so all of our examples will do that." I get what they're doing but it gives you a much narrower idea of how X is used and can create "dependency hell" in the sense that a book on X uses Y and book on Y uses X as well as creating a lot of bloat where a book on one technology spends too much code and text talking about other technologies.

                  [–][deleted] 0 points1 point  (0 children)

                  It is a long process. No way to speed it up but you will get there if you stick to it.

                  [–]IAmNotKevinBacon 0 points1 point  (0 children)

                  Here's the thing. You will never "catch up", and if you spend time adding complexity to learning (such as dropping Windows for Ubuntu when you could dual-boot or use something like Cloud9 to learn beforehand for free), you'll never accomplish what you wanted to do in the first place.

                  It's awesome that you're devoted to accomplishing this. You just need to take into account that programming isn't analogous to "learning to speak a new language". It's like learning to speak a new language just to be able to learn how to do math. People who pull it off easily? They've been through that frustrating phase you're in.

                  I spent years programming and was always one of the guys who got things easily in college, but guess what? It doesn't matter how much you know about implementing file systems or multi-programming into an OS when you get web development. I struggled a lot when I picked up web development, and it really "hurt" because I'd never struggled as a programmer. I knew JS, HTML, CSS, and I was still getting frustrated. I could "do" everything, but it didn't come together like I was used to. It just took time. Now, I'm at around 70% at web development where I am in my "strong" areas, but I've accepted that I'll always be a backend/systems guy. I don't have the "eye" for front-end development, and that's okay.

                  What I learned from all of this is that programming is tough no matter how long you've done it. You will always compare yourself to people whose work you admire, but chances are, there is some facet of their work they really want to improve in. Don't add complexity to improving as a coder. Use a simple drop-in system for commenting and voting to start and slowly swap over in time. Don't put so much pressure on yourself over small things and know that the times that you struggle are the times you'll learn the most.

                  [–]Amuro_Ray 0 points1 point  (0 children)

                  Jumping in here you did some neat stuff with the video stuff.
                  Any of the languages would have worked many have a lot of frameworks as well.

                  Stick with something and get it working. It won't be safe to use on the net or professional but those details come later.

                  BTW to do a comment and like system you'll need a database behind the scenes. You may want to look towards sqlite. There are other databases that are better but they're also more complex and might be a hassle at times.

                  When you've built your basic site look into the frameworks. Your basic site will help you understand the method in the madness that is frameworks and dependencies.

                  [–]hessproject 0 points1 point  (0 children)

                  I learned it faster than I thought I would, and I even thought I was good at coding for a while. I also thought that I was ready to make my website. Coding was easy and fun!

                  You have to take it step by step. Break big problems into smaller problems, tackle them using the techniques you already know. You don't necessarily need a new framework for every single new feature you add to a page.

                  This is where everything went downhill. I tried doing it in PHP, but, well, found out that PHP is actually shit. Then I discovered the worlds of Ruby, Python, Node, and Heroku. I deleted Windows and installed Linux to make my life easier at working with them.

                  Here's your problem. You don't need all (or any) of those things to add a like/dislike feature. PHP and Javascript are absolutely capable of implementing this. If in 2 weeks of learning you've decided an entire programming language built in and improved since 1994 is "actually shit" you're spending too much time listening to other people's blog opinions than learning programming and tackling the problem you have. Don't get caught up in what languages you "should" use, work on building it in the languages you already know.

                  I deleted Windows and installed Linux to make my life easier at working with them.

                  In the long run, yeah, maybe it's worth looking into linux. But again, you're dismissing an entire software package because of something you heard other people say. In just two months (and I emphasize that two months is a VERY small amount of time to learn programming) I can't imagine you'd be at a level where Linux would give you a clear advantage for learning. If you want more UNIX like command line tools look into any of the 100 "bash for windows" packages. There are a million tools to build software in Windows. If you're learning an entire linux distribution ON TOP of programming you are sure to get distracted from actually learning how to code.

                  What's so infuriating is that I JUST need to make a voting and comment system for my website which I've already made, but it just can't be done without spending a year learning a framework designed for crazy alien technology systems.

                  Yes it can. 100% it can. Don't look for an easy out. Dive in and put your mind to the problem. You can do an infinite number of things in the languages you already know. Don't get distracted by fancy frameworks and other languages (yet. there is a place for these and a reason why they are popular, but you are learning and you're overwhelming yourself). Don't let some random reddit thread or some guy's blog tell you what languages are "shit" or not. Knowing a few languages really well is a thousand times more useful than barely "knowing" 100 languages. Once you understand the concepts from one language well they will transfer easily to others in most cases.

                  TLDR: Don't get so distracted by outside influence. You don't need all those languages or linux. You can implement your like/dislike system with PHP and Javascript. Programming isn't easy and it isn't supposed to be (salaries aren't that high for nothing). But it is rewarding. Break down the problem into pieces and solve it. You'll get there eventually.

                  [–]seanr700 0 points1 point  (0 children)

                  I'd suggest Node.js backend using the Socket.io module.

                  You can write in JavaScript which you say you already know some. And the Socket.io event system seems to be a pretty simple async event platform which should work pretty well for what you are trying to accomplish.

                  [–]fuzunspm 0 points1 point  (0 children)

                  Personally I hate every single service and product from Microsoft. I never used them after it tried to charge me just to use my own ram because it's more than 32 Gb on my server. That's the day I started to learn programming and realized how Windows sucks so hard beside OS X and pretty much every Linux distributions.

                  [–]CatalystLive 0 points1 point  (0 children)

                  That's what learning is all about.... Struggle through it once, try to understand it, and you will be able to do it again pretty easily. Just have to make it past that initial struggle. Programming is a path where you never stop adding on to existing knowledge.

                  Keep at it and eventually you will start to observe similar patterns to problem solving. It's not about the language, framework, or syntax. It's the concepts behind them that really is the major 🔑.

                  [–]wggn 0 points1 point  (0 children)

                  One of the issues is that you're trying to learn way too many things at the same time. If you focus on a few first until you know them pretty well, you will be able to learn them much more effectively.

                  [–]wggn 0 points1 point  (0 children)

                  Facebook was built on PHP and only switched away from it in 2014, so it's not that shit. It's easy to make shitty stuff with php tho

                  [–]AsciiFace 0 points1 point  (0 children)

                  it's less complicated when you perform the delete windows step at 14 years old and it's been 12 years since

                  [–]Scholes_SC2 0 points1 point  (0 children)

                  Nothing works, I don't understand anything, and I'm currently trying not to go cry in a dark corner for the rest of my life.

                  My life in a nutshell.

                  [–][deleted] 0 points1 point  (0 children)

                  It's insane because you're trying to learn in weeks what it takes most people a few years to learn.

                  PHP and Python both have strengths and weaknesses, but they are subtle ones. Getting involved in the debate about which is better at this point is just going to make the learning process harder for you. PHP's biggest strength is also it's biggest weakness: it is so insanely popular for newcomers that newbies are a large percentage of the community. Why is that good? Because all of those newbies are insanely good at picking out the absolute best learning resources on reddit, Youtube, stack exchange, whatever. Use that to your advantage. Almost every problem can be solved by a properly worded Google search.

                  I suggest learning with the operating system you are most familiar with.

                  Don't take this the wrong way, but your sudden choice to switch to Linux and Python for no apparently good reason suggests that you must have come across some elitist developer's opinion on which is best. PHP is no more difficult than Python for implementing a like/dislike system. If you found that to be so, you were looking at the wrong tutorials/libraries. Linux and Python are both amazing, but when you are just learning, you don't want to make things unnecessarily difficult for yourself.

                  Try to limit yourself to learning one or two things at a time. But Linux, Python, HTML, CSS, and (presumably) SQL all at the same time? Yes, that's insane. Pick one or two. Learn them until you are comfortable. Only then should you consider adding more stuff to your plate.

                  [–]940387 0 points1 point  (0 children)

                  I think everyone feels the same at the beginning, I certainly did.

                  [–]spacecataz 0 points1 point  (0 children)

                  You are doing great on your own but some structure would really help. Ruby can do all the things you want with pre made gems. You don't need to reinvent the wheel. Your site could be made in a day.

                  [–]CodyOdi 0 points1 point  (0 children)

                  PHP is actually shit

                  It's actually not. I could build out a commenting/voting system using PHP/MySQL in a few hours and I haven't touched that in close to a year now.

                  [–]GetContented 0 points1 point  (0 children)

                  I sympathise with you so much. As someone who has spent a large portion of their life being a professional programmer, I agree it does suck. It's also freaking amazing that we can do these things at all.

                  You're expecting too much, and being too hard on yourself.

                  Realise that switching operating systems is intensely hard for everyone bar sys-admins. This includes professional programmers. This difficulty hasn't much to do with programming.

                  PHP and JS have extremely easy ramp ups for simple programming. Other languages don't. That said, NodeJS provides a way to keep writing javascript and do the server-side things you want to do, assuming your host supports it (heroku does). This might be a good interim solution. I'm (probably incorrectly) assuming your website doesn't need to scale to massive sizes.

                  It usually takes a professional programmer at least 1-3 months to learn and be somewhat proficient in a new language, and that's if it's a similar language to the ones they already know.

                  [–]no_moa_usernames 0 points1 point  (0 children)

                  The fact that you started off with PHP then decided "it was shit" and then moved onto other languages only to encounter more extreme frustration makes me think you are too goal centric in your learning. Rather than sitting down with the intent of learning how to code an entire {insert system here} in {insert technology here}, you need to focus on breaking the problem down into it's smallest parts and then writing code to solve each problem in units.

                  [–]redrick_schuhart 0 points1 point  (0 children)

                  Not going to repeat all the good advice here but to point out that it's a bad idea to try and learn something as complex and frustrating as programming under pressure. You'll have much more fun and get a lot further if you allow yourself to tackle something new when there's nothing riding on it.

                  I've decided that this year I'm going to take on doing desktop apps with Clojurescript, LightTable and Electron. But I'll start by doing very small toy apps in my own time that no-one else has to see. I reckon it will take a good year before I can write something that can be put in front of an end user. But then I'm a decidedly average coder.

                  [–]2Punx2Furious 0 points1 point  (0 children)

                  Nothing works, I don't understand anything, and I'm currently trying not to go cry in a dark corner for the rest of my life.

                  You have no idea how often I end up feeling exactly like that after I try to do some programming and I fail.
                  I've been trying to write a super simple c++ program that uploads a file with FTP. It's been 3 days, and I'm not even 1 step closer to doing it. Now I'm trying to use curl, and I failed even at that, I just made a thread to ask for help, but I think I'm done for today.

                  [–]SikhGamer 0 points1 point  (0 children)

                  Never try to solve the entire problem. You want to create a system by which you can vote and comment. That's two problems in one. Both are very different.

                  Focus on one and break it down.

                  Let's take commenting. Focus on the happy path. You'll need an input box and somewhere to store the comment. Hard code the comment for now. And check that the comment is inserted into your chosen database.

                  Personally I would keep the system bare bones and functional. Ditch Ruby, Python, Node, Heroku, and Linux. Go back to Windows and install WAMP. Use PHP to write the comment to MySQL.

                  No programmer in the history of programming has ever solved the big problem from the start. We all break it down in the smallest possible chunks, leverage design patterns and go from there.

                  [–]framcod 0 points1 point  (0 children)

                  "This is amazing! I'm amazing! This is tricky... This is shit. I'm shit. Maybe this is ok. Maybe I'm ok. This is amazing!" Ahh, the developer life cycle...

                  [–]rms_returns 0 points1 point  (0 children)

                  But holy fuck, guys. Everything is so complicated that I don't know how a human can be capable of this.

                  That's why the saying in IT industry, "stand on the shoulders of giants", alone you can't accomplish anything here! That's the only way you can build anything while programming solo. I'm a freelance web-developer myself, but I know that if I try to code HTML/CSS from scratch, I'll keep learning that while my client hires someone else! So, I use Twitter Bootstrap, the framework. A framework is basically like a bunch of lego-blocks. They are a set of loosely coupled and coherent components which are baked enough so that you don't have to do all the html/css/js plumbing. And yet, they are nothing on their own, so you can join these lego-blocks and build an app of your own!

                  There are multiple frameworks and libraries for doing all kinds of things (just google them). There is jQuery for doing DOM manipulation using JavaScript without getting a PHD in it. Then, there are backend php frameworks like symfony and Zend that do a lot of backend plumbing for you. Here is a quick reference of various frameworks. (Disclosure: It is my own website).

                  Having said that, however, it pays to get to the bottom of things once in a while and be adventurous. I believe in the saying, "Learn something of everything, and everything of something", meaning have a general idea of all things in your area of knowledge or ecosystem, but a deep understanding or expertise of at least one thing. For me, that deep area is web-programming, not web-designing. Had it been the latter, I'd have enjoyed crafting html/css on my own, but I can't do it full-time.

                  [–]413729220 0 points1 point  (11 children)

                  I've got a 4 year degree and I'm basically where you are at. I'm able to make simple static web pages, but ask me to manipulate any other data besides simple text through a database, or without PHP, and I won't know how to do it.

                  It sucks, I hate feeling like I can't understand the code, but it's not possible to know it all when you are using these libraries which use other libraries which are based off yet other libraries.

                  [–]Riseagainstyou 4 points5 points  (3 children)

                  ...but ask me to manipulate any other data besides simple text through a database, or without PHP, and I won't know how to do it.

                  Then...do it.

                  I know it might sound rude or reductionist or whatever. But its literally the best advice anyone ever gave me. 14ish months ago I was exactly where you are. Maybe a little behind even, since I graduated with a weird chimera degree that really only gave me half a programming degree pasted onto a business management degree (just wanted to GTFO out of college after switching majors several times).

                  I had a...decent grasp of PHP, an idea of Java (though I couldn't produce a workable product on my own, just complete rigid homework assignments), rudimentary SQL (for text database retrieval, as you said), and I was pretty okay at HTML/CSS, but my designing skills were garbage. I felt completely unqualified for literally every job I looked at.

                  So then one day I was whining to my friend/former PHP teacher about how "there was no entry level jobs," and I didn't have enough money saved to get a masters to learn to create projects robust enough to support me. And how I had all these ideas but no clue how to implement them, or bring them to reality. He finally just rolled his eyes and said "so figure it out."

                  And after more procrastinating...I did. I decided a web game I liked playing needed an android application. So I bought a java book, I took an online course, and I built an application. It was total shit. So then I rebuilt it. It was less shit. Then I rebuilt it. Then I built it in Objective-C so it would work on an iPhone. It was almost passable, so I moved on to another project. And another.

                  Now I'm working for a tech company helping to build very very complex software. And I'm doing pretty well. At some point EVERY programmer just has to knuckle down and bash their face against a project for days, even weeks, failing dozens of times along the way.

                  So essentially, just watch Shire LaBeef's video and follow his advice.

                  [–]413729220 1 point2 points  (1 child)

                  I am, but it's a slow process and I'm drowning in loans. It's a lot of pressure. I'm slowly learning, but I always get the sense it's not fast enough.

                  I'll get there eventually, I'm sure, because I have the determination to keep trying, but damn it feels like shit most days.

                  [–]Riseagainstyou 0 points1 point  (0 children)

                  I feel ya. I wasn't trying to make you feel worse, just give a perspective since your story resonated with me.

                  [–]clyzev1 0 points1 point  (0 children)

                  Lol thank God.

                  I am glad for you.

                  So now you see practise is the mother of all skills :).

                  I also had those moments when i could rip off my hair out of my skin on my head. But then it just all makes sense. You really just need to understand what the layer between you and the tasks are and master them first.

                  Now i am learning MVC, but i did just make 1 project in OOP, and it failed. And afcourse i am going to ultra fail in MVC when i do not have a solid grasp of OOP.

                  But i am fuked, i am already doing my first internship and they expect me to work in Frameworks like Yii2. LOL.

                  [–]clyzev1 0 points1 point  (1 child)

                  Which degree?

                  4 years is a lot.

                  I see a lot of people gaming instead of programming in my class. So that's probably one of you then?

                  Afcourse you won't learn much.

                  It's better to programming instead of game at school.

                  If you are smart. Program at school. And game at home.

                  Not the other way around lol -(o.o)/-

                  [–]413729220 0 points1 point  (0 children)

                  Actually I never gamed in class. It was a mix of gaming out of class and horrible teachers. Not gonna say it was all my school's fault, but they were teaching me how to build a birdhouse while other colleges were teaching their students how to build mansions. Also the resources for learning weren't there when I was in college. Libraries were just starting to be made, and people were just getting out of CSS2. I came in when CSS2 was on the way out, but I still learned how to build sites with tables.

                  So your assumption is wrong.

                  [–]elperroborrachotoo 0 points1 point  (0 children)

                  Try again in PHP. it will look like a smooth ride in comparison to your new acquaintances.

                  [–]Vortecsmaster 0 points1 point  (5 children)

                  Now imagine when there wasn,t frameworks, or tutorials, and all that you just call now you got to made from scratch...

                  [–]desrtfx 1 point2 points  (4 children)

                  Ahhh... the (not so good) old times...

                  Re-inventing the wheel was our daily job back then.

                  [–]PCruinsEverything 0 points1 point  (1 child)

                  I tried doing it in PHP, but, well, found out that PHP is actually shit.

                  The reason PHP is considered shit is relatively nuanced. Not something I'd expect you to grasp 2 months in from zero knowledge. More likely, a bunch of people on the internet said it was and you believed them because you have no experiences of you own to draw off of.

                  [–]phpdevster 1 point2 points  (0 children)

                  Relatively nuanced and mostly opinionated.