Close

NickLitten's blog

ASUS EEE Pad gives APPLE IPAD a bloody nose

Submitted by NickLitten on Tue, 05/01/2012 - 18:59
Apple Ipad has too many limitations

Ipad to go with the Market leader? Android to go with the new contender? Windows device to see what happens with the big and powerful Microsoft?

I think it depends on what you want to use it for. I personally wanted a device that was as easy and convenient to use as my TV. One that I could carry for email access, web use, and occasional games/music/videos/books etc. I wanted good selection of apps and a (relatively) virus proof OS. For me that came down to the Asus EE Pad.

Using QUICK MENU and ADMIN MENU in DRUPAL7

Submitted by NickLitten on Sun, 04/22/2012 - 15:22
administration menu is simple

Installing ADMIN MENU gives us the most excellent admin menu black menu bar at the top of our website when performing administration functions in Drupal (currently playing with Drupal 7). But we also want to display a User menu, in a similar style, for our website surfers and anonymous users out there. Obviously we dont want to grant anonymous users ADMIN rights to use ADMIN MENU so lets do it like this:

1-Create a Menu to hold our links.

http://www.your-domain-here.com/admin/structure/menu/add

Add a menu (I called mine TOPMENU) and then we will add all our required menu options to it. Once these options are added it might look something like this:

 

2 - Activate the Module to display this menu to the user

Quickbar Module is a a simple administration toolbar. It allows you to take any menu and assign it to a role. This menu will be displayed at the top of your page as an administration toolbar.

So Now we just activate the QUICKBAR MENU Module - http://www.your-domain-here.com/admin/modules

add a simple drupal menu at top of screen

Submitted by NickLitten on Sun, 04/22/2012 - 14:50
drupal simple menu is cool

It's April 2012 and Spring has sprung out here in the Nevada Desert (it was 99 degrees Fahrenheit yesterday - can you believe that?).

This warm weather always gets me a bit frisky. So after taking Muttley for his Sunday Morning walk and I decided to settle in with a cuppa Char for a bit of website spring cleaning, a new theme and some jolly good tidyup work. As usual, this evolved into a whole day spent tinkering with the projex.com menu system. My aim was to get a 'admin menu' style menu to appear at the top of the page without any theme modifications. I considered editting the PHP of the theme and insert something up there but as I seem to be changing themes every few months I decided a slicker soft-coded approach was the way to go.

I had to jump through some hoops to get my desired result (which is hopefully showing a menu at the top of this very page) so heres the Shady Tale of a Sunday Morning deep in the depths of Drupal Menus:

I played with a few different options before coming up with my final solution:

 

Annoying Drupal Error - Notice: unserialize() [function.unserialize]: Error at offset 1066 of 1068 bytes in variable_initialize()

Submitted by NickLitten on Thu, 04/19/2012 - 17:02
annoying drupal error message

So, for the last several months I've been getting this very annoying drupal error message on virtually every page on the website:

Notice: unserialize() [function.unserialize]: Error at offset 1066 of 1068 bytes in variable_initialize() (line 943 of /home/projex/www/www/includes/bootstrap.inc).

I had researched it... tried hacking some little PHP snippets... tried cleaning up the SQL database... all to no avail. But today is a cause for celebration and dancing in the streets. Because its gone! Huzzah! All thanks to a couple of smart drupal chappies and chappettes on various websites who have probably forgotten more about the Drupal Database than I will ever know.

This error is caused by a corruption in the database it self... mainly in a variable called 'variable' which contains an invalid value. So, all we have to do is to find that duff variable and kill it. I chose the method of hitting it with a stick until it ran screaming from the room and straight off a cliff outside the door... falling two miles and landing in quicksand... inhabited by a special breed of quicksand loving Piranha. They made short work of this cheeky little error... I can tell you.

Location of iSeries Access Installation Software

Submitted by NickLitten on Mon, 04/16/2012 - 18:55
where to install iseries access from

Where can I get the AS/400 Client Access Express for Windows software?

In the olden days before the IBM System i... in fact wind back a few years earlier until you get to the old IBM iSeries hardware... dont stop... keep going back into history until you get to the venerable IBM AS400 system... The software that was initially launched to allow PC's to connect to the AS400 was called CLIENT ACCESS. An installable image of Client Access (now called IBM i Access for Windows) can usually be found on the system in the IFS path "/QIBM/ProdData/Access/Windows/Install/Image" or "/QIBM/ProdData/CA400/Express/Install/Image".

So - just for my reference:

For operating system versions prior to version 6:

  • /qibm/proddata/CA400/Express/Install/Image

For operating system version 6 and later (i6.1, i6.2. i7.1)

  • 32-bit: /QIBM/ProdData/Access/Windows/Image32
  • 64-bit AMD: /QIBM/ProdData/Access/Windows/Image64a
  • 64-bit Itanium: /QIBM/ProdData/Access/Windows/Image64i

Softlanding Turnover Consultant - will change-manage for food

Submitted by NickLitten on Wed, 04/11/2012 - 12:33
java wakes the brain on project implementation day

"will change-manage for food" - is that a verb?

I guess it could be - in this crazy world of IT acronyms and dilbert cubical terminology. 

Anyway, I'm in the last couple of weeks of this freelance role helping my customer to configure TURNOVER and promoting a major LMS7.1 Hotel application across 4 seperate IBM Power Systems running IBMi (or AS400's in 1990's speak). It's been a fun contract working with some great people. The downside of doing my job is that if I do it right... then everything will work... and if everything works... then I'm not needed anymore  ;)

So, hopefully this weeks major implementaion will flow smoothly and I will be looking for a new contract in a couple of weeks.

These were the questions I was asked at my interview for this role - maybe they will help some folks thinking about embarking on a role as a 'change management consultant'

 

Change Control Backup - Contractor Position

Interview Questions – Turnover Technical

 

sql is much faster than cpyf

Submitted by NickLitten on Sun, 03/18/2012 - 16:35
sql is much faster than DDS

For the longest time I've heard about the performance difference between a true SQL INDEX and a DDS generated index in IBMi... or 'on the AS400' as the old timers like to say. But is it true? I know that SQL creates its own special access path... and have heard vague rumblings about how it just does things different... and really all of us programmers should be creating files using DDL rather than the old DDS.

So, as part of the project I'm working on we have to copy data from a bunch of rather large files... so I did some real time comparisons and got some fascinating results.

Timings for the big Fight:

Using a physical file with 141,988,325 records in it I issed a batch copy into a DDS version of the file using both CPYF and SQL INSERT and then created a SQL/DDL version of the file and repeated the exercise. Both times running in a single thread job queue when the machine was quiet.

Copy file with 142 million records on an IBMi DDS compiled physical file:

  • DDS –> DDS using CPYF took 19 minutes  (it used 99 seconds processing unit time)
  • DDS –> DDS using SQL INSERT took 18 minutes  (it used 93 seconds processing unit time)

 

Then deleted and recreated the file using DDL (SQL) source code:

Doing Loop the Loops in RPG3 and RPG /Free

Submitted by NickLitten on Thu, 03/15/2012 - 15:31
rpg do loops

So, whenever possible, if I'm editing some old RPG3 or RPG400 code I spend a coffee* cleaning the code up to a more readable form:

  • Use CVTRPGSRC if its old RPG3 stuff
  • Change '1' to *ON
  • Change '0' to *OFF
  • Change Z-ADD to EVAL
  • Insert comments where applicable
  • put some spaces between subroutines and blocks of functionally similar code
  • Then its into WDSC7 and convert to /FREE

Websphere is old technology but I'm not going to spend over $800 on IBM's Ratinal Developer for i version... cmon IBM come up witha sensible price for a source code editor. Obviously, the most sensible is FREE.

DO LOOPS are something that always make me scratch my head when uplifting to RPG4. So just for my reference here is an example of the exact same code in RPG3, RPG400 and RPG4.

RPG3

             DO        SAVRRN        X

X           IFGT      10

             some clever code here

             END

             END

RPG400

             DO        SAVRRN        X

X           IFGT      10

             some clever code here

             ENDIF

             ENDDO

RPG4

   for x = 1 to SAVRRN by 1;

      if x > 10;

         some clever code here  

      endif;

   endfor;      

/me loves some RPG Free format  :)

IBMI not AS400

Submitted by NickLitten on Tue, 03/13/2012 - 00:39
they seek him here

So, as usual... today I was scratching my head with a problem that was kind of outside my realms of expertise. These realms are many, I hasten to add the ones outside are the many ones and the ones inside are rapidly diminishing with my braincells exploding in a puff of logic and old age.

Searching the esteemed searchword engine of High Lord Bing and the mighty Goddess Google I found some interesting stuff about stored procedures.... and as I sit here... late at night... deep into my second bottle of red wine... spool *hich* spellchecking this for the fifteenth time... I realise that this is not the time to type this stuff.

Besides trying t otype technical stuff while playing Facebook Poker is losing me loads of chips.

so... *cough*... its time to sideline this for tomorrow...

and... errm... I will...

What are the best places to eat in Charleston South Carolina

Submitted by NickLitten on Fri, 03/09/2012 - 00:22
love charleston

Loads of choices and a terrific range of great places to eat in Charleston so here's my personal favorites - trying to cover a broad spectrum.

Downtown

My favorite *steak* restaurant is called Peninsular Grill and its smack in the middle of downtown. Just park at the old market on, surprisingly enough, market street and walk to it. http://www.peninsulagrill.com/ is a little up market but with a great intimate feel. The staff are very helpful and it has a superb wine list. After dinner stroll around the area.

I would recommend getting a carriage tour for two (assuming it is just two of you) its a fun way of spending an hour and listening to your carriage driver tell you all the history of Charleston.

Another of my favorites is BASIL. A simply excellent Thai restaurant... if you go... try their famous Basil Duck. That's all I'm going to say. http://eatatbasil.com/

Make sure you visit the Pavilion Rooftop bar downtown (at the bottom end of the market) for cocktails or a lunch drink. Good views and cool all around. http://www.marketpavilion.com/index.cfm?page=pavilion

Camp Bow Wow - a brilliant day care for dogs

Submitted by NickLitten on Wed, 02/29/2012 - 21:59
camp bow is great

A big *THANKS* to all the crew at Camp Bow Wow... yesterday was interview day with Bailey (my 6month old English Springer) and based on the fact that he returned wagging like a loon, grinning, happy and promptly fell asleep right through to this morning... it must have been fun! One new regular customer is sold on your services. Thanks from me and from Bailey Litten ;)

Here is the live video feed from Camp Bow Wow - Can you find Bailey?

Refresh page

Bailey the Flying Dog

Submitted by NickLitten on Mon, 02/27/2012 - 20:53
bailey the springer spaniel

Me and my wing man (Bailey Version 2.0 - the Springer Spaniel) arrived in Las Vegas on Sunday night after a smooth flight courtesy of Delta Airlines. Shipping pets around domestic USA is remarkably easy and pain free:

  1. Make sure dog is all up to date with vaccinations and get a certificate from Vet saying just that
  2. Get a nice crate that Muttley can comfortably sit and lay down in
  3. Put a nice fluffy comfy bed in there
  4. Take Muttley to airport and pay your $fee (it was $200 from Charleston SC to Vegas NV)
  5. He gets checked for drugs, guns and copies of the Quran by the TSA folks and loaded into a special pressurised and heated section of the cargo hold
  6. Fly your flight, disembark and he is brought to the luggage belt
  7. Extract puppy and get covered in canine kisses.

Bailey handled it incredibly well… I think he was more comfortable in his travel cage than I was crammed into the economy cabin (yes I am cheap) watching crappy TV on the headset unit and trying not to torture myself by continually looking at my watch.

All in all a decent experience. The folks at Delta were very helpful and accommodating.

Gets a thumbs up from me and paw up from Bailey.

Turnover and External Procedures is twisting my melon, Man!

Submitted by NickLitten on Thu, 02/16/2012 - 14:43
every rhino expects a soft landing

I've been having problem promoting Stored Procedures today. After an hour of looking at two different Applications defined in Turnover - where one works fine and the other... *cough.... doesnt. I'm still none the wiser. Grrrrr

external stored procedure definition in TurnoverSo this little cheat sheet may come in handy for me (and for you!)

Possible reasons why Turnover can't delete existing stored procedure

For TurnOver to properly promote your routine's catalog entries, you must do the following:

  • Create a source member that uses the CREATE PROCEDURE or CREATE FUNCTION statements, to be run with the RUNSQLSTM or TRUNSQLSTM commands.
  • Give your source member the same name as the program that it references.
  • Use the SPECIFIC statement to give the routine's catalog entries the same name as the source member name.

The *MOVOBJ method is used during archiving of existing catalog entries, during distribution, and during recovery processing, as follows:

JBA Commands

Submitted by NickLitten on Wed, 02/15/2012 - 18:03
the good old jba toolbox

Randomly surfing around this morning - I stumbled across this comment tucked away in some obscure pre-1990's forum in glorious Times New Roman font. Written back in the days when terminals clunked, mainframes were the size of a room, men were men and women were pleased.

Disclaimer - I'm not responsible for any damage caused by anything you do to your computer - use these commands at your own risk... That being said, let's continue...

If you have them installed on your system you should see a list like this one:

 

TOOLS/UTILITIES - Run command TOOLS from any command line in System 21
XAT000 Administration Functions System: HQ140002
Type option(s), press Enter. Position to.....
1=Execute Command
Opt Command Description

 

TUR3333 - No local Turnover system Defined

Submitted by NickLitten on Thu, 02/09/2012 - 16:30
TUR3333 - No local Turnover system Defined

This week I mainly been playing with Turnover V100....

Preparing TURNOVER V100 (Software Change Management tool for IBMi Systems) for a major application upgrade, adding the ability to use Turnover Forms for specifically deleting and/or moving objects from one environment (library) to another. In this case its because we are un-merging a custom program library and breaking it out into application base objects, custom vendor objects and custom internal objects. Yes, its a nice bit of tidy up that puts a smile on my soul.

Configuring Turnover to make it do this however... does not... put a smile on my soul. It sometimes makes it quite grumpy in fact.

Especially when you get an annoying error on the TARGET system saying that it isn't defined to itself.

A TURNOVER distribution was received but no local system is defined. Unexpected results may occur.

No Shit Sherlock! 

You can do it the clumsy way, or you can do it the easy, straightforward way.

Submitted by NickLitten on Wed, 02/08/2012 - 11:44
RPG is going back to the future

I stumbled across this article with some really neat RPG tricks... I'm using one at moment so am cut/pasting it here for quick reference for myself. I've met the author (Mr Bob Cozzi) at the RPGWORLD conference back in 2009. Very smart cookie. I can tell you:

 

How Do I Left-Justify Text Within a Character Field?

Clumsy Solution 1:

D Start           S              5U 0
D End             S              5U 0
D Len             S              5U 0
D MyValue         S            300A   Inz('    01234567')

C     ' '           Check     myValue       Start
C     ' '           CheckR    myValue       End
C                   eval      Len = (End - Start) + 1
C                   eval      myValue = %subst(myValue:Start:Len)

 

This solution uses a typical application of the %SUBST built-in function to extract just the data within the original MYVALUE field and move it, left-justified, into itself via the EVAL opcode.

Clumsy Solution 2:

D Start           S              5U 0
D MyValue         S            300A   Inz('    01234567')

C     ' '           Check     myValue       Start 
C                   eval      myValue = %subst(myValue:Start)

 

Recommended create command defaults from AS400 to iSeries

Submitted by NickLitten on Wed, 02/01/2012 - 14:25
using CHGCMDDFT to set realistic compile parms

This weekend I upgraded an old Turnover 5.4 Change Management installation to the newer V100 version across several LPAR's of a customers IBMi intallation.

As part of the mission to tidy up the Software Change process – I see a lot of objects that are routinely created with various parameters being over-ridden because the defaults don’t fit my customers software development model. Now, the problem with this is that a standard is set and then followed, sometimes blindly, for years. Obviously, any step in a compilation where the programmer has to remember to over-ride the default creation parms is time consuming and error prone.

So, wonder why IBM havent changed the defaults for these commands since the good old AS/400 days:

Could we use CHGCMDDFT to set the following parameters as new defaults:

CRTSRCPF RCDLEN(132)

Increase from old RPG3 standard 92 rcdlen, thru RPGLE standard of 112 to new RPG4/Free standard of 132

CRTPF SIZE(1000000 10000 10) REUSEDLT(*YES)

This size is routinely overridden to *NOMAX (not a good idea) so setting a more realistic default size might be appropriate? 1m records?          

Set Source view in *DEBUG mode to *SOURCE allows developers to debug code and see the code it was compiled with:

CRTRPGMOD DBGVIEW(*SOURCE)

CRTCLMOD DBGVIEW(*SOURCE)

CRTBNDRPG DBGVIEW(*SOURCE)      

roo biks

Submitted by NickLitten on Tue, 01/17/2012 - 22:55
do modenr kinds even know what a rubiks cube is

I've been fascinated by the Rubiks cube since it defeated me, repeatedly, during my youth.

Bloody confusing thing and I refused to read all the books on how to solve it. This was decades before Youtube and the video guides on how to solve it.

But... bloody hell.... new technology has kicked us humans up the bum. LOL

rubikcs motorcycle helmet

I managed it once, Peeling the stickers off helps  ;)

How can I learn Microsoft MS Project 2010

Submitted by NickLitten on Tue, 01/17/2012 - 21:37
micro soft project manager

Microsoft Project 2010 is arguably the best project management application out there. Do the guys at Microsoft do anything by halves?

MSProject is an excellent solution to the problems involved in keeping track of projects as they develop. It easily integrates with other project management software and will import/export from any another software program that you may prefer. Neat stuff. But it's still a complicated thing that I've used many times, skimmed over the top of most of the complicated processes and left me scratching my head about how it works.
 
But now, courtesy of my infamous Uncle Dave, help is at hand: http://www.msproject2010primer.com/

What causes the 'changed outside of turnover' iSeries error message

Submitted by NickLitten on Fri, 01/13/2012 - 17:01
What causes the 'changed outside of turnover' error message

I'm currently working with IBMi (iSeries) Turnover change management system. It's the best SCM (Software Change Management) application in IBMi land and has a great balance between being easy to use and very powerful.

I know the product fairly well, but it still grins and kicks me in the shins occasionally. This week I've been seeing a lot of "this program has been changed outside of turnover" warning message when checking Turnover Forms to promote code changes. But, when I use DSPOBJD to compare object differences, the only thing different is the last used and the change date. Maybe its a system authority change on the object? Or something deeper and trickier...

The trouble is... what exactly is Turnover checking when it compares the old and new objects?

I've frequently scratched my head over this so it's time to submit the following question to SOFTLANDING SUPPORT

What exactly is the cause of "program has been changed outside of turnover" messages...

Pages

Subscribe to RSS - NickLitten's blog

Some Bloke

Projex dot com is the cyber home of Nick Litten an AS400 IBMi developer, RPG programmer, SOA code enthusiast, website tinkerer, information technology evangelist, early adopter, proponent of open source and hopeless technology addict...

Nick Litten looking dazed while refactoring some RPG2 code to kick it into this century

Born and raised in Rainy England, now enjoying programming in the sunshine of Southern USA. Founder of SOFTWARE PROJEX.

Clustermap

Locations of visitors to this page

glqxz9283 sfy39587stf02 mnesdcuix8
sfy39587stf03
sfy39587stf04