13 ms·
Show HN: Learn and practice modern JavaScript
- imcotton 8y agoModern JavaScript in practical for today should be just written in TypeScript with Strict mode turned on.
- jadjoubran 8y agoI might have plans to add a TypeScript chapter towards the end
- deleted 8y ago[deleted]
- feketegy 8y agoNope, it doesn't
- kissu 8y agoAssumptions like that can be done endlessly and you will never get 100% satisfaction but vanilla JS is the title and the main target here IMO. You do not start learning JS by doing some heavy dutty React+Redux stuff. Same goes here, it's a "get basics" lesson.
- vorpalhex 8y agoNo because then you'd be writing TypeScript which is not Javascript anymore than CoffeeScript is.
- jrockway 8y agoI agree that everyone should use Typescript but knowing what Typescript adds to Javascript doesn't help you with anything. You have to know Javascript first; because that's what the bulk of your code is. Typescript merely adds some annotations and all of its syntax strictly deals with types. Your statement kind of sounds like "don't learn C, learn how to run gcc from the command line". Important but orthogonal.
- lkschubert8 8y agoI think people miss the point that it is just a compilation check, but the runtime is still completely dynamic. If you are writing typescript that interacts with anything else in the world the types make no guarantees at runtime so it is important to know how Vanilla JS would behave in that circumstance.
- sjroot 8y agoI wanted to test this out but it appears the only way to do so is by signing in with GitHub. That won't necessarily deter me, but I imagine that will be the case for others. If I were you, I would allow access to the course without signing in. Then, if the user wants to save their progress, they can connect their GH account.
- jadjoubran 8y agoThanks for the feedback! I had that during the testing period but it was a bit confusing. You've also got flashcards linked to your progress which also requires an account. I'm also avoiding adding a 2nd method of sign in in order not to confuse returning visitors: "Which account did I use? "
- jaxn 8y agoPeople have a preferred login method. If you gave me and combination of Google, Facebook, and GitHub, I know which I would use (and it depends on the service).
- gregknicholson 8y agoI don't use accounts with any of those companies, and I certainly wouldn't start just for a JS tutorial. Why not just save progress as a cookie? (Why do websites have to have centralised corporate surveillance?)
- em-bee 8y agoor local storage in the browser
- todd3834 8y agoA cookie wouldn’t let you continue from another computer (or browser) where you left off. If it stores scores from different “levels” or any significant amount of data local storage would be better than a cookie. Still, that wouldn’t let you continue where you left off on another machine/browser.
- commandlinefan 8y agoI wish there was a "learn modern Javascript for people who learned Javascript in 1998" - it seems like the only way to get up to speed is to slog through all the basics (yet again) and keep an eye out for the parts that seem to be unfamiliar/new.
- dentemple 8y agoSearch for guides that specifically call out ES6 and above.
- ohitsdom 8y agoI would read through AirBnB's JS style guide. Very well structured, and most rules have reasons specified in the guide. It should cover all the unfamiliar parts for you. After that, the next biggest thing is tooling so it'd be picking a framework and seeing how the development process has changed with npm & webpack. Start with Vue, Angular, or React and go through their hello world examples. Not that you need to be a "framework developer", but they are probably the best spots to see how the development process has changed. https://github.com/airbnb/javascript https://github.com/airbnb/javascript
- jsty 8y agoI was in the same position a while back, and found Eloquent JavaScript [0] to be a really good read. It's quite well structured, which makes diving into the bits that sound unfamiliar a lot easier. [0] https://eloquentjavascript.net/ https://eloquentjavascript.net/
- charliepark 8y ago(Wrote practically the same message at the same time, then deleted mine. Agreeing with the parent comment: Eloquent Javascript is really solid.)
- arethuza 8y agoI skimmed this (which looks good) and the Airbnb guide recommended (recommended in another comment) and I can't help noticing that one uses double quotes for strings and the other single quotes (Airbnb). Is there actually any sensible argument one way or the other - that isn't just being consistent with your team/project/platform...?
- deleted 8y ago[deleted]
- stupidcar 8y agoVery nice! This seems like a better way to learn or refresh on the language that just wading through tutorials/textbooks. One thing that is missing is a way to report problems in the exercises. Already in the Conditions section I found an exercise that says: "Implement a function canVote that returns true whenever the age is bigger than 18" But the test is for a function that returns true when age is greater than or equal to 18.
- jadjoubran 8y agoThanks will fix! You could report those issues with the "?" icon on the lower right
- onewhonknocks 8y agoI reported this before I saw this comment. Should have known someone would mention it here too! :)
- WouterSpaak 8y agoCool app! Well done. I would maybe reconsider using Fira Code, or add a font preference option. It's an awesome font but this app is clearly for beginners, and having >=, === and the like turn into ligatures might be a bit confusing.
- jadjoubran 8y agoThanks! During user testing, most beginners loved the Fira Code, and advanced developers complained about Ligatures! But it's quite easy to enable/disable
- zimmund 8y agoIt's neat, but if a person is learning I think it's good to have that little extra verbosity. A new user may even get confused because its editor doesn't convert symbols.
- vga805 8y agoI have a student right now that has dyslexia and the ligatures help a lot. I'm glad this tool has it built-in! my student loves this already. Thanks mate!
- jadjoubran 8y agoThat made me so happy! Please email me (you can find my email in the footer of the website), I'd like to give a paid account for free for your student. Cheers!
- faitswulff 8y agoHi OP, this looks great, first of all. Very nicely polished! On the other hand, I find the most difficult thing about frontend isn't necessarily the syntax, but the build tools - webpack, babel, etc. Is there any course material on that?
- jadjoubran 8y agoThanks! No, not at the moment
- deleted 8y ago[deleted]
- onewhonknocks 8y agoNot sure why I thought this was going to be free, but for whatever reason I was surprised to see the prompt for payment after finishing the trial.
- jadjoubran 8y agoWoops, sorry about that. I'll make sure it's clearer. There's no mention that it's Free anywhere however around 35% of the course is free. It shows which content is free and which one is paid in the sidebar, but it could be that you haven't checked it out
- publicfig 8y agoThere is also no point on the front page that it is paid, and I would assume that because there is no mention of pricing that it would be free. I'd definitely put something very early on stating pricing and that it is not a free program. To tell someone 35% through a lesson that they are expected to pay may be fine for conversion, it's a really scummy practice.
- LocalPCGuy 8y agoI know this may be a minority opinion among developers, but I'm ok with them trying to make money. And if the optimal way to do that is to ask 35% of the way through, then that's what they should do. I don't view that as a dark practice or bait and switch. I don't think there is an obligation to be super clear that there is a paid version. It's something the owner should test, and see if it puts people off or if it converts better. Maybe it puts off 10% more people, but 30% more convert? Good on them for finding that out and optimizing accordingly. We in the dev world expect way too much for free. Not that I complain when I find something for free, but people deserve to be compensated for their work also.
- qntty 8y agoSounds like publicfig is saying that it's not optimal for them.
- rhacker 8y agoI know JS has had a rough last few years and we have sayings like framework du jour, etc... but... haven't things actually started slowing down?
- Kaveren 8y agoHas JS had a rough few years? There's been big advances like React and TypeScript. ES6 was a big improvement. JavaScript finally has lexical scoping. It's better than ever. The frameworks exist for a reason, as much as it's popular to diss them. Stuff like jQuery has fallen out of use because it's not considered useful anymore. Progress is important, faster progress is good. Changing stuff for the sake of doing so is bad, of course.
- vorticalbox 8y agoOpened page and saw the animation function nameLength(name){ return name.length } Rather than const nameLength = (name) => name.length This is already enough for me not to bother looking.
- bytematic 8y agoWhich is a completely useless function anyway
- vorticalbox 8y agoMaybe, depends on what you're doing. Going full functional style could possibly be used.
- rhinoceraptor 8y agoYou could change it to pointfree using Ramda and just write: const length = prop('length')
- kyle_v 8y agowhy not just name.length
- plausibilities 8y agoconst length = (string) => (string.length) It is unnecessary to adopt a naming convention which implies a scope within the context of "names" when the method is compatible with all strings.
- vorticalbox 8y agoIt was more about the lack of es6 syntax but yes 100% agree
- jadjoubran 8y agoES6 is explained in detail, with implicit return in Chapter 5 (or 6). Developers still need to know the function syntax for when they look up documentation online Cheers!
- crusso 8y agoWhy does the site need to have my github private email address? I use different email addresses for different sites. I don't want learningjavascript.online to have my github email address (or any email address, but that's doable). I'd try out the site, but this is a show-stopper for me.
- Kaveren 8y agoIt needs your address so it can send you an email if you decide not to use the application for three days, and this is turned on automatically.
- crusso 8y ago1. I don't want spam from the site. 2. I definitely don't want to use my github email address on this site so that future spam from them or the people who hack them looks like it came to my github address.
- seshakiran 8y agogetting 500
- jadjoubran 8y agoHey! It's probably because there's no confirmed primary email in the Github account
- Kaveren 8y agoThis just goes to show that if someone publishes any learning resource, people will shower the author with praise regardless of the quality, or even trying the resource out. We do not need yet another JavaScript learning resource, we have good ones. Mozilla Developer Network is the best one, but there's also Free Code Camp, Eloquent JavaScript and javascript.info among many others. Don't write a resource for the sake of doing so unless you can bring something new to the table. This is totally scummy. There's no way I can see to go to the upgrade page. Instead, it forces you to complete the lessons up to it before asking you to pay $25 for continued access. So it requires time investment first. Doesn't tell you the price first either. Asking for $25 just to learn about arrays is purely abysmal. This "course" also doesn't even seem to go over exceptions, but I can't know that for sure because I'm not paying $25 to see the expanded table of contents. Also don't like that you're charging $25 before I can even learn about the DOM because half of this is incomplete. I like that this teaches you not to use the var keyword! Pleasant to see that for once. That's the best thing I have to say about this. Can't skip any lessons at all, even to browse. Back button does not do what it should on some pages. Hitting "Next" should not refresh the page if I cannot go to the next page. I was somehow able to trigger a bug where I didn't complete two challenges and it marked them as completed. Automatically sending me emails when I don't use your application for three days without asking me first, I have to figure out it's what a mail icon in the menu toggles. Awesome UX. Nice that I can't send a message to support without letting Drift send me emails about upcoming promotions. Edit: The purchase page tells me $25, but the payment prompt says 25 euro. Seems awfully like trying to mislead customers purposefully to pay more. Easy to miss.
- plausibilities 8y agoIn the land of the blind, the one eyed man is king. Throw The Emperor's New Clothes, Impostor Syndrome, and Late Stage Capitalism mentalities into the mix and it's little surprise that these things play out the way they do every single time.
- grumpwagon 8y agoIs there a way to remove an account?