DEV Community

I have been programming since I'm 10, Ask Me Anything!

Norman on May 20, 2019

I started off with Commodore Basic on a C64 when I was 10 years old. Most of the things I know are self thought. But it was slow because I didn't h...
Collapse
 
karataev profile image
Eugene Karataev

What tools do you use to prebuild your Vue.js applications on the server in deploy time?
It seems that client side rendered SPA and even server side rendered in runtime application don't suite the JAMStack app definition:

When is your site not built with the JAMstack?
A single page app that uses isomorphic rendering to build views on the server at runtime.

Collapse
 
koehr profile image
Norman

That is an excellent point you make here. In the JAMStack the frontend is completely static. So either you simply use a Vuejs application as is, which wouldn't be pre-rendered, or you use frameworks like Nuxt and Gridsome which both can render a static, prerendered and self-hydrating (means, Javascript takes over the pre-rendered page later) page for you. It is also possible to write the Webkit magic yourself using prerender-spa-plugin.

Collapse
 
karataev profile image
Eugene Karataev

I haven't heard about prerender-spa-plugin before, will give it a try, thanks πŸ˜‰

Thread Thread
 
rixcy profile image
Rick Booth

VuePress looks pretty interesting too (vuepress.vuejs.org/). One of the main benefits to using prerendering is SEO. Without any prerendering, Google will usually end up thinking the page data is just 'we're sorry, but x doesn't work properly without javascript enabled' which isn't ideal :D

Thread Thread
 
karataev profile image
Eugene Karataev

In my experience Google bot is able to crawl content even from SPA with content generated on the client. But having the website prerendered on the server is definitely much much better for both performance and SEO metrics.

Thread Thread
 
koehr profile image
Norman • Edited

Indeed. Also despite Google being able to parse and execute Javascript, the functionality is not only limited but also deferred. According to Google, the bot is putting everything on a late execution list that takes longer than a few milliseconds. Your website might need a few days or even weeks to get indexed this way.

This source here explains it well: seopressor.com/blog/javascript-seo...

Thread Thread
 
koehr profile image
Norman

Vuepress is great for pages that are very blog or documentation like. Customization is possible but not as easy as with Gridsome or Nuxt.

Thread Thread
 
rixcy profile image
Rick Booth

Yeah true, haven't used Gridsome before but Nuxt seemed really powerful in what it offered on top of Vue. discovery.journeyfurther.com/how-t... is a pretty interesting article on Googlebot crawling and where it may be heading in the (hopefully near) future.

Collapse
 
marcode_ely profile image
Marcos Aguilera Ely

What's the perspective to make a React/Vue/Angular atomic according to separate the components?

I having trouble in thinking how much components do I need in my SPA and separate.

Would be nice some wisdom.

Collapse
 
koehr profile image
Norman

That's a very common question in the Vuejs Berlin Meetup (that I'm organizing).

There's no definite answer to that of course. I usually separate something into its own component as soon as it works on its own but not if it's just a couple of lines that are definitely specific to the current component or page.

Don't treat specialised components. If there's something that you must probably don't reuse or would need to rewrite to make reusable you still can put it into a component if it is helping with readability

Collapse
 
xxxx_rosa_xxxx profile image
✿ Rosa ✿

Why are designers of programming languages not simplifying syntax till we can solve problems and figure out the language without having to read a manual for ten hours whilst still providing the best manual in the world for that programming language that is ever improving ,etc.

Collapse
 
koehr profile image
Norman

Programming a computer is inherently complex. Programming languages are attempts to make the formulation of instructions for computers easier, but this comes at a cost. The machine code that gets generated will be more complex and less optimized the more abstracted the language is. To mitigate this compilers have very sophisticated methods to analyze and optimize the code as much as possible. This requires computing power and lots of RAM.

More abstraction also gives less flexibility as it always leads to specialization. It is for example very easy to calculate things and draw bar graphs with a software like Excel. But it gets very hard to maintain as soon as it grows. On the other hand is it much easier to structure some code of a general purpose language, like Python, to create anything Excel can do and more. But Python is already much more complex and therfore harder to learn than Excel.

To stick with the example: Python also comes with lots of great libraries that abstract away the nitty-gritty. It is very easy to plot formulas with the right library. But as soon as you want to do something that the library doesn't support you have to work around it or, even worse, lose all the nice abstraction and suddenly need to implement drawing routines by yourself.

That became a wall of text already, sorry for that. But one more thing to showcase my point:

Languages like Ruby and Python are attempts to make programming much easier. Compared to C, Java or Rust, they spare you lots of complexities like typing and memory management. And while it seems easy when just using the languages you'll quickly see the main difference as soon as you compare their performance. Ultra high level languages like Python and Ruby are 100s if not 1000s of times slower than lower level languages.

Collapse
 
koehr profile image
Norman

Actually you might want to check out this approach: metacode.app

Collapse
 
blacksmoke16 profile image
Blacksmoke16

Goes to show if you enjoy what you are doing, nothing can stop your learning. Have you ever heard of the Crystal language?

Collapse
 
koehr profile image
Norman

Yes I heard of it and really like the approach of a static typed language with Ruby syntax. I never used it in production though.

Collapse
 
samwightt profile image
Sam Wight

Seconding this, Crystal has all of the things I love about ruby but with static typings, better speed, great docs, and a pretty great community.

Collapse
 
vuild profile image
Vuild • Edited

There's only one question.

Did you have this?
nightfallcrew.com/wp-content/galle...

Collapse
 
koehr profile image
Norman

I'm afraid I now know why I never got to be a famous musician :(

Collapse
 
vuild profile image
Vuild

I had one & I am not a famous musician. Yet. 😳

You may remember these competitors too.
en.wikipedia.org/wiki/ZX_Spectrum
en.wikipedia.org/wiki/Amiga_500

Thread Thread
 
koehr profile image
Norman

I do but never had any of them. I have a friend though who's collecting old hardware of this era

Thread Thread
 
vuild profile image
Vuild

I have a bunch.

16KB RAM on the Spectrum 😭

Collapse
 
svedova profile image
Savas Vedova

What was your first program/website that you ever built?

Collapse
 
koehr profile image
Norman

The very first program was probably one of the examples in the commodore 64 programming handbook.

The first I was paid for was a python software for parsing xml structures that would describe recipes for some kind of provisioning system. That was back in 2008 I think.

Collapse
 
ben profile image
Ben Halpern • Edited

How long have you been developing in Rust? How's it going so far?

Collapse
 
koehr profile image
Norman

Unfortunately no professional (paid) projects yet. I used it for some pet projects since about a year come and go. I still fight with the data lifetime stuff but apart from that I'm very happy.