Well this week saw a very interesting discussion on the WDSC mailing list: drag and drop, vs using keystrokes to accomplish the same goal.
While I see the merits of drag and drop (in particular I could see how cool it would be in the outline view), I feel like drag and drop on my source might be a bad thing – what if I miss a semi-colon, bracket, character? Maybe its because I have MS and my coordination is off on some days, but I get the feeling I would be dropping source in all the wrong places – I guess then UNDO would become my new best friend.
One of the goals in Remote Systems LPEX Editor has been to preserve the keys that folks are familiar with, while they transition to learning new ways of performing task. But that doesn’t mean that there aren’t better ways to do things. I always seen myself somewhere in the middle of mouse vs keyboard, I use the keyboard and keystrokes almost exclusively at times (why waste time reaching for the mouse?), but then there are other times, using the mouse is just the better way to go.
I imagine that with the rich UI that eclipse provides, we will be adding more drag and drop and other fancier ways to interact with source in RS LPEX. There are usually several ways to accomplish any goal — the trick is finding the best one for you.
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
This week was March Break here in Toronto for most schools. A week where kids (and their parents) take time off to put aside their studies and work, spend quality time together, and wreak havoc across the city’s children attractions.
Besides paying ridiculous money for food and parking, and standing in half hour long lineups for kiddy rides during Spring Fling (above) held at the Rogers Centre (formerly Skydome), I also stood in equally long lineups at various stores across the city. I guess the same parents decided to run some errands during the day around town as well. At this point I was contemplating renaming this week “March Broke“.
… don’t worry, there is a System i connection below :), keep reading…
Hello everyone! Since this is my introductory post to this blog, I think it is more appropriate that I say Hello World! Almost every programmer has gone through the experience of creating their first ‘Hello World’ application, and I suppose that attempting to post a first blog entry is similar. In both cases a person needs to become familiar with a language, and one or more creative tools to produce some usable output, resulting in instant gratification. Yeah!
I’ve decided to participate in this blog in order to share and discuss things that I am interested in and currently focused on, which could mean many different topics. In doing so, I hope to spark some interest and expand the horizons of you, the reader. Having just looked at my career history, I rather scared myself. It’s like a precursor to experiencing your entire life flashing before your eyes. Here’s a little synopsis; hope its not too scary to read.
Way back in ’78, I was hired as a test engineer when our facility was manufacturing 5250 display terminals, keyboards and other related equipment. Its probably just weird fate that I was associated with System i heritage back then, as I am associated with the current incarnation.
I was hired because I knew the timing sequence of the Intel 8080 microprocessor with its minimalist instruction set, which a person could code in hexadecimal by recalling its opcodes. I was around when the company made the decision to use the Intel 8088 in the first IBM PC instead of the Motorola 68000. This was a cost/quality/availability decision which made our programming lives yucky for many years, since we had to worry about 64k segment boundaries. Around ’85 I moved from manufacturing to the software development lab to help out on the IBM ImagEdit product. Development was done on PC XTs with 10 Meg hard drives. I took over the development of a locally created windowing system for DOS and created DOS versions of scroll bars, title bars and multiple windows that the Mac already had. Our 1 bit per pixel editor needed to work in 512k bytes of RAM, so we had to place all of our code in overlays that could be swapped out when other functions were required. I’ve been doing graphical user interface work ever since, for applications that run on Windows 2.0, OS/2, Windows 3.1, and so on up to today’s Eclipse environment.
Due to my user interface expertise, I was invited in ’92 to become a part of the VisualAge RPG development team to design and lead the development of its UI runtime. In ’97, I became an early adopter of the new Java language and ported the UI runtime to support RPG based Java Swing applications and RPG based browser Applets. Convincing IBM to ship the port was a job in itself, since Java was so new. I did stints in ’98 with VisualAge for Java, and participated in the birth of Eclipse in ’99 before rejoining the iSeries team in ’01.
My Eclipse skills allowed me to design and write the initial Eclipse Lpex based RPG, DDS and CL editors from the original C++ based code and supplemented it by creating the iSeries Source Prompter view. Recently, I led a tiny team to combine some existing models and frameworks to create the Screen Designer Technology Preview.
As you have probably surmised, my primary expertise is with graphical user interfaces and human computer interaction, in particular, rich client user interfaces and architectures.
Don’t you wish all babies are this succinct when they greet the world? Thanks for reading, and I hope you come by to say ‘hi’!
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.
Ok so you’re probably wondering – how in the world do you pronounce that name, and what could you possible have to say that interests me?
Well for the record, its pronounced VEE-OH-LEN, but almost everyone around here calls me Vi.
I have been doing development and support of CODE and now WDSC for almost as long as I have been at IBM. I plan on posting about how caching in RSE works very soon and after that – who knows?
(Updated Mar. 20/2007): Added tentative overview of session below.
George P. and I are working on a new session called “Web 2.0 for System i” … though after coming up with this post’s title I’m reconsidering the name. :)
I feel the proper marriage of these two entities is long due. The system is well known for its reliability, security and flexibility, but can gain from a “cool factor” in cetain aspects that Web 2.0 related technologies and concepts can provide. It may be just what System i needs to ignite a new interest in the system. Is “coolness” that important? Well, let’s just say I’ll be watching sales of Vista to see if coolness is more important to people than reliability or security. ;)
Back to the session…
The content will be divided into two parts: the first attempts to answer the ever popular question “What is Web 2.0?” by going through various examples of related applications and concepts, the latter then describes various ways as to how Web 2.0 related solutions and technologies can be consumed (hosted) and produced (developed) on System i.
Usually a session needs to wait for its first set of feedback forms after its debut before the authors of that session are provided with useful suggestions of what they would’ve liked to see added in future revisions. But in this modern Web 2.0 world… why wait till then!
Here is a tentative list of the topics covered:
- Concepts: Blogs, Wikis, Social Bookmarking, Mashups
- Technologies at play: (P)AMP, Ajax, Syndication Feeds, JSF, Dojo
- What is Web 2.0? Why is it important?
- Consuming: Blog, Wiki, Lotus Connections
- Producing: JSF Web Tools, Ajax Toolkits, PHP IDE
Is there a particular Web 2.0 technology or concept you are curious about and want to see covered by this session? Feel free to give suggestions here via comments.
Call it “feedforward”.
Please keep in mind this instance of the session is a 45min intro.
As a precursor, here is a YouTube video with an interesting way of explaning what Web 2.0 is all about…
Did I hear you say, “cool!” ? :)
Lest you think we all just want so say hello, here is my first real posting :)
Disclaimer: This post reflects my own views and opinions which may be different than those of IBM and other members of the WDSC team.
There are at least 3 reasons I can think of why people switch from one development tool to another: 1) the new tool does something the old tool can’t, 2) the new tool does the same thing but allows the user to be more productive, and / or 3) the new tool is just more fun to use.
People switch to WDSC for each of these reasons. Those using WebFacing and HATs can do something that the older tools can’t: convert a 5250 UI into a browser UI (or an Eclipse rich client UI in the case of HATS V7.0). Others use the RSE because it allows them to be more productive than SEU / PDM. While still others just find the RSE more fun to use.
I think we (the WDSC team) tend to focus on the first two items and the last one [hopefully] comes about as an added side affect. The real target for the RSE is increased productivity. But where does this “increased productivity” come from?
If we were to have simply duplicated SEU / PDM inside of the Eclipse workbench we most likely would have failed to realize this increased productivity. It’s difficult to get any serious increases from doing the same thing with a different UI (at least for an application development tool).
Instead, designers of the new tool need to [temporarily] forget how the old tool worked and instead look at the end result of what the user is trying to accomplish and ask: Is there a better way to do this in the new environment? This doesn’t mean that the old way of doing things must be changed just for the sake of change. It should be changed only if it will lead to improvements.
An example to illustrate: when I demo the RSE, as soon as I submit a compile I often get the question: “So how do I look at my spool file?” And I answer: “You don’t.” You can imagine this raises a few questions in their mind. Is this guy crazy? What kind of a tool compiles but won’t let you look at your compile errors? Ah, therein lies what the user is trying to accomplish: finding the compile errors, not viewing a spool file. In a graphical environment it’s more productive if the tool extracts out the compile errors and displays them in a separate view automatically, giving the user more time to think about how to fix those compile errors :)
However, changing the way tasks are performed introduces a challenge: the learning curve. This is one of the biggest barriers to adoption of the RSE and something we are constantly thinking about. It plays a big part in what I mentioned above about deciding if there is a different, but perhaps more productive way of doing things. Related to this is a an article that Davis Marasco and I recently published in the IBM Systems Magazine i5 Edition titled “Modernization Within Reach“. This article reports on some studies we did involving customers making the switch from SEU / PDM to the RSE.
One common approach to “solving” the learning curve is to put both the old and new ways of doing something into the tool. Basically this provides the stepping stone approach: first start using the new tool but doing things the old way. Then use the new tool and the new way of doing things. The biggest risk with this is that people will stop on the first step (new tool, old way of doing things). But as mentioned earlier, this will likely result in overall decreased productivity and frustration since the new tool is designed to be used the new way.
How to tackle the learning curve and how to use the RSE in the “new way” are both topics I am planning to cover in future posts. But to get you started check out the article “Giving RSE a Split Personality” by Susan Gantner.
I’d also like to give a big welcome to everyone visiting the blog. This is a great opportunity for users and developers to collaborate and share ideas on the many features that makes WDSC tick.
My name is Adam Schwabe, and I’m a part of the small team of Information Developers that puts together the documentation and help material that will hopefully assist you in using WDSC. Specifically, we take care of anything that resides under that “Help” menu in WDSC. This including help topics, technical manuals, tutorials, samples, programming language support, and tours.
Personally, I’m interested in usability, user interface design, blogging, podcasting, and new media trends on the Net. I’m excited to see how this blog will help us interact with and receive more insight from you, the users.