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
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 www.javascriptunscripted.com and www.jsunscripted.com 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 –

Codeacademy

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.

Takeaway

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.

Takeaway

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.

Takeaway

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.

Takeaway

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.

Conclusion

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 classy.red-and-black-typewriter

Practicing and improving coding skills

I try to keep in good programming shape same as keeping your body in shape, by working it out. And just like exercising your body, the more you exercise your programming skills – which in itself isn’t that much removed as it is also a psychosomatic experience more towards the neural range – the better you get and find higher nuances and abilities which seem to appear out of nowhere. The inverse is true, you stop and results slowly deteriorate.

So to that end these are the main things I proactively try to do daily:

* This is a really really good course that dives beneath surface to examine the innards of the engine and how it feeds through to the idiosyncrasies of the language to exploring a library, building your own to ES6. First few sections are more theory laden and even after that you’ll need to follow along in an ide and repeat to keep pace and retain (you’ve been forewarned). Also I bought the course as part of another deal and not on Udemy but it’s the same author and seems to be same content.

** Only recently joined the group and members are relatively intermediate to superbly skilled in various functional languages. JavaScript doesn’t seem to be a popular one but I tend to stick to it :).

Now just want to touch upon why each of these types is relevant and how their synergies would yield better returns to learning and improving.

Website based Algorithm practice

This is crucial as most sites offer a varied mix of questions to try and solve. They also include tests which check various inputs to verify if the solution you passed it is actually valid. Downsides include that most of these are in browser and you miss the setting up and growing (head wrecking) potential of setting up project structure yourself. Another point is that unless if you know how to debug your own code or use browser tools you’re often left to the mercy of the sites test suites to verify your code – which might actually be right sometimes but a glitch or something might not let you pass.

Beyond the basics JavaScript lessons

One of the key issues with tutorials online is that they often tend to be geared towards the beginner and then go off explaining the basics ad nauseum then whatever tangential exposure the author(s) feels relevant. These are crucial in the beginning but however might be lacking in actual real world uses or scenarios – especially when it comes to higher level language function and usage.

Higher level courses like these are imperative for moving beyond a certain level where you might find yourself stagnating. This could be perennial beginner (moving on from one intro to another), tutorial collector (similar to the first one but often more project based work). So this would improve your semantic programming capabilities by improving your syntactic knowledge and structural paradigm.

Caveat, unless an ample process and repeated practice is used this will tend to fall into the tutorial ghosting syndrome (you pass through it or vice versa without hardly any residue). The onus is on ourselves to absorb the content and try elevate our own skills and by using it at higher levels of difficulty.

Meetups for programming

This is a great way to not only learn how to program but to network and meet people who not only share the same interests as you, but would have vastly different and varied experiences and skills.

The one I joined has a particular emphasis on meeting and splitting off into pairs and solving a programming challenge in an hour. Along with hearing about, being exposed to new languages or paradigms, you actually might start using a new language or an approach which otherwise you would never have come across. And the time constraint enables you to realise how to structure your approach and tooling for most challenges and gauge your own efficiency or lack thereof.

Of course to everything there is a downside. Often in the form of social settings or maybe not having as much skill as you’d like (or thinking that you don’t which is worse) to not being able to¬† physically make it to the meeting. But suffice to say the group I have is very welcoming, and although I was totally out of my comfort zone, programmatically, it gave me, in a very short session, areas to focus on to improve or learn further.

So this is my primary tact to practicing and improving, Let me know in the comments how you go about structuring your daily-weekly programming life. Keep on coding.

 

AngularJS To do App – Part IV

Following from the previous entry, there was just one feature remaining for the rudimentary functionalities of our app:

  • Check of an item

I added an input checkbox to the ngRepeat construct. And after some fumbling around and going through some forums + angularjs developer documentation, I managed to apply a simple class styling to the item in the list when the checkbox is checked.

// Class applied when model ticked is true
<input type="checkbox" name="tickbox" ng-model="ticked" />
<span ng-class="{'checked': ticked}"> {{ item }} </span>

// CSS style that's applied
.checked {
text-decoration:line-through;
color: gainsboro;
}

This accomplishes a somewhat crude implementation of a To Do list item being checked off. However, the styling seems to fall through to the next item when a checked item is deleted. Also a checked item should preferably be locked from being edited.

So that still needs to be worked on and possibly some extra refactoring of the code in terms of button states as extra conditions required to prevent the fall through will only add to the growing list of conditions on some of the buttons already:

<button type="submit" ng-show="updateShow" ng-click="update($index, editedItem); updateShow= false; showEditInput = false; editShow = true;">Update</button>

Apart from that some aesthetic tweaks to the design and form is warranted. So stay tuned and check out the latest:

App – To Do | Commit