JavaScript String Interpolation

Up till now in JavaScript, the only way to ever insert variable content into a string was to concatenate the string with the variable, ensuring that there was proper blank spaces around the text to ensure that it looked like a normal sentence :

var name = "Simon"; 
var age = 24;
var sentence = "Hi, my name is " + name + " and my age is " + age;

Other languages such as ruby, C# have had a handy little feature that allows placeholders to be used inside a string literal i.e. anything between the single or double quotes. This alleviated the long winded string + variable + string… formations.

ES6 (EcmaScript 6) brings this capability to JavaScript with String Interpolation. In similar fashion to languages that have had this feature already, it works by using template literals as placeholders within the quoted text:

var name = "John";
var age = "30";
var sentence = `Hi, my name is ${name} and my age is ${age}`;

Apart from the Template Literal – ${variable} – token, the other thing to take note is that back ticks “ are needed and not the usual single (‘ ‘) or double quotes (” “).

ScrollMagic – Pinning Tutorial

So I didn’t quite start on what I had previously said I would – rebuliding one of my first apps ‘Luas App‘ using React.js. Instead I got sidetracked by my many a feathered, tutorial hell and tumult of life. I did however been meandering through various endeavours in the social media space focused on coding. First being my latent programming youtube channel

And the other being my new instagram page (channel, space?):

So in the midst of all that, I came across yearly periodical “The Ultimate JavaScript Manual 2019.”

Some interesting reads, good for getting to see what’s what from the who’s who on web development – I think. Apart from the tooling section, the frameworks and examples aren’t my cup of tea. You still fall into the tutorial trap.

One that I picked was Scrolling animations using ScrollMagic. Looking back at the article, I HIGHLY doubt I did the tutorial mentioned. Instead I just made a quick tutorial video while I was trying to pick apart the items they had mentioned and trying it out on my own.

These are the key points:

  • ScrollMagic works on the concept of controllers and scenes.
  • Controllers set the stage for the animation objects and global settings of any contained scenes.
  • Scenes define the settings for the item being referenced e.g. a floating indicator, or navigation bar that needs to be pinned to the viewport.
  • Once the scene is set, it is passed onto the controller to take effect.

I only used jQuery and the ScrollMagic library and plugins – the latter two is shown when you first visit the ScrollMagic site.

For the setup and walkthrough, check out my video tutorial:

I’m hoping to get back into ScrollMagic animations soon and do some more explorations and tutorials. So stay tuned. Until then, adios.

Back at it – Can you say Full Stack Web Development?

Admist a flurry of finishing up final year of my computing degree and that oft unforeseen but ever present pummelling that life likes to give when you least expect it, I am completely drained – mentally, physically, intellectually and emotionally – in all sorts and manners. Add to which I LOVE to put my fingers in more pies than I have fingers and over extend myself. A figurative fly that built its own reticular web onto which it has entangled itself – ahhh so relaxing. So there you have a quick glimpse of my overall state.

One of the main things I’m focusing on at the moment:
Full-Stack Web Development Mini-Degree from Zenva

I’m going through the paces of HTML/CSS/Bootstrap what have you. It does give a fair bit of exposure around the basics, and builds something practical which you can use to salvage parts from later. The responsive web design part left a bit wanting, but, at this stage i’m going to reserve judgement till I’ve completed more parts of the course.

These are the courses as part of the program

  • Learn HTML and CSS by creating a responsive company website
  • The Complete Responsive Web Design Course
  • Intro to Bootstrap
  • The Complete Guide to Bootstrap 4
  • JavaScript Programming – Learn by Making a Mobile Game
  • Create Interactive Pages with JavaScript and the DOM API
  • Build JavaScript Applications with Vue.js
  • Discover jQuery – Create Interactive Websites
  • Reponsive Admin Pages with Semantic UI
  • Node.js for Beginners – Create Server-Side Apps with JavaScript
  • Modern JavaScript – From ES6 to ES9
  • Express for Beginners
  • MongoDB for Beginners
  • Server-Side Rendered Webapps with Node.js, Express and MongoDB
  • Create REST APIs with Express and MongoDB
  • Build Web Applications with React
  • Intro to Next.js
  • Project-Based Next.js – Games Website
  • Intermediate React and Redux
  • Introduction to GraphQL
  • TypeScript for Beginners
  • Learn Angular by Creating a Web Application
  • Git and Github – Version Control and Collaboration
  • AWS Deployment for Node.js Applications
  • Azure Deployment for Node.js Applications

Quite the set of tutorials. However I’m just aching to get back into JavaScript. So while I’m currently at the beginning levels and won’t be jumping in some juicy JS as soon as I’d like, I’ve decided to take up one of my old projects, Simple Luas App [Repo], and rebuild it using a framework. Thinking React because why not.

I know there’s some redesign, structural changes and additions I need to do to the site, but hey this sounds like more fun. So stay tuned for that and till then auf wiedersehen.

Site is back up!

It’s only been a month, and few days since the last post. In a bit to prevent spam comments on the site I installed akismet. However that resulted in the site breaking and me left with a 500 server error with not a clue what the hey was going on.

Brown rolled hay

After finally fixing the issue and being able to access the site, the spam comments seemed to be getting worse – roughly 2-3 almost every 5 minutes. So had to re-break the site and leave it hanging with a 500 error.

Fast forward to today, finally got the site back online, spam control installed and functional AND also got the child theme back up :D.

First order of business is light clean up of posts and refresh images and links. Other tasks to follow:

  • Update change log
  • Extend child theme
  • Build extra sites to focus on non javascript topics

That’s it for now. Stay tuned.

Happy Third Anniversary JavaScript Unscripted!

I missed making an entry on the anniversary itself as I was pretty much flying for nearly 14 hours yesterday (2nd Feb) not counting boarding, transit and the other pointless rigmarole. But here we are, third year:

  • Domain and hosting has been brought under one roof
  • Multi-site WordPress installed
  • Custom theme still to be imported

One thing I’ve noticed moving is that I have nearly 2000 spam comments. Not certain if Bluehost’s proprietary WordPress setup contained anti spam controls or what not. Also all my media files are AWOL as well.

That will next on the agenda with with either a sub-site or another WordPress site for all the other development topics I’ve been itching to explore and write about.

ut that will next on the agenda with with either a sub-site or another WordPress site for all the other development topics I’ve been itching to explore and write about.

New Year, New Host!

Betwixt the many moorings of life’s business, JavaScript Unscripted has moved hosts – now both and are under the same registrar – NameCheap.

I just managed to import all posts from the previous wordpress blog and nearly had a conniption, as subdued as my demeanor allows. Yes, quite. So between reinvigorating this blog and other much needed maintenance – key being bringing my custom theme back – stay tuned!

My Path to learning JavaScript: The story so far…

It’s been a lean period for this blog and plans to add extra sections and improve the design has been pushed to the back – way back. So in the meanwhile I thought I’d reflect on the path that I’d taken on learning JavaScript:

Often the road(s) taken to learning something is usually clear cut, unless if you happen to undertaking becoming a programmers (aka developer, coder, coffee conversion engine). Even with a particular language or technology stack that is not often quite as linear as one would hope.

In this case I want to focus on just a language, which happens to be the main topic of this blog (how dare I). So usually, people tend to become what they are either through planned coincidence – studying to be become a software engineer – or through some other non traditional ways.

I want to elucidate on how I have approached JavaScript as in the steps, tools and systems which have helped me – as far as I can remember and any pitfalls or fog of war that I may have encountered. So these are what I can retroactively recall –


This is probably the earliest one where I started learning JavaScript. Most of you might be familiar with this – an in browser tutorial which walks you through the fundamentals, syntax and usage of JavaScript. It has a host of other languages and used to be completely free; currently offers a mix of free and paid PRO courses which lets you gain verifiable skills in a particular category.

My experience

I have had completed the full web dev fundamentals i.e HTML, CSS, JavaScript. But after the first run came out feeling like I’d gained or retained nada after it was done. I’m pretty sure most people do.

Fog of war anecdotes

One complaint I hear from beginners is how they tutorial, book, site etc they are using has come to an end and most inarguably feel like they’ve not learned anything. This is the experience of most, usually ones who’ve not had previous exposure to programming or similar… er, experience. It is normal, you can’t and shouldn’t expect to grasp something, let alone master it, after just one pass. Most of the pratice was having to complete a few lines of code with the rest being auto generated or copied from previous lessons.

Take away

What this should be is a primer, nothing more than an introduction to the topic. Browser based systems are great for on the go, quick stab at a tutorial or solving a few algorithms, but for the most part, everything is setup for you – the environment, files etcetera.
You aren’t going to be able to retain much where you only altered or added very little in terms of new content or ideas. But don’t downplay it, it’s meant to be an easier way for beginners to get used to the terminology and ways. Use it for what it is.

JavaScript in 24 hours

I’m pretty certain I’ve used SAM’s 24 hour series, at this point can’t remember if it was Java or JavaScript, pretty sure it’s JS. Either way, the outcome was I didn’t stick to it, wasn’t motivated, wasn’t appealing not sure what it was. It was the book’s fault, yeah that’s what it was ūüėČ

My experience

Having had no prior proper experience to learning programming or computer science, I think I might’ve just glossed over it and couldn’t maintain the enthusiasm for this tome. Mind you this was back when there weren’t all the cool frameworks, ide’s, udpates to JavaScript, heck don’t even Node was barely even released yet. Mind you it wasn’t the wild unruly west of JavaScript days, but it wasn’t where it is now

Fog of war anecdotes

There was nothing but fog of war with very low visibility in all directions and the radius of view very small.


Often times you will come across books and material which aren’t exactly great and would have grandiose titles such as learning something in 24 hours – the print version of click bait. But it serves to remind that this is the nature of the landscape. I can’t definitely say if this book is good or not as I haven’t gone past probably the first half of chapter one so you’re intrepertation might vary.

One skill you need, apart from being able to learn to shorten the time to learn and absorb new things, is that you will inarguably also have to separate the wheat from the chaff.

Microsoft JavaScript book

Now this is probably the first one that I came across that had substance. It seemed content heavy but did delve into aspects and nuances of the language which would lead to more than just a superficial glance.

My experience

The step by step nature, as the title suggests, does walk you through not only the explanation but also practical demonstrations which helped to see what each concept was referring to.

Fog of war anecdotes

As a standalone take on a language, that is a much misunderstood as¬† reviled, this was starting to lay down solid foundations for future development, pun intended. Atleast I was able to see what JavaScript was at this point as opposed to the all previous attempts and stil coming away thinking the JavaScript was just an ephemeral, ethereal notion which I still couldn’t even manage to get a tenuous grasp on.


Regardless of what my previous experiences were and having only made miniscule advances and understanding from this book, it is key to note that only through persistence and repeated effort can one sometimes understand something, let alone master it. In terms of a free floating language as JavaScript this is more so.


Free Code Camp

If codeacademy was the drive down to the nearest village to get supplies, this is the trip up to the basestation of K2 to get started.

My experience

A very noble effort to not only instill the basics but also almost all concepts and theories that would be required to become a full stack developer.

Fog of war anecdotes

This site has given the best in terms of the lay of the land. The Curriculum section showcases the entire journey, broken down by sections and a rough estimate of the amount of time taken to complete them. Each section builds upon the previous one and has a very good section on JavaScript and Algorithms. A highly valuable resource for learning and practicing.


This site also suffers from the “I’ve completed it yet don’t know what to do next or remember next to naught” syndrome. The caveat is as usual with¬† code along sites – everything is setup for you and you might only be required to change or update certain parts.

There are projects at the end of each, some of which might seem insurmountable to those with very little experience or problem solving aptitude/attitude.

The algorithms challenge is strictly solve it yourself and has taken me atleast two iterations to be able to actually be self assured to be able to approach and solve them. The very first time I broken through 4-5 and then was stuck beyong relief. The next time I came back I was able to more easily break down, assess and try and solve it. Words of wisdom – console.log is your friend, for anything you think is happening, usually it’s not.

There was an issue of content updates inbetween sessions – usually for the slower of us who take several weeks, if not months, to accomplish each section as opposed to those who just seem to be able to complete it anywhere from 3-6 months, while also taking care of a business, children, side taco truck business, enrolled in med school, computer science undergrad, painting and this site.

So the problem was you would either have to go back to complete the newly added bits (for those of us who hate having an unticked box in the midst of other ticked boxes). Or there would be a complete revamp of the site (atleast 2 that I can remember) or even a completely different beta site which seems more coherent and worthwhile. End result being you switch and completely ignore the one you started. At this point in time I have probably restarted, from scratch, atleast 3 times (including projects) and one attempt at beta which seems to have been locked down so had to come back to the original. Ending ramble now.

JavaScript: Understanding the weird parts

This is one worthwhile course lesson which ‘takes a look under the hood’ of JavaScript. This isn’t a primer, but shouldn’t be considered so advanced that a novice can’t understand it. It focuses on concepts such as closures, dynamic typing, prototypal inheritance with brief primer to ES6 and finally ending in creating your own javascript framework.

My experience

Certain aspects will aid immensely in how you start programming or handling tasks, but that is in comparsion to practice you’ve been putting in. The content of this subject to the same as¬† all others, you can’t just breeze through – consistent practice and repeptition is needed.

You will need to take notes, try out the topics mentioned and revisit to reinforce the concepts mentioned here – I actually blog about topics to get my head around them and as references later on [1, 2, 3]. Especially when it comes to topics such as bind(), apply() etc which you might not readily see their utility or how you might incorporate into your repertoire, especially if you’ve never programmed at this level before.

Fog of war anecdotes

In terms of fog of war, this one would seem to shrink whatever increases in sight you have gained as the topics mentioned might not seem entirely relevant to whatever you might have encountered so far. But that’s just misleading as you’ve not yet experienced such advanced usages and capabilities. So the myopia you experience is only because you have levelled up and into an expanded realm where your latent abilities seem lacking in comparison.


Prior to learning all the fancy frameworks or even JavaScript on the server, i.e. Node.js, this is one very crucial area of the language that needs to be learned. I’m somewhat surprised that this isn’t mandatory part of learning JavaScript. Taking this, or similar courses, which delve deeper into how JavaScript functions from the perspective of its engine will serve well into any application of JavaScript.


This is just choice parts of my journey in learning JavaScript. There are various others that I plan on taking and will need to take, but hopefully this can serve in some way to guide others who might be starting their journey or stuck at particular stages or frames of mind.

By being consistent and journey through, even though where you are right now doesn’t make much sense what needs to be done and where to go will get clearer.

“One does not accumulate but eliminate. It is not daily increase but daily decrease. The height of cultivation always run to simplicity.”¬† Bruce Lee.

JavaScript: remove leading and trailing spaces

Ramble Preamble

Hot on the heels of finishing off one of my non-JavaScript mini projects – the reason why there’s a lull of late on this blog – I’d come to the weary conclusion that somethings you just need JavaScript for. The project in question is a web port of a simple csv convertor desktop app built with python and tkinter.

The web version was done using flask – a python based micro web framework. Most of the logic required was done with the desktop version, which was just simply transferred to the server side code and worked without a hitch. The snag was that the user input had to be sent via a HTTP POST message that would be picked up by the flask routing system, processed and then sent back, not ideal in of itself but stuck with it as I couldn’t find any alternative. The problem was that the post message had a size limit and thereby dropped anything over 1567 rows…

…what can be done in the browser should be done in the browser.

Enter the JavaScript

Realisation slowly dawned that JavaScript is needed, as what can be done in the browser should be done in the browser. Everything was fine until I found out that JavaScript was limited in terms of being able to trim leading or trailing spaces, or so I thought.

A quick search of something similar to Python’s lstrip or rstrip brings up several articles which talk about either using the trim() function introduced with ES5 (ECMAScript 5), extending it using the prototype chain or, prior to that, just crafting your own function using regex expressions.

It just so happens that there are native functions built in that accomplish what I need –

String.trimStart() – Remove trailing spaces from the start

String.trimEnd() – Remove trailing spaces from the end

It’s great for removing any and all trailing white space, including new lines which was causing¬† trouble with my output. However, unlike their counterparts in Python, these functions do not allow passing any character inputs as filters. For e.g. in python, specific characters such as trailing commas or formatting tags like carriage returns or new lines can be passed for removal

Convert to CSV

In my case my code would append a space followed by a comma ” ,” to the end of each row input. This presents a trailing comma which the Python rstrip would take care of in one swoop, of the fell kind. However, thanks to finding the trimEnd() method, the solution that presents itself is very simple if not crude. Come of think of it, I could have easily solved the problem of trailing space with just the trim() function. Anyway here’s the sols:

After having to troubleshoot why my slice wasn’t working as it should – there was still trailing white space – I came to the sobering relisation that the split function does in fact split everything into a new comma separated list (doh). Anyway the extra formatting on line 10, as it was renamed to later on, does exactly that now, but wasn’t needed. Ah well, hindsight is 1 they say…which is what I calculated 20/20 to be – true.

So here’s to polishing off this project with just the bare minimum functionality for the moment, which is convert to CSV.

Quick Update

It’s been nearly 4 months since I’ve last blogged. Partly because I’d been spread thin by flinging myself into project or two that weren’t my own, trying to get to grips with intermediate computing topics as well as the pangs and doldrums of life.

I’ve been trying to set up a framework to ensure everything is tracked, to ensure that all projects that have started and will start, as well as lofty visions, scheming and goals will have a centralized, easy to manage repository from where progress can be tracked, left off and picked up at a later stage and not just have become a swirl of ephemeral brain static and shorts.

Besides that, working on non JavaScript based systems means that whatever I’ve been working on was by default in exclusion of this blog. All of that will be rectified shortly as I hope to create a sub-site for this blog which will encompass all non JavaScript based topics and musings. Also more focused learning paths and more lucid and pragmatic transcribing of those efforts coming soon. Till then, stay