I’ve always wanted IBM to take advantage of the “i” in iSeries. Apple had the right idea with iPod, iTunes, iMac, even though I do believe iSeries was there before the iPod came around. Correct me if I’m wrong.
Well IBM, after deliberating with the user community, has taken it to a new level… introducing IBM i. Simple enough?
BTW.. Love the new logo. Not only are we saying goodbye to the OS name i5/OS, once OS/400… now just IBM i.
And for hardware: System i, once iSeries, AS/400, and others before my time… now merged with System p to form IBM Power Systems.
But we’re also saying goodbye to the VRM version naming: so i5/OS V6R1 now simply IBM i 6.1. Believe it or not, I think this will be the toughest one for me to get over since its been around the longest.
Though I think “i” will be tough to Google. Simple is good. “IBM i” seems to Google well.
Lots of changes. I just hope these names will finally stick around. To me its always been the “i” in IBM.
PS: Blog name changes once again :)
I just returned from two days of presenting at the Norteast User Groups Conference on various WDSC and RDi topics. A fun conference, with great attendees and lots of WDSC users!
A couple funny stories about the debugger while I was there. Earlier in the day on Wednesday Jon Paris was telling me about a problem he had seen at a customer site where the debugger was displaying an error about “retrieving children”. I said I had never seen or heard of the problem before. Later that afternoon I’m demoing the debugger in front of about 40 people. I set my service entry point, call my program, the debug perspective opens and up pops the exact same error. I guess I can reproduce that one now :) The good news is I was able to get some details about the error and it doesn’t appear to actually have any functional impact.
In the same demo , I’m stepping over a write to a display file and the F spec is highlighted and I’m hitting “step over” a few times until it gets to the next line, when someone in the audience tells me about the *NODEBUGIO compiler option. I never knew that even existed (and it’s always good to learn something new). What makes this even more funnier, is that about 20 minutes later (same session) another person in the audience asks if there is any way to prevent having to step over I/O multiple times in the debugger. Sure, just use *NODEBUGIO option when compiling your source :)
One last tidbit I learned this evening is that you can’t get the value of a CL variable to show in the hover box when debugging like you can with ILE RPG and COBOL. But this restriction is only if you are using the Remote Systems LPEX Editor as your debug editor (the default). If you switch to listing view in the debugger, or use the Debug Editor (preference on Run/Debug > Compiled Debug preference page) then you can get the value for CL variables to show in a hover box.
I used to say the only reasons for using iSeries projects was:
- Disconnected development
- More structured development (i.e. organizing applications into projects which ideally are finer grained than the large libraries typically used today)
- Change management (being able to store your RPG, COBOL, CL and DDS in the same repository as your Java and Web pages)
However, I have recently been surprised by the uptake of iSeries projects for different reasons. One person on the midrange.com WDSC mailing list was being forced to keep their html files used with CGIDEV2 in a source physical file member on the System i. This makes it very difficult to use a graphical editor like the Page Designer in WDSC because the graphical HTML editors can’t handle the sequence number and timestamp fields. In WDSC 7.0 we added a feature that can have iSeries projects automatically strip off the sequence numbers and timestamp field from each line when the member is downloaded. Using this feature the user was able to use iSeries projects and Page Designer to edit their HTML source members.
Others use iSeries projects to edit their RPG, COBOL, CL or DDS source members solely for the ability to have the workspace track the changes. As you save changes to a local workspace file, the workspace support tracks the changes as a local history. You can then right click on the member at any time and select Compare With > Local History to see each saved change and compare your current edition to any of the saved changes. This capability is not available when editing from the RSE.
This can even work if nobody else on your team is using iSeries projects. Before you make changes to your member, right click on it in the RSE and select “Make Available Offline” (nevermind the fact that you are not working offline). Then from iSeries projects, make your changes to the member. When you are done, right click on the member in iSeries projects and select Remote Actions > Push Selected.
There are a couple things to consider here. When you edit members with the RSE they are locked on the System i just like when you edit them with SEU. So nobody can makes changes to the member while you are editing it. With iSeries projects the member is not locked. So when you go to push your changes you might get a warning that the member has been modified while you were changing it. How likely this will happen and steps you could take to reduce / eliminate this will vary depending on how your shop has it’s development environment setup.
Of course, implementing a change management system would solve the locking problem and give you the ability to track changes :)
Claus Weiss and I did a presentation at COMMON titled RSE Advanced. This was a look at advanced features of the RSE (included in the standard edition of WDSC), NOT the features of RSE only included in WDSC AE. In the presentation we covered customizing the workbench, filters and filter pools, launch configurations, and working in a team environment. [Because I talked too much] we ran out of time and didn’t cover iSeries projects or working disconnected.
I wouldn’t consider most of those topics on their own to be overly advanced, with the exception of maybe filter pools. But that’s just because they are implemented in a weird way to make them more flexible. Filter pools are really just a group of filters. The tricky part is realizing that subsystems don’t “own” filter pools they just reference them. This allows subsystems from different connections to reference the same filter pool.
The main thing I wanted to focus on in the presentation was how to combine all these things to customize the RSE to adopt to the way the user works and therefore make them as efficient as possible. So we dived into options for customizing the workbench layout, views, preferences, keyboard shortcuts and LPEX, LPEX parsers, LPEX actions, user defined actions, customized compile commands, and multiple connections. We also discussed how to set all this up so one person can do the customizations and then share them with other team members.
I think I’ve mentioned in this blog before, that each of these features on their own is good, but it’s the power of combining them and using them together that makes them great. Understanding the possibilities and how to combine them is the advanced part. In case you are interested here is the RSE Advanced presentation.
Over the next few days Nazmin, Claus, George, George (but not the George that writes on this blog :) and I will be heading from the Toronto Lab to Anaheim for COMMON. My last COMMON was Chicago so I’m really looking forward to it (for the past few years I have been speaking at the IBM System i Technology Conference).
We are presenting on pretty much all aspects of WDSC and WDHT along with some of the Rational stuff like change management and EGL. I’ve created a grid of all our WDSC and Rational Sessions using the My Grid tool on the COMMON website. In addition to the sessions that I am presenting, I’m hoping to catch Scott Klement’s session on Web Services from RPG Using HTTP API and one or two of Jon Paris‘ or Susan Gantner’s RPG IV sessions.
I’m also planning to catch up with some WDSC users, business partners and other IBMers. Plus expo, CUDS, etc… so it should be a busy week. I’m planning to do some live blogging from COMMON during the week, so stay tuned.
If you are going to COMMON and want to meet send me an email or just come find me there. I’m generally pretty easy to spot since I’m 6′ 6″ tall and I’ll have my ThinkPad. Feel free to just come up and say hi even if it looks like I’m busy. I’ll be in expo (when it’s running), CUDs (when it’s on), my sessions, Starbucks in the Marriott (during the day), or the Wine bar at the Marriott (during the evening). As a last resort check the pool :)
It has been a busy week here at the lab with customer activities, the biggest being the Toronto User Groups annual technical education conference (TUG TEC). Tuesday I had the opportunity to walk around the expo area and talk to some of the business partners who have integrated their products with WDSC. This included the usual suspects as well as some new ones I had not come across before.
This is one of the great things about WDSC being based on the Eclipse workbench; it makes integrating products into WDSC quite easy. This includes both System i specific tools and other general tools like the PHP Development Tools available from eclipse.org. Below is the list of System i specific business partners who have, or have started to, integrate their applications with WDSC. Other than watching product demos and working with some of them on their integration, I haven’t actually used all of them so I can’t validate their actual usability or functionality.
There are various levels of integration, some just add actions to the RSE that launch their external tools, others have rewritten their user interfaces so they appear natively in the workbench. I just realized these are all RSE or change management related extensions. I need to find out all the WebFacing ones and report those in a separate blog post.
In alphabetical order….
- Help/Systems (formerly Advanced Systems Concepts)
- Linoma Software
Hopefully I haven’t forgotten anyone. I’m sure there are others and this will be something I plan to find out at COMMON in a few weeks. If you know of any others that are System i specific, or you are a business partner that has one, then please post a comment. Thanks.
The other day while watching a Mac versus PC advertisement, I was reminded of other historical comparisons such as Betamax versus VHS and OS/2 versus Windows. Today we have their equivalents such as PS3 versus XBox, Blue-ray versus HD DVD, and the list goes on. For each technology or product, its success depends on the growth of an ecosystem and an entire industry built around a set of supporting products. One only has to look at the phenomenal number of accessories that have been created for the iPod. Whenever a person chooses one product over another, that person buys into a particular ecosystem and is limited to purchasing items that are compatible with it. Therefore the availability, cost and potential value of a system is weighed against those of other systems. So what about the System i and RPG?
Read the rest of this entry »
I was walking the dog Saturday night pondering the frequently asked question: “How do I start learning WDSC?” or “Where do I get started?”
People learn in different ways such as: external courses, in-house courses, self study courses, tutorials, reading a book, articles, or documentation, conference presentations and labs, and by just starting to use the it.
Other factors that affect this are: access to the learning resource (especially for external courses and conferences), time required and cost / budget. Also new users have different learning requirements than an intermediate or advanced user that just wants to learn more details about a specific function.
The good news is that all of the above resources exist for learning WDSC. The bad news is that no single place documents them all and finding them can be a nightmare. So how do we do a better job organizing these resources so that they are easy to find from WDSC? What is that magical starting point?
A solution to this problem already exists on the Web: social bookmarking. Here is the general idea: there is a website del.icio.us where you can install a browser plug-in that lets specify “tags” for any Web page you visit. Anyone can go to del.icio.us and query Web pages based on a tag or set of tags. Give it a try, go to del.icio.us and search for RSE. You can also query based on who did the tagging.
A few people have already started tagging things for WDSC, RSE, and Systemi (tags can’t have spaces). I have been using an IBM internal system social bookmarking service called dogear which allows me to tag both external and internal sites, but I’ll start using del.icio.us for external content.
How does this all relate to WDSC? The embedded help view (Help > Search) in WDSC already searches Google, infocenters, eclipse.org, and IBM developerWorks in addition to the product documentation. We could extend this to also search del.icio.us tags for the search keywords. Or provide quick links that go to some predefined del.icio.us tag searches such as WDSC Conferences (tags WDSC and conferences). Edit: I’ve updated the link to conferences from conference (conferences seems to be used more frequently on del.icio.us than conference).
This allows both IBM and WDSC users to define what resources what would show up. Anyone could add a page to the result by tagging a Web page with keywords WDSC and conference.
I’ve started and will continue to do so. I’ve been using tags WDSC, RSE, Systemi, iSeries, WebFacing, conferences, education, LPEX, and RPG. I’d be interested to hear from others in the System i community who have started tagging.
I just came across an article from ITJungle, about a IBM sponsored marketing campaign called IT Revenge on YouTube. The videos are funny and really get their point across in a creative, almost Office Space sorta-way. Here they are below:
IT Revenge v1.1: Kernel Ape Panic
IT Revenge v1.2: System Crash
IT Revenge v1.3: Fizzy Exception
IT Revenge v1.4: Hard Boot Pinata
For most of us, when we type a document or an email we just think about the words and sentences and automagically our minds / fingers translate that into actual keystrokes. We don’t have to think about each individual keypress. This same type of automatic behavior occurs for most people that have used SEU/ PDM for awhile. They become so used to the environment that their mind thinks “compile” and the fingers automatically enter 14 and hit enter.
If I were to switch from using a QWERTY keyboard layout to the Dvorak layout then I would have to retrain my mind / fingers to know where the keys are. A similar change happens when moving from PDM / SEU to the Remote System Explorer (RSE).
Suddenly all the familiar ways of navigating around are changed and the *gasp* mouse needs to be used (which pretty much removes any automatic behavior). Learning (and mastering) the use of keyboard shortcuts with the workbench can start to bring back some of that automatic behavior and efficiencies.
Below are some of the keyboard shortcuts I find indispensable when using the workbench. I’ve broken them down into 3 areas: Universal, Eclipse and RSE.
Universal keyboard shortcuts are those that are generally accepted in any graphical environment including Eclipse:
F1 – Help: Pressing F1 anywhere in the workbench brings up context sensitive help. Prior to 7.0 this was a pop-up window. In 7.0 a new Help view opens and is updated dyanmically based on what you are doing.
F5 – Refresh: Pressing F5 in the Remote Systems View will refresh the currently selected resource. Pressing F5 in the iSeries Table View refresh the view. In 7.0 you can use Ctrl + Shift + F5 to refresh the outline view for ILE RPG and CL.
Arrow keys: Not so much a keyboard shortcut as an alternative for using the mouse. Instead of using the mouse to drill down through your iSeries connection or table view you can use the keyboard (edit note: this originally said “mouse”, I have edited the post to correct it). If you are on an entry that can be expanded (has a plus sign) then use the right arrow key to expand it or the left arrow key to collapse it. If you want to go up or down in the list use the up and down arrow keys. This becomes very powerful when combined with the next 2 shortcuts. I very rarely use the mouse to navigate any tree view anymore (including Windows Explorer).
Just start typing: Whenever you are in a tree view (Remote Systems view, Windows Explorer) if you just start typing then the tree attempts to find an entry that matches. For example, say you just expanded your library, type QRPG and it will position you to the first match (most likely your QRPGLESRC file). Hit the right arrow key to expand it, then type the first part of the member name and hit enter and it opens in the editor. Look ma, no mouse :) If you are in the iSeries Table View and you start typing a position to dialog appears (similar to the position to information in the top right corner of PDM). In the new iSeries Data Table view in 7.0 if you just start typing a dialog appears where you can enter values for key fields to position the table.
Pressing enter: Pressing enter usually invokes the default action for the selected entry. If the entry is a member then it opens in the editor. If the entry is expandable (i.e. a source file) then enter expands / collapses it.
Ctrl + C: Standard shortcut for copy. You can even use this in the Remote Systems view to copy a member and then use Ctrl + V to paste it somewhere else.
Ctrl + V: Standard shortcut for paste. But like copy, not limited to just the editor.
Ctrl + s: Save the editor. Ctrl + Shift + s is save all editors.
Ctrl + Home: Jump to the top of any view or editor.
Ctrl + End: Jump to the bottom of any view or editor.
Eclipse keyboard shortcuts are specific to the Eclipse workbench, but not specific to any single perspective:
Ctrl + m: Maximize / minimize the current view or editor. Very handy when you are in an editor and want to jump to full screen mode. Note: The LPEX editor overrides the behavior of Ctrl + m for some other action so it won’t work for LPEX out of the box. But all keyboard actions in Eclipse are customizable and you can either assign this shortcut to a different key combination or remove the Ctrl + m that LPEX sets. I’ll cover how to do this in a different blog post.
Ctrl + F6: Toggle between open editors. Pressing Ctrl + F6 and letting go jumps you back to the last editor you were using. Pressing Ctrl while pressing F6 multiple times lets you scroll through a list of open editors. An alternative is to press Ctrl + e which pops up a Window listing all the editors. You can close editors from this list or select an editor and hit enter to jump to it.
Ctrl + F7: Same as Ctrl + F6 except for open views.
Ctrl + F8: Same as Ctrl + F6 except for open perspectives. Very handy for jumping between the RSE and debug perspectives.
F12: Jump to editor. This action gives the editor focus. Handy if you are doing something in say the Remote Systems or outline view and want to go back to editing without having to click on the editor.
Ctrl + F4: In V7.0 this closes the current editor. Prior to 7.0 I believe this action was associated to Ctrl + w.
Ctrl + Shift + w: Closes all open editors.
Ctrl + h: This brings up the workbench search window. This window contains all possible searches in the workbench (iSeries, Java, File, etc…). If you click the Customize button at the bottom you can choose to only show the ones you need.
RSE keyboard shortcuts are only valid in the Remote System Explorer perspective:
Ctrl + Shift + a: Open member in editor. This pops up a dialog where you can directly key in the library, file and member name for the member you want to open. Very handy if you know the name of the member but don’t want to have to search for it in the Remote Systems view. In some previous release of WDSC this used to be associated with Ctrl + Shift + i.
Ctrl + Shift + c: Compile without prompting. This is only valid within the LPEX editor.
Ctrl + Shift + v: Verify without prompting. Also only valid within the LPEX editor.
So what keyboard shortcuts are missing? The iSeries table view has a pull down menu (the upside down triangle) that has direct equivalents to the WRKLIBPDM, WRKOBJPDM and WRKMBRPDM actions but the results are shown in the table view. These actions don’t have keyboard shortcuts yet and I don’t think it’s currently possible to assign ones to them. However it should be trivial to add some code to the RSE to allow keyboard shortcuts to be assigned to them (at least I think it should be trivial, I haven’t actually looked at that part of the code yet). In fact, given the Eclipse extension mechanism, anyone should be able to write a few lines of Java code and XML to do just that.
These are just the ones that I find useful in my day to day work. There are many more (so many more that finding a free key combination is becoming a problem and some combinations have multiple actions associated with them depending on the context they are used in). All of these shortcuts are customizable if you would prefer to associate them with different key combinations using the General > Keys (Workbench > Keys in previous releases) preference page. This preference page is much improved in Eclipse 3.2 (and therefore WDSC 7.0 by association). I had intended to cover this also but will save that for a future posting.
And last but not least, the most important keyboard shortcut of all: Ctrl + Shift + L, the keyboard shortcut that brings up a window showing you all the other keyboard shortcuts that are valid in the current context (this is a new feature in Eclipse 3.2).
I’ve been using Eclipse for about 7 years now and I’ve learned 2 new shortcuts while writing this blog entry! Ctrl + Shift + e brings up a handy dialog for working with the open editors and Ctrl + Shift + space brings up the docs for whatever column, keyword, opcode or BIF the cursor is currently on in the LPEX editor.