Full Stackie Rant!


(Daveyon Mayne) #1

Can I say pissed here? Well fill in the blanks "I am **** upset with the JavaScript Eco!

I must say I have learnt a lot! A LOT since I’ve started back in late 2012 and early 2013 on just Ruby and then Rails shortly after. Till date, I love Ruby very much.

Trying to build a project or your own startup, you are a full stack developer; you do every damn thing. My simple app, I thought, only needed vanilla Ruby on Rails. Later it needed bootstrapping so ok. As I get deeper of what I wanted, I needed JavaScript, JS. Added minor JS and all seemed well. My mind now seemed to be after a more complex feature. I looked back where I was coming from and wondering where am I getting all these crazy ideas from:

User post a project. Project goes to the nearest student. Student has x time to accept or decline. Project goes to the second nearest student etc Then the feedback process

While I can easily whip that up (damn lol) I needed advanced JS! Here comes React. Loved it! Took me few months to understand it. Yes! As I get deeper into React, my app does not work correctly because I now needed Flux. What tha hell is Flux? Now I’ve left from doing easy and stress free backend work to some crazy frontend coding. Flux got me confused so I was told about Redux. Okaayyyyy then. I understand it…a bit. I even bought the course on React, Redux and Rails:

Here is what gets me upset. You are working with version 1 of a framework. Version 2 comes out with a feature you’ve always wanted but you currently use NPM with an important package some else has written. Version 2 framework makes your life easy, very easy and less code so you update. Now your npm does not work and this leaves you to wait for the npm owner to update.

Using someone else’s code is good and bad at the same time. You have to wait for an update. Worst with Meteor. Meteor is ok but it’s in a mess. That is another topic by itself.

How do full stackers deal with your day job or current/past project? JS is getting crazy. Cycle.js vs React vs Angular vs Polymer. Flux vs Redux. TF! Meteor says one language to rule them all etc

I thought this would be an easy ride. I now believe backend is easier than frontend. Fronenders get crazy and stressed out. I was.

I have looked on Swift and in a day I understand it so I may say goodbye to the web development world and focus on mobile apps – who knows.


(Marc Cooper) #2

:slight_smile: You’ve learned the lesson that us old timers bang on about. The whole javascript ecosystem is a mess. It won’t change, because it’s built on foundations of sand, particularly in the browser.

I still prefer sending html from a template system in the back end, and handling any JS with jQuery (and a few libraries). It’s simple and sufficient.

There are two fundamental problems with JS in the browser. First, it’s a crap language. At first, folk were outraged that anyone would say such a thing. Yet now I hear it’s all going to be “fixed” in ES6. There are excellent parallels here with PHP, btw.

Inexperienced developers fix things with code (because you can always make things work with code). Any ecosystem that’s eternally fixing things with code is doing it wrong. Usually because there are lots and lots of inexperienced developers giving it momentum. Always, always be suspicious of the next great thing (TNGT). In my experience, TNGT comes along about once a decade. They never arrive with a bang. They slowly gain momentum.

The other fundamental problem with JS in the browser is its concurrency model. It doesn’t have one. Using callbacks is ridiculous. But if all you’ve known is callbacks, then that’s what you’re going to hack.

So, given your current situation (and the fact that all we have in the browser is JS — madness, imo), then I’d suggest simplifying — it almost always works — and just use JS, jQuery, and the odd mature JS library. People will point at you and laugh at you in the street, of course, but you’ll get stuff done, and avoid wasting time learning yet another JS framework and another and another.


(Daniel Newns) #3

I 100% agree with @auxbuss simplify the app, do you really need react, meteor or whatever framework your using? from the example you give id say no! you have a simple from that posts data to a DB i’m assuming and then from there you send out emails. that can all be done in the backend language you choose. Get this working first that way then progressively enhance that with javascript that bit is key, don’t make it only work with javascript make it work without and then sprinkle some JS goodness on top to make it sweeter.

Add some Ajax for submissions with jQuery or any other fancy thing you want, don’t make the whole process of submitting a simple form be dependant on JS just make it better with JS, sleeker, smoother, have nice animations etc.

just my two cents anyway :slight_smile:


(Daveyon Mayne) #4

You are correct. I do remembered you had a post on here about JS but not sure where it is.

Im drained at this point as ive spent weeks in the JS world. Callbacks are rubbish for me, JS gets me crazy. I need a break from all the madbess. Oh and by the time I’m back at it, i may just write my own language to compete lol


(Daveyon Mayne) #5

Im on mobile so I cant quote etc…

Well the app works without Js. Its just that I needed the awesome goodness but that requires some crazy level of code


(Daniel Newns) #6

what awesome goodness do you need? do you have a live version of the app up somewhere for us to look at?


(Daveyon Mayne) #7

Not live. I fell in love with real time so the app was done around that.


(Daniel Hollands) #8

Quoted for truth. :sunglasses:


(Daniel Hollands) #9

If you’re looking to stay inside the Rails ecosystem, take a look at Rails 5 - specifically Action Cable. I know little about it myself, but I understand it’s designed to allow for the real time updating that you desire.


(Steve Jalim) #10

(Note: I’m in a decidedly bad mood today)

That pretty much sums up the pain here.

Your business doesn’t need real time.

Your product doesn’t need real time.

You got distracted by the shiny things and lost sight of what (I think) your original goal was: a business with a working product.

Some JS is likely needed, but not React and Flux, nor Meteor, nor Angular, nor $HOTNESS$. The less code you have to write, the quicker you get to market, the less you have to maintain, the easier it is to pivot.

Less gets you further away from the start line, faster


(Daniel Newns) #11

100% correct all this time its taken jumping from pillar to post in different languages, learning new things you could have had the product to market getting real user feedback which to me is way more important than making x shiny etc.


(Daniel Hollands) #12

While I agree with @dnewns, @stevejalim, and @auxbuss here - to take a step back and look at this from @SylarRuby’s point of view, he reminds me of when I was new to coding.

Although I was spending my time working towards something specific (Unknown Tales, mostly), I was enjoying the process of learning new things, and discovering new technologies. This means I had to restart my projects several times, and never actually got around to releasing my project - but I don’t view any of this as wasted time - rather I accepted it as the learning curve.

I guess it depends on what’s more important to you, @SylarRuby - building a product which works which you can make some money from (in which case, the trio mentioned above have already told you want you need to do) - or learning new ways of doing things (in which case you have to accept that you’re going to be standing still for a while).

PS, this is highly relevant:

http://www.commitstrip.com/en/2014/11/25/west-side-project-story/


(Daveyon Mayne) #13

You are 100% correct on that. I got distracted with the bells and whistles.

I have it installed but the js stuff does not. Good thing Devise works.


(Daveyon Mayne) #14

I’ll remove all the js stuff and rebuild this with Rails 5. No react etc, then see how it goes. BTW, Rails 5 is awesome.


(Daniel Newns) #15

yes you are right it does depend on what you want from it, if your after a product to release to market to potentially earn some revenue from then get it out there, don’t move around all the new shiny. get it out the door earn revenue and then look to shiny the hell out of it.

there is also another side to the restarting project in x language thing and its something I see time and time again, you start something in a new language you get x% through and you get stuck your understanding isn’t good enough to find a solution to the problem because you haven’t really learnt the basics and gone through in depth the knowledge thats available. then you see a new shiny thing that fixes that thing your stuck on so you rebuild in that new shiny and you get further through but get stuck again rinse and repeat.

Yes its great to know as many new shiny things as you can, but trust me on one thing its just as great to know one of those shiny things excellently as I can guarantee you that you could build 85% of the things you ever need in that shiny thing because you truly know the limitations of it.

By shiny thing I mean Language, also im not having a go at anyone out there i’m just seeing more and more people jumping ships from this to that because of X Y and Z when they never give it a real chance and get to know it well enough.


(Marc Cooper) #16

Seriously, try elixir and its web framework phoenix. It’s fun. No blocking issues, no complex callbacks (unless you insist), baked in ES6, no magic.

The book, Programming Phoenix, is a good place to start, though you’ll want to be familiar with elixir syntax before you start. The web-site docs are sufficient for that.

phoenix has inbuilt channels. Realtime is crazy simple.


(Daveyon Mayne) #17

Hmmmm I’ll have a glance at it and see.


(Andy Wootton) #18

I always come back to the thought that the web was designed for hypertext documents, not distributed transactional computing and it’s another of the wrong turns we took, like PCs, RISC distracting us from concurrency and there being no time dimension in the relational model.

I’m going on @mattpointblank’s Web 101 course though. Maybe he can fix me.

I’ve just remembered that Ted Nelson says they didn’t even get hypertext right.


(Steve Jalim) #19

Nooooooo! As lovely as Elixir is, stay on target! :o)


(Biscuitnapper) #20

Yup, this is pretty much where I am as well. I think my motto now is just to use the frameworks as prototyping/self-education tools rather than actually use them for a project.

It feels great to be honest as I don’t feel so bad about getting deeper into how the web+JS actually works rather than trying to be shmancy with new frameworks that keep ‘updating’ (and yes, so much pain with meteor.js - I’m definitely past the honeymoon period).