Meetup: Enterprise JavaScript Version 1

Posted on 1 Comment
Enterprise JavaScript Version 1 poster

As with a lot of other posts on my blog, this one is also delayed. I mean, A LOT delayed. The event happened in June, so you get the idea.

In Delhi/NCR, not a lot of software meetups happen. The scene is maturing but is not yet on par with the other techie cities such as Bangalore or Hyderabad. Again, not a lot of software meetups happen here and definitely not enough on JavaScript.

One tendency I’ve consistently observed in this region is developers’ reliance on jugaad. That is, they try to “duct-tape” their way through the code if they cannot find out the root cause in a reasonable amount of time. I know, we have all been there once. But this culture is less pronounced in technically more mature cities such as Bangalore.

When it comes to JavaScript, the attitudes are even worse. A lot of developers see it as a ‘scripting language used for validations in browser.’ Yes, some devs do realize the power of frameworks such as Angular, React and Ember in creating full-blown applications. Still, there’s a lot of us who do not see JavaScript itself as a first-class OOP programming language. That is simply tragic! So back in June I thought enough was enough and that this attitude toward JavaScript MUST change.

The opportunity to organize and curate a meetup themed on enterprise use of JavaScript came from Gaurav Gandhi, a great community builder, techie and AI geek. So I worked with him to organize this meetup, signed up a few speakers, and got the venue arranged.

From our consistent promotions on meetup.com, we got 400+ RSVPs! But going by our earlier experience, we weren’t expecting more than 30 (10% of total). Around 50 actually turned up. Man, that was no less than a mini-success.

Coming to the event’s agenda. We planned it as a sequence of conference-style talks by industry experts. For more, I’ll probably just copy-paste from our meetup.com page.

Enterprise JavaScript: Are You Using It THE RIGHT WAY?
Learn from startup journeys, hands-on exercises and product showcases

JavaScript is arguably the most popular programming language on planet[1] and yet a lot of us use it the WRONG way! But the blame is not entirely on you. With so many learning resources around — courses, blogs, tutorials, books, and what not — it’s hard to find the best place to start or improve. Most of these learning resources target a beginner audience. That is where the problem lies! In an attempt to be concise, they leave out the finer details that separate a good programmer from a bad one.

Don’t worry, we have all been there. Learning is a great way to improve. But is there a better way? Of course there is: it’s called “hands-on experience”.

In this special edition event of our popular NCR meetup, we bring to you that priceless experience in the form of 5 sessions. Do not miss out on the opportunity to hear from and interact with distinguished developers behind some massively scalable consumer and B2B apps. Learn from real-world experiences as speakers share their journeys on implementing NodeJS and client-side JavaScript at scale.
Learn to code in JavaScript and NodeJS the RIGHT way!

Meetup.com: Enterprise JavaScript – Journeys, Code Labs & Showcases

Here are some pics from the event:

Many thanks to 91springboard for generously sponsoring the venue and food. Kudos to all the wonderful speakers. And special thanks to all who came to attend, learn and share 🎉.

Stop Blindly Following W3Schools!

Posted on Leave a comment

I started out learning to create websites by reverse engineering web pages that I found and liked online. The way I got started with CSS is an interesting story. I started developing static websites at a young age. I produced mostly ugly pages by myself and a wee-bit jazzy ones using something like Macromedia DreamWeaver. I hadn’t yet discovered the mystical world of stylesheets.

In the summer of 2006, it had only been a few days since France’s heart-wrenching loss in the final of FIFA football World Cup when I was absentmindedly browsing some WC pictures that I had painstakingly downloaded over my super-slow Internet connection. That delightful little folder of my favorite images was inside SUSE Linux. Whether it was version 9 or 10, I cannot remember.

As I was a KDE junkie, I naturally had the folder open in Konqueror, KDE’s default web and file browser. While scrolling through the list and mindlessly clicking this button and that menu, I stumbled across an option to generate a gallery out of images. I curiously clicked this option and, *boom*, there it was — a gallery of all photos in the folder in the form of a web page. What a beautiful web page it was. The page had supporting files, full-sized images, thumbnails, and an intriguing file with .css extension.

Clicking the CSS file opened it in my text editor. “Interesting, a .css file is only a text file,” I said to myself. Most of the contents in that file didn’t make sense to me, but there were these other pieces that seemed quite obvious such as background-color, color and font-family properties. In my reverse engineering fashion, I made a few changes here and there and refreshed the web page in browser. *Boom*, some of my changes were actually reflected. This seemingly innocuous incident created a minor explosion of curiosity in my mind.

Out came a new tab in Firefox, hastily typed were the letters “google.com” in address bar, and with a thud was hammered the Enter button on keyboard. A big search text box appeared in the next few seconds. What did I type in it? CSS, of course silly. To where did the very first search result point? W3Schools, of course silly. And so began my journey of learning CSS from the most popular web development learning resource on planet. I regret it to this day. My regretful mistake didn’t end at CSS, it was augmented by my learning HTML, advanced HTML and even JavaScript from W3Schools.

Out came a new tab in Firefox, hastily typed were the letters “google.com” in address bar, and with a thud was hammered the Enter button on keyboard.

Fast-forwarding to present times, just a couple of days ago I was listening to episode #7 (Online Resources for JavaScript Developers) of JavaScript Jabber, a popular podcast series for the lovers of the beautiful language. It was in it where a couple of web experts echoed my feelings about W3Schools. Just to be clear, when I was learning from the “great” W3Schools, I didn’t have any such feelings. In fact, I deemed every word and example on the website a work of experts, which they probably were. However, my feelings changed drastically when I “grew up” and started to discover most of my coding style that was derived from W3Schools was composed of a collection of anti-patterns.

In order to appeal to a wider section of audience and to make things simple, examples listed on W3Schools tutorials dumbed down so much that best practices were sacrificed. Take for instance their use of event handler attributes, such as onclick and onfocus, all the while blatantly ignoring the principle of separation of concerns. This was not even mentioned as a cautionary note to the initiated. Tricks and lies such as this put me back in my career by at least a couple of years.

<button onclick="var hello='world'; alert(hello);">Click me</button>

For years W3Schools piggybacked on the “W3” name to maintain its popularity. Meanwhile, other respected developer resources such as Mozilla Developer Network (MDN) took a diametrically opposite approach of going into deep discussions about each aspect of building blocks of the web. That looked scary initially, but with time your eyes and mind adjusted. I recently finished Part I and II of an exhaustive JavaScript resource called JavaScript.info. It also takes a profound approach similar to MDN’s. In fact, it encourages one to read W3C’s original specifications on various matters. Yes, it’s time consuming but hugely rewarding when applying your learning into practice.

I would like to conclude this rather loooong blog post by saying this:

Do not follow W3Schools or any such simplified online resource without questions. Be extra careful, use common sense, and do compare your learning from other (more detailed) sources. Do not let the details scare you away. Embrace detaily things. But don’t follow even the detaily things blindly.

Delightful professional (free) music by Joseph McDade

Posted on Leave a comment

When I was looking for intro music to use in Dev Blabber podcast series, I came across Joseph McDade‘s work which was recommended by a famous podcaster. As one can see on his website, he’s produced only a handful of tracks. But each one of them is literally high-quality and professional. Clearly, a lot of effort and hardwork has went into creating such fantastic pieces. Hats off to the guy 👏🏻.

I ended up picking On The Verge, an ambient-rock piece from his first batch. Go check it out. And while you are there, check out his other tracks as well. If not for creative use, then for your own enjoyment.

Flutter experiments

Posted on Leave a comment

During my time spent on App Brewery’s Flutter course, I created not one, not two, but 12 (twelve) apps. That’s a bunch! All apps are simple, nothing complicated, except the last 2-3 ones which have slightly complex widget trees. Creating in Flutter is fun, I have said that before. It’s fast and enjoyable. I will continue this journey by creating at least a couple of real-world apps.

Here’s a list of all my Flutter experiments so far:

  • I Am Rich — replica of the eponymous sensation of bygone era; dead simple and 100% static
  • Mi Card — your professional contact card, as an app; another static one
  • Dicee — simulates rolling of 2 dice; introduces state
  • Magic Ball 8 — a magic ball simulator; takes the concept of stateless and stateful widgets further
  • Xylophone — simple app with beautiful sounds; introduces Flutter packages and playing audio
  • Quizzler — a pretty quiz app; introduces modularizing & organizing code
  • Destini — a Bandersnatch-style decision-based game; solidifies OOP concepts
  • BMI Calc — a body mass index calculator; introduces routing and solidifies creating beautiful UIs
  • Clima — a weather app; introduces using network & location APIs and solidifies routing
  • Bitcoin Ticker — displays exchange rates for popular cryptocurrencies; solidifies what we learned with Clima
  • Flash Chat — a real-time chatting app; introduces Firebase as a backend and adding authentication
  • Todoey — a simple TODO app; introduces complex state management using Provider pattern

My Restaurant Reviews — a WordPress plugin

Posted on Leave a comment
Screenshot of My Restaurant Reviews widget

This post is long delayed. It should have been an announcement but will now be a backstory.

Back in May (4 months ago!), I did a website redesign for SkewerSpot, our family business. SS is a cute little restaurant/cafe in Jalandhar, Punjab, with a wide selection of snacks and waffles. We specialize in waffles, all sorts, especially stick waffles. Earlier the SS website was a pure Bootstrappy static thing. The design had become outdated, and it was difficult to maintain. So I redid the entire thing in WordPress. It looks pretty neat now, go check it out!

At that time, I was faced with a very specific problem. We have our online presence on Zomato, Swiggy, Google Maps, Instagram and Facebook. We get reviews on all these five platforms. I wanted a way of showing reviews/ratings from these sources in a unified interface. To address this specific problem, I created a specific WordPress plugin. It’s called My Restaurant Reviews (or ‘Mr.R’).

I wanted to create this as a dirty, cowboy-style plugin for my own website. But I soon realized it’d be cool to have others also benefit from it, since a lot of new-gen restaurants are cropping up each day that perhaps face the same problem that I did. So off I went to the awesome WordPress Plugin Handbook, read it cover-to-cover, and got to work. Within a couple of weeks, I had the first working version. Writing code in PHP again was nostalgically pleasant experience. I learned so much about the internals of WordPress, my respect for the platform and its code quality increasing everyday.

Anyway, in early June I finished it, and submitted it for publishing on the great WordPress Plugins Directory. What a scary name, haha! Thankfully, it was accepted after a short review. I’ve heard that there’s a rigorous review process for all plugin and theme submissions, and some contributions are rejected daily for not following their coding standards. Didn’t happen to me 🙂

You can find and install it on your own WordPress website or blog from its official plugin page. Source code is on GitHub. There’s still so many improvements that can be done, especially in terms of adding support for more review platforms (currently only Zomato and Google Maps are supported). See TODO. With my arms spread, I invite ya’ll to help me take it to the next level.