Make a bash script detect the directory it's stored in, to access data there

You may need to write a bash shell script that accesses data stored alongside the script, while your current working directory might be elsewhere. In my case the shell script needed to use Node.js scripts stored next to the shell scripts -- the shell script acting to simplify running the Node.js scripts. The "data" to be accessed in this case is the Node.js scripts, plus the support modules required to run them. You may have other data like a list of hostnames or who-knows-what.

The basic outline is

Easily import your CSV data into MySQL with Node.js

It's convenient to import a CSV file into a spreadsheet to crunch numbers. CSV's (comma-seperated-values) and it's brethren (TSV, for tab-separated, etc) are widely used to deliver information. You'll see CSV downloads available all over the place, whether it's your stock broker or bank, or a government agency, and on and on. Spreadsheet programs like LibreOffice Calc offer direct import of these files, and then as a spreadsheet you've got a zillion tools available to crunch numbers, make graphs, etc.

Canon introduces a new mirrorless digital camera, Canon EOS M5, 24 MPixels of goodness


Canon has expanded their line of mirrorless digital cameras, the Canon EOS M series, with a new entry, the Canon EOS M5. It has a 24 Mega Pixel APS-C sensor. Also introduced is the new Canon EF-M 18-150mm f/3.5-6.3 IS STM lens, offering a an almost 10x zoom ratio.

Fixing "Maximum call stack size exceeded" in async Node.js code

I've happily used the async module for Node.js for years to simplify asynchronous operations over arrays. This is a difficulty in the Node.js paradigm, since the "normal" way to process an array is with a simple for loop. But if the operation is asynchronous the for loop has no way of knowing when to iterate to the next item, or even when processing is finished. Instead the async.eachSeries function does the trick, because your code tells async.eachSeries when to go to the next item, when there's an error, and it knows when the last item is processed, etc. It's been great.

Deprecating buggy npm packages, dealing with deprecations

It seems several critical npm packages deprecated older releases. Installing the old version of some packages causes npm to print a warning saying the package was deprecated, and to use a newer version of the package. Sometimes the message suggests a way to figure out where the package is being required. Due to the way an npm package can pull in other npm packages, it can be tricky to figure out where the deprecated package version is being used.

Click here for more Node.js programming advice

Setting up LibreOffice to access MySQL database with JDBC driver

I wanted to try using LibreOffice Base on Mac OS X to play with a MySQL database. I thought it would be easy, just connect to the database and start doing queries, maybe even pull data into a LibreOffice spreadsheet for advanced data munging. But doing the obvious thing got me messages like "No Java Installation found" and "the driver class com.mysql.jdbc.Driver could not be found". Further, yahoogling with some obvious search phrases turned up nothing. writers can save their work using this screen-scraper script written for the purpose

I've been writing for for over 7 years, and with the news that they're going to shut down I needed to retrieve over 540 articles to repost them on my own website. Lesson learned - it's better to own your own platform than to write for someone elses platform. Anyway, the result is a Node.js script I'm calling articlescraper. The purpose is to traverse an index page that might be split over multiple pages, then extract the articles from the pages linked from the index.

The demise of, what's it mean for citizen journalism?

examiner-logo-blue.jpgIt wasn't that long ago that online news sites began killing off the traditional news services. Many newspapers and magazines have either shut down (costing many cities a vitally necessary check on local government), or else shrank, or else transitioned to an online service. A generation of writers and journalists are under turmoil in a time period where we desperately need a check on the powerful elite.

Fixing 'Enter passphrase for /dev/fd/63' in a Gitlab CI job

gitlab-stacked_wm_no_bg.pngIf you're a Gitlab user you're probably hoping to use Gitlab CI to automate builds and deployments. You probably want to deploy something using rsync, using an SSH key for security. Unfortunately (in my opinion) the official Gitlab documentation is confusing.

Is Node.js / Express scalable? How to grow Node.js app deployment to handle more traffic?

nodejs-dark.pngSince Node.js is billed as being very fast, high performance, application development platform, you might think it automatically "scales" to fill out server resources and satisfy a huge workload. While you can do this with a Node.js application, you have to design the scaling mechanism yourself. With no additional configuration, a Node.js application can saturate a single CPU core and handle as many transactions as that core can sustain.


Subscribe to Front page feed