Blogs

Telly: English TV still smacks American tellys bum

  • Posted on: 20 February 2014
  • By: NickLitten

So, I emigrated over here to the New World (as my redcoat forebears used to call it) five years ago. During this time I've been lucky enough to travel all over America, driven coast to coast twice, lived in various States and met many wonderful people. The weather is fantastic and life is good... I wouldn't consider moving back to Blighty. Nope. Life over here is better but, I do miss British Telly. :(

American TV just doesn't have the... oh I don't know what to call it... the 'je ne sais quoi'

I enjoy watching Sci-fi, sit-coms and any other gripping drama that makes me say "just one more episode before bedtime"

So, in a mission to record what's good out there I've decided to blog about series as I watch them, and as I find them. For other ex-colonials, I will include magnet links to the Torrents.

Nuff said.

For an ever growing list of decent/funny/gripping/weird TV series (or seasons as my colonial friends call them) just click here http://nicklitten.com/tags/telly

 

 

 

Speeding up SQLRPGLE using static indexes

  • Posted on: 31 August 2015
  • By: NickLitten
never enough time to program in RPG

SQL is a wonderful beast for quickly getting data from huge tables (aka Files). The trouble with SQL is that it's so very simple to use; programmers get lazy and sometimes forget to do the analysis to make it as simple and #FAST as possible!

It's easy to overlook performance tuning because SQL goes out there and uses any existing access paths for the data it wants, and if it cant find one then it creates a temporary path to get that data. It's like magic. This is great but that split second of temporary path creation can add up when it's done over and over again.

How do we fine tune our SQLRPGLE programs?

We can use Index Advisor in System i Navigator to look for naughty indexes and take it's recommendations for action. But this needs IBM I Access to be installed. So, what if we don't have access to any tools to help us out?

I was at a client site this morning and they had a SQLRPGLE webservice running and complained about the run time. This is a fairly complex SQLRPGLE program that is getting a selection of data from a long list of tables and they were experiencing average response times between 5-9 seconds. But somtimes much much longer... anything over a couple of seconds is way to long in the webservice world.

Here is a SOAP/UI screen shot of a test run of the webservice. The time is shown in the bottom right corner - a whopping 23.956 seconds.

Turnover 2 - Checking out code, editing and compiling using the Programmers Work list

  • Posted on: 13 August 2015
  • By: NickLitten

Checking code out - this is booking the code or reserving it for *you* to work on.

This takes a copy of the high level (UAT, QA, TST or PROD) into your developer library and lets you work on it. You work and compile it in there using the Programmers Worklist (which is Turnover's version of PDM)

Turnover - Software Change Management Tutorial for IBM i, iSeries and AS400

  • Posted on: 13 August 2015
  • By: NickLitten
Turnover for iSeries V100 Main Menu creating projects and tasks

So, I've been working on a freelance gig for some time now and the client uses Turnover (by Unicom) to manage their software development on their development system - an IBM Power System running the IBM i operating system. The Project involved writing some web-services to provide a web based interface between an old #ERP system and a new PHP enhanced warehousing system. There is a small team of 4 programmers on the project but software change management is just as important with a small team as it is with a huge global one...

I was asked to create instructions for team members to easily use the basic process for:

Part 1 - Using Turnover Projects and Tasks

Part 2 - Checking out code, editing and compiling using the Programmers Work list

Part 3 - Promoting code using Turnover Forms

System21 - Phone numbers for any customers on sales orders

  • Posted on: 11 August 2015
  • By: NickLitten
SQL Inner Join on AS400

During a meeting this morning, I was asked to provide a list of all Customer phone numbers for any System21 Customers that have ever been used on a Sales Order.

Perhaps this sounds like a complicated request but... have no fear SQL is here!!! In reality, its a very simple thing to find and takes just a few seconds using a SQL INNER JOIN.

How can we use SQL to find this data?

In this example, I'm working on a data cleanse to make sure that the phone numbers are properly formatted before sending them to FEDEX as part of the shipment information. We know that some of our data is badly formatted so lets quickly see how many are good, bad or ugly. Using SQL we can see all CUSTOMER entries from the Customer Master file (SLP05) which have been referenced on the Sales Order Header file (OEP40).

The SQL command goes like this:

 

SELECT cusn05, dseq05, cnam05, phon05 

FROM slp05                            

WHERE EXISTS                          

(SELECT *                             

FROM oep40                            

WHERE slp05.cusn05 = oep40.cusn40)

 

Webservices and RPGLE - Converting Character to Numeric

  • Posted on: 17 June 2015
  • By: NickLitten
Srdhar Maheswar likes to type

I'm in the final stages of a fun project writing web-services to interface INFOR System21 (on an IBM i aka AS400) with ACSIS Visitrack (on Windows Server), we are consuming (receiving) and serving (sending) all data in a standard alphameric layout But... as any RPG programmer will know... the conversion between alpha to numeric is easy to overlook and can quickly bite you in the arse.

This morning, I had a long discussion with one of the technical analysts talking about the differences in data layout between the "web" world and the "IBM i" world. Out there in website land data flows around in nice alphabetical chunks. I mean, my name is simply "Nick" and the number sixty seven is simply "67" and two and a half is simply "2.5". But in the database world character can be fixed length "Nick      " or varying length "Nick%" and numerics are commonly stored as packed decimal data so 67 could be stored in a field that is 15,5p so would look like "000000000000067000".  It sounds complicated but if we keep our code clean its a simple process to switch between these formats. Lord Sridhar Maheswar - I promised to write a blog about this to make it clear... here it is  :)

Drums The Word - Website Version Two Point Oh!

  • Posted on: 14 June 2015
  • By: NickLitten
Robert Litten - rob the drummer
Over at DRUMS THE WORD a new kid is on the block; the new kid is the old kid, but with a new coat on.
 
The King is dead so long live the King!
 
Rob and I have been working together over the last six months, between him in Hampshire (England) and me in California (America) and now South Carolina... we've taken his seven year old Drupal website and been through a full Drupal upgrade, but after lots of review and ecommerce tests Rob decided it just wasn't for him. His artistic flair took my logical programmer brain and gave it a well deserved right hook.... So, other CMS were reviewed and finally the winner was WordPress and Woocomerce. The final result is pretty damn slick and I'm super proud of the website collaboration that Rob and I have created. Many bottles of wine have been consumed, many Skype conversations have (literally) spent all day in design, testing and website revamps to come up with a rather cool new website.
 
Drums the Word V2.0 is born
 

Website Cleanup - Delete Drupal Users who have no ubercart orders

  • Posted on: 11 June 2015
  • By: NickLitten
sql trips for drupal

Migrating Cousin Rob's www.DRUMSTHEWORD.com website from his 6 year old Drupal6 website to a new (hopefully sexier) Wordpress4 website has meant a lot fo data cleansing before golive. Before we get any comments about Drupal vs. Wordpress, or a CMS flamewar, the new website was chosen to be on Wordpress because of WOOCOMMERCE and a neat Wordpress Theme that had already been selected.

So, I'm going to leave a little blog about any particular problems I found, or cool tricks I found, during data migration.

The old drupal website had over 48,000 users defined... many of them spam... many of them dead... many redundant or no longer needed.

So how do we cleanup users?

Using the PHP panel I used this SQL script to select the users that have been registered but who have never ordered anything using Drupal6 Ubercart:

select count(*) from users where mail not in (select primary_email from uc_orders) and uid <> '0' and mail NOT LIKE "%drumstheword.com%" and mail NOT LIKE "%projex%"

note: do not touch uid=0 because this is the ANONYMOUS user and do not touch any *@drumstheword.com or *@projex.com users

this will give you a count value showing how many users are selected and if your ready to delete then just use:

Pages