CRA Phone Scam from (844) 801-9243

This morning my wife had a voice mail message from a ‘James Morrison’ from CRA (Canada Revenue Agency) with a thick Indian accent threatening a lawsuit. I’ve received several of these CRA phone scam calls over the years but this is the first one for my wife.

For any Canadian that receives a phone call from CRA threatening a lawsuit, do NOT call the number they give you in the phone call, i.e. (844) 801-9243, but rather go to CRA’s web site, look up phone number for your region and then give them a quick call to double check with them.

The bottom-line is that a call from (844) 801-9243 or a call that wants you to call (844) 801-9243 IS A SCAM – do not call.

Regards,
Roger Lacroix
Capitalware Inc.

Scam / Fraud, Security 2 Comments

LG Open Sources webOS

Déjà vu. LG just released an open-sourced version of webOS:
http://www.lgnewsroom.com/2018/03/webos-enters-next-phase-as-global-platform-under-lgs-stewardship/

webOS Open Source Edition (OSE) offers a strong development environment that enables easy collaboration with other platform developers, as well as distinctive built-in user features.

For those who don’t remember, the webOS merry go round, you should read the webOS Wikipedia page:
https://en.wikipedia.org/wiki/WebOS

Regards,
Roger Lacroix
Capitalware Inc.

Mobile, Open Source, Operating Systems Comments Off on LG Open Sources webOS

IBM MQ Fix Pack 9.0.0.3 Released

IBM has just released FixPack 9.0.0.3 for IBM MQ V9.0 LTS
http://www.ibm.com/support/docview.wss?uid=swg24044508

Regards,
Roger Lacroix
Capitalware Inc.

Fix Packs for MQ, IBM i (OS/400), IBM MQ, Linux, Unix, Windows Comments Off on IBM MQ Fix Pack 9.0.0.3 Released

IBM MQ V9.0.5 Continuous Delivery Announced

IBM has announced IBM MQ V9.0.5 Continuous Delivery:
http://www.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/4/877/ENUSZP18-0084/index.html

New features and enhancements for clients with MQ Advanced entitlement
– Enhancements to the previously delivered Replicated Data Queue Manager support
– New support for the MQ MFT REST administration interface
– Identification of MQ Advanced installs
– Improved performance for MQ AMS encryption on MQ Advanced for z/OS® VUE

New capabilities for both MQ base and MQ Advanced clients
– Increased security flexibility and updates
– Updates to the MQ Console
– Enhancements to syncpoint performance

IBM MQ (aka WebSphere MQ) homepage
http://www.ibm.com/software/products/en/ibm-mq

Regards,
Roger Lacroix
Capitalware Inc.

Fix Packs for MQ, IBM MQ, IBM MQ Appliance, Linux, Windows, z/OS Comments Off on IBM MQ V9.0.5 Continuous Delivery Announced

High performance IBM MQ & JMS applications

Bastien Jansen has written a blog posting called: High performance IBM MQ & JMS applications. If you program in JMS and IBM MQ then you should definitely read the blog posting. You can find it here:
https://bjansen.github.io/java/2018/03/04/high-performance-mq-jms.html

Persistent messages are used by queue managers to guarantee message delivery.

That’s not the correct IBM terminology. It should be “assured message delivery“, otherwise IBM lawyers get their shorts in knots. 🙂

Regards,
Roger Lacroix
Capitalware Inc.

IBM MQ, IBM MQ Appliance, Java, JMS, Programming Comments Off on High performance IBM MQ & JMS applications

New Raspberry Pi 3 Model B+ Released

Raspberry Pi Foundation has just released a new Raspberry Pi 3 Model B+.
https://www.raspberrypi.org/blog/raspberry-pi-3-model-bplus-sale-now-35/

It has a faster CPU, upgraded networking and improved thermal management.

    Specifications:

  • Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz
  • 1GB LPDDR2 SDRAM
  • 2.4GHz and 5GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE
  • Gigabit Ethernet over USB 2.0 (maximum throughput 300 Mbps)
  • Extended 40-pin GPIO header
  • Full-size HDMI
  • 4 USB 2.0 ports
  • CSI camera port for connecting a Raspberry Pi camera
  • DSI display port for connecting a Raspberry Pi touchscreen display
  • 4-pole stereo output and composite video port
  • Micro SD port for loading your operating system and storing data
  • 5V/2.5A DC power input
  • Power-over-Ethernet (PoE) support (requires separate PoE HAT)

Regards,
Roger Lacroix
Capitalware Inc.

Education, Linux, Open Source, Operating Systems, Programming, Raspberry Pi Comments Off on New Raspberry Pi 3 Model B+ Released

Debian 9.4 Released

Debian Project has just released Debian 9.4.
https://www.debian.org/News/2018/20180310

Debian is a free operating system (OS) for your computer. An operating system is the set of basic programs and utilities that make your computer run. Debian uses the Linux kernel (the core of an operating system), but most of the basic OS tools come from the GNU project; hence the name GNU/Linux.

Regards,
Roger Lacroix
Capitalware Inc.

Linux, Open Source, Operating Systems Comments Off on Debian 9.4 Released

What is the default behaviour of method writeString of MQMessage for Java?

Paul Titheridge has posted a blog item over at developerWorks with the title “What is the default behaviour of the IBM MQ classes for Java method MQMessage.writeString(String)?”:
https://developer.ibm.com/messaging/2018/03/09/mqmessage-writestring-default-behaviour/

Regards,
Roger Lacroix
Capitalware Inc.

IBM i (OS/400), IBM MQ, Java, Linux, Programming, Unix, Windows, z/OS Comments Off on What is the default behaviour of method writeString of MQMessage for Java?

Levels of JRE and GSkit bundled with IBM MQ

IBM has posted a support note regarding the levels of JRE and GSkit bundled with IBM MQ
http://www.ibm.com/support/docview.wss?uid=swg27038676

Regards,
Roger Lacroix
Capitalware Inc.

IBM MQ, Java, JMS, Linux, Security, Unix, Windows Comments Off on Levels of JRE and GSkit bundled with IBM MQ

Creating a Standard for MQ Messages to/from SQLite DB

Yesterday, I wrote about MQ Messages to/from SQLite DB which are a pair of utilities for offloading and loading messages to/from SQLite database.

I thought it would be a good idea to publish what I designed so that other vendors, companies or users can easy use the standard.

First, the SQL to create the table is:

CREATE TABLE IBM_MQ_MESSAGES(Version            INT,
                             Report             INT,
                             MsgType            INT,
                             Expiry             INT,
                             Feedback           INT,
                             Encoding           INT,
                             CodedCharSetId     INT,
                             Priority           INT,
                             Persistence        INT,
                             BackoutCount       INT,
                             PutApplType        INT,
                             MsgSeqNumber       INT,
                             Offset             INT,
                             MsgFlags           INT,
                             OriginalLength     INT,
                             Format             CHAR(8),
                             ReplyToQ           CHAR(48),
                             ReplyToQMgr        CHAR(48),
                             UserIdentifier     CHAR(12),
                             ApplIdentityData   CHAR(32),
                             PutApplName        CHAR(28),
                             PutDate            CHAR(8),
                             PutTime            CHAR(8),
                             ApplOriginData     CHAR(4),
                             MsgId              BLOB,
                             CorrelId           BLOB,
                             AccountingToken    BLOB,
                             GroupId            BLOB,
                             Data               BLOB );

I like the KISS principle, so the name of the table is “IBM_MQ_MESSAGES”. Clean and obvious. The column names are directly from the MQMD structure in cmqc.h file.

    Column layout for the table:

  • The MQMD MQLONG fields are all INT (32-bit) columns for SQLite.
  • The MQMD MQCHAR fields are all CHAR(*) columns for SQLite.
  • The MQMD MQBYTE fields are all BLOB columns for SQLite.
  • The message data (payload) is stored as BLOB column in SQLite.

The naming standard for the SQLite database file is based on the queue manager’s name, the queue name and the current day’s date.
I.e.

    QMgrName–QueueName–YYYY_MM_DD.mqsdb

  • QMgrName is the name of the source MQ queue manager
  • QueueName is the name of the source MQ queue
  • YYYY_MM_DD is the current year, month and day.

For a file extension, I decided to create a uniquely identifyible file extension called ‘mqsdb’. Now, I could have gone with a more standard file extension like ‘db’ or ‘sqlite’ but I wanted something more descriptive that would clearly identify the file’s purpose.

Next, reducing the database size or attempting to keep it as small as possible. Hence, any MQMD field that was either all blank or null, I set the table column to null for that record. This is done for all 9 CHAR fields and 5 BLOB fields.
i.e.

/* Is the Format field all blank? */
if (memcmp(pMD->Format, MQFMT_NONE, MQ_FORMAT_LENGTH) == 0)
   sqlite3_bind_null(hStmt, 16);
else
   sqlite3_bind_text(hStmt,  16, pMD->Format, MQ_FORMAT_LENGTH, SQLITE_STATIC);

/* Is the CorrelId field all null? */
if (memcmp(pMD->CorrelId, MQCI_NONE, MQ_CORREL_ID_LENGTH) == 0)
   sqlite3_bind_null(hStmt, 26);
else
   sqlite3_bind_blob(hStmt, 26, (char *)&(pMD->CorrelId), MQ_CORREL_ID_LENGTH, SQLITE_STATIC);

So, in theory, if the Format field is blank or the CorrelId field is null, then by setting the column field to null, it should save disk space.

Finally, reading the SQLite database where certain columns may or may not be null.

/* Retrieve the Format field, is it null? */
p = (char *)sqlite3_column_text(hStmt,  15);
if (p != NULL)
   memcpy(md.Format, p, MQ_FORMAT_LENGTH);

/* Retrieve the CorrelId field, is it null? */
p = (char *)sqlite3_column_blob(hStmt, 25);
if (p != NULL)
   memcpy(md.CorrelId, p, MQ_CORREL_ID_LENGTH);

So there you have it, a new MQ Messages to SQLite database standard that I hope everyone will adopt. 🙂

Now, for those people who REALLY like to read code, please don’t get your shorts in a knot because the column numbers are different between writing and reading the database. It is one of those quirks in SQLite. For sqlite3_bind_* API calls, the column number begin with ‘1’ whereas for sqlite3_column_* API calls, the column number begin with ‘0’. Hence, that is why they differ by 1 and it is something you just need to remember. 🙂

Maybe some time in the near future, I’ll write another blog posting on how to handle this new MQ Messages to SQLite database standard from Java.

Regards,
Roger Lacroix
Capitalware Inc.

C, Capitalware, Database, IBM i (OS/400), IBM MQ, Linux, MQ Message Replication, Open Source, Programming, Unix, Windows Comments Off on Creating a Standard for MQ Messages to/from SQLite DB