Saturday, October 31, 2009

Pragmatic Change

.

Paths :


1 Active Seeking
  • Survey and Identify
  • DO: find ways to automate the uncovery process and assist in the measurement
  • DO: reports, tables, scripts, views
Skills needed to acquire:  Grails, JMX, JNDI, RMI,  Six Sigma
Vehicle: Ask questions, do research
  • DO: Identify, communicate and manage it

2 When change opportunity is found,  do you...
  1. Deal with it and formalize a goal to get it fixed
  2. OR Deal with it wrong / not deal with it
  • acknowledge it but ignore it (self-denial, self-deceipt, status quo, sloth => stagnate)
It's too hard to do that  /  I'd never be able to do that
    Skills needed: honesty, self help, discussion with friends and colleagues

    Sunday, September 20, 2009

    Continuous Integration Patterns (and Anti-Patterns)

    I have these nagging questions about the way I've setup a few of my CI builds. (Blog-In-progress)



    1. I have a very granular Hudson build where each of the major build steps are individual jobs rather than have one job that calls each of the steps.  There are pros and cons to this. One of the reasons I chose this is to get better feedback I know what part of the build broke. The other reason was that it was easier to re-order the tasks in a build. I wish Hudson allowed a) build steps to be commeted out, b) build steps to be described c) build steps to be inserted or d) build steps to be re-ordered.  The cons are that there is more to maintain and more to have to replicate when I want to add another branch to CI.
    1. Is it an anti-pattern to use a task (such as a special clean) that is not part of the developer's normal workflow?  I have a groovy task just for the CI that is two lines in a groovy script.  Less code, but it sits outside of the normal use of developers so I forget about it being there and it wouldn't get changed if the main developer's clean got changed (violates DRY).

    Burgers are burning.. gotta run.

    HBW0777 Sears / Craftsman 1/2 HP Chain Drive Garage Door Opener

    Problem: Neither of the remotes work but the manual button bar (the wired one in the garage) and also the keypad operate normally. The green LED behind the manual button bar flashes. The batteries in the remotes are fresh.

    Fix: Get on a step ladder and press the green button up in the center rear of the motor housing. I couldn't dig up the manual but I believe that the system is in a secure 'lock' mode which disables the remote sensor for use at times when you will be away from home for a long period.  It is possible that someone pressed a combination of buttons on the remotes and caused this, or that holding the manual button for a certain period of time enables lock mode, but I don't have the manual and could not locate it on-line and the buttons on the remotes do not have any labels on them.

    Other problems I've had:  Door reverses direction in the middle of closing. If the motor runs too fast and causes some binding when the door reaches the arc of the tracks, the system reads this as an obstruction and reverses. Solution 1: There are two slotted adjustment ports (they look like plastic screws) in rear right-hand side of the motor housing. These allow you to adjust the speed of the motor, one adjusts opening speed and one adjusts closing speed.  Fix: Slow down the motor on the closing side.  Solution 2: It is also possible that the optical sensors are out-of-adjustment and need to be re-aimed.  It is possible that the tracks are loose or mis-aligned.  One or both of the optical sensors may need to be re-aligned up or down.

    System Details: Sears/Craftsman 1/2 hp chain drive, manufacture date: 11/93.  Model: HBW0777.  Logic Board Part No: 41A4315-7A.  If anyone has the owner's manual for one of these please forward the URL.

    Friday, September 18, 2009

    Fantasy Footbal as Introductory OO Metaphor

    I try to collect good OO Metaphors and this Fantasy Football domain example has just-enough complexity to be useful yet easy to comprehend without having to be a sports fanatic.



    Domain Model (buckets of nouns that can also 'Act')
    league
    commission
    commissioner
    official
    team
    owner
    manager
    general manager
    coach
    player

    Services Model (buckets of verbs associated with domain object actions)
    manager.add( player )
    manager.fireCoach()
    coach.callTimeOut()
    player.play()
    player.transfer()
    owner.transfer( player )
    team.play()
    team.goTo
    official.reviewPlay()


    Attribution

    I heard this one in October 2006 during a discussion among two of our best Software Architects.

    There was some debate as to whether domain objects should have behavior or just be POJOs and whether the service layer should provide all behavior strictly. [See Transaction Script Pattern (all business logic belongs in Service tier)]. 

    On the POJO side, it was asserted that most simple VOs can (should) be generated (from Hibernate mappings) ang that DTOs represent a totally unnecessary layer that needs to be coded & maintained and that it was wrong to require that they always be used.  All agreed that DTOs should have no behavior and it would be an antipattern to do so.

    Expand upon the definition of Value Object (VO) vs Data Transfer Object (DTO).

    Expand upon the concepts of where business logic belongs.  This used to be a major hang-up prior to the 'Service' concept was popular.

    Expand upon the concepts of:
    • Value objects as data types (rather than intelligent beings with autonomous capabilities)
    • Should Domain Objects have Behavior?
    • "Middle Tier as Service Layer" aka "Service Layer as (a) Tier"
    • Service vs Business Process
    • Service vs Function 
      • Parent/Child composition hierarchy
      • Service as bucket of Functions?
      • Shared/Reusable Function vs Reusable Service
    • Facade
    • Domain
    • Dependency
    • Where does EJB fall in the service vs pojo continuoum?

    Thursday, July 23, 2009

    Specifying Document Literal Style for Apache CXF

    Issue:

    I've been assigned to help us migrate from xFire to CXF. Our old Web Services model was' RPC Encoded' and we need to publish/serve a WSDL in Document Literal format. I've hunted for several days researching this topic and running all kinds of example services, etc but finally fell on a good resource here at muleSource: http://www.mulesource.org/display/MULE2USER/Building+a+CXF+Web+Service

    None of the other sites explained CXF and the SOAPBinding annotation very well.

    Answer:

    To specify that a service should be in Document Literal format, use the @SOAPBinding annotation.
    1. import javax.jws.soap.SOAPBinding;
    2. @SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
      use=SOAPBinding.Use.LITERAL,
      parameterStyle=SOAPBinding.ParameterStyle.BARE)

    Tuesday, July 14, 2009

    Eclipse Doesn't Recognize WebServices Annotations

    This is kind of newbie issue but (1) it stumped me (2) no one else blogged a solution and (3) it seems so simple.

    Background:

    I am creating a web service in Eclipse but Eclipse doesn't recognize the "@WebService" annotation. I don't know if this an Eclipse feature I need to enable or some plug-in I have to install?

    1. I type a web service annotation like @WebService to mark a Java class as a web service.
    2. Eclipse presents the annotation in red and floats the message 'WebService cannot be resolved to a type'
    3. I figure I have to add some plug-in or something and google around awhile but nothing is helpful.
    4. I find some references that I need to have J2EE classes in my classpath
    Answer:

    Annotations are actually interpreted, they're classes and you need to import the correct (javax.ws) library before you reference one. (This is not really an Eclipse issue).
    1. Find a distribution jar that has the WebService class
    2. Locate Apache geronimo-ws-metadata_2.0_spec-1.1.2.jar, jsr181.jar or J2ee.jar
    3. Add one of the jars to the project classpath
    4. Add an import statement import javax.jws.WebService to your java class
    5. Done, now Eclipse understands the @WebService annotation

    BTW:
    • You'll have the same issue when you enter the @WebParam annotation (and whatever other annotations you might use), except you now have to import javax.jws.WebParam.
    • The SOAPBinding annotation is in package javax.jws.soap.SOAPBinding.

    Notes:
    • The classes for the Web Services annotations are supplied in a number of common jar files (e.g. the geronimo jar mentioned above is not the only source of the annotations classes):
    • The JDK distribution jsr181.jar
    • The J2EE distribution javaee.jar
    • I'm sure all this is pathetic to those who know web services, but it stumped me awhile, plus I munged up my Eclipse installation trying to find an alternate project type or plugin to configure to get the annotation to be recognized.

    Friday, June 12, 2009

    Debugging Your Production JVM

    I've been trying to debug an issue in our QA environment for the last few weeks and also to do a presentation next Wednesday to my JUG.

    I found a free tool from dev.java.net called Visual VM https://visualvm.dev.java.net/

    I found VisualVm to be very useful and has many features that go way beyond jconsole and has most of the features available in a commercial product. I especially like the threads view. I wish I could do remote profiling with VisualVm but I believe that feature is probably not too far in the future. The platform is extensible via a plug-in interface.

    This other slide set has some good tuning info as well http://www.slideshare.net/Byungwook/jvm-performance-tunning-1154189

    I just found this SlideShare from a JavaOne conference.
    This should be a good reference for my 6/17 RJUG Presentation, although there's more to a presentation than just slides, some of them don't go into much detail.

    Tuesday, June 9, 2009

    Setting up a New Subversion Repository Server

    Abstract
    This will walk through the steps of creating and sharing a subversion repository. We're working on a virtual Windows XP instance because its almost always available and gets backed up regularly. I chose VisualSvn Server because it is almost zero configuration and it works nicely on XP, no mess no fuss. I also make use of TortoiseSVN for the task of initializing the repository, checking in and out so install TortoiseSVN right after installing VisualSvn Server. All Language Developers: No fear, VisualSvn Server is still a subversion server, no need to get Visual Studio, works with Java, *** its just a great Windows distribution that is easy to setup.

    Background
    We have a new development sub-project (finally) for which we can use Subversion to share/store the code base. My main project is called MASS and the new project will load natural gas production measurements (readings) from our new hand-held units via a web service.

    1. Log into the Remote XP Server VM

    2. Download and Install VisualSvn Server from http://www.visualsvn.com/server/. I found this article http://www.west-wind.com/presentations/subversion/ useful in making the decisions getting started. I chose SSL and Windows Authentication.

    3. Configure the Repository
    Use the SvnServer Admin tool available under "myComputer" > "Manage" > "Services" and "Applications".

    4. Enable Repository Access
    Right-click on "Repositories", select "Properties". This brings up a window with one tab labeled Security. Select the "Add" button to add user access. Select the "Locations..." button and select your active directory server as the authentication source, type the userId of a user and select "Check Names..." This should resolve the userId to a windows Domain user. By default this will give all the users entered here read/write access to any of the repositories created on this server. That works for me since our project owns the XP VM.

    5. Create a Repository
    Right-click on "Repositories" in the hierarchy and select "Create New Repository..." Name it what you like and select the checkbox "Create default structure (trunk, branches and tags)". After you select "OK", the status on the main admin screen should read "Total 1 repositories".

    6. Right click on the new repository folder named "trunk" and select "New" and "Folder...". Name it "src" or something you are comfortable with.

    7. Switch to your desktop and Create the Project root Folders
    cd c:\
    mkdir GAS
    cd GAS
    mkdir MASS
    cd MASS

    7. Check out the new folder from the repository
    Open the file system explorer and navigate to the new project folder (MASS in my example). Right-click on the folder and select "TortoiseSVN", "Repo-browser", paste the URL of your new VisualSVN Server instance admin client, and select the newly created folder from the repository and select "Check out". This will be the basis for you to populate the rest of the repository with your existing code.

    Friday, June 5, 2009

    JVM Profiling and Optimization

    Caveat: I'm really new at JVM profiling and memory leak troubleshooting so I'm making certain assumptions and taking certain steps to feel my way through the process.


    TOOLS
    I'm using a combination of tools and OS logging to get feedback from the JVM.

    1. YourKit for Java (http://www.yourkit.com/)
    YourKit is very easy to install against a WebLogic JVM and monitor via a remote PC desktop. It is free for developers contributing to non-commercial Open Source projects, with an established and active community and has a reasonable academic license fee. YourKit has a script that will generate the modifications needed to be made to the host JVM. This makes installation much easier.

    2. Sun's VisualVM I am evaluating this as I write. I see much of the features available in YourKit here, however YourKit has really easy setup and nicer charting features. VisualVm seems to beat JConsole pretty handily. To use VisualVM to retrieve data from a remote application, the jstatd utility needs to be running on the remote JVM. All the tools need some kind of modification to either the remote server or remote JVM startup parameters.

    Some of the blogs about VisualVm have yielded a few really handy commands, such as jps (find the PID of the Java Processes) and jstat (get status of JVM at PID). I also see mention of something from Sun called visualgc which is also available from Sun's dev.java.net. Some of these appear possibly to be orphan projects.

    3. Java's JConsole (http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html)
    Jconsole provides basic information about a profiled JVM (not as much and not presented as nicely as YourKit, but it is free) and requires more setup (see my post "Connecting to a Remote JConsole Session" for setup.

    4. A series of custom logging scripts that essentially scrape Unix top or other unix admin commands for pulling out information about the running processes and logging that information to a format that can be easily put into Excel for charting and analysis.


    Links:
    http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
    http://www.slideshare.net/kensipe/debugging-your-production-jvm
    https://visualvm.dev.java.net/

    Enabling JMX on a JVM

    This is necessary for many of the profiling options, such as allowing a remote JConsole session to connect to a JVM.

    I've been profiling my QA WebLogic application because it's been really misbehaving the last two weeks. Sun's free swing app, jconsole, gives a bunch of insight into performance metrics such as memory, garbage collection and object counts.


    1. Enable your JVM to use JConsole

      The jconsole app is enabled via command line parameters that activate at startup. On weblogic you modify the file setDomainEnv.sh in the bin directory of your WL 'domain'. Add the following (Solaris/Unix):

      # Allow JConsole to view this JVM
      JC_JMX_ENAB="-Dcom.sun.management.jmxremote=true"

      # Allow remote access to JConsole at this port
      JC_JMX_PORT="-Dcom.sun.management.jmxremote.port=5097"

      # Don't require login
      JC_JMX_AUTH="-Dcom.sun.management.jmxremote.authenticate=false"

      # Don't require SSL
      JC_JMX_SSL="-Dcom.sun.management.jmxremote.ssl=false "

      JAVA_OPTIONS="${JAVA_OPTIONS} ${JC_JMX_ENAB} ${JC_JMX_PORT} ${JC_JMX_AUTH} ${JC_JMX_SSL}"

      export JAVA_OPTIONS


    2. Restart the WL Server instance or JVM

    3. Start a command line JConsole session on your desktop
      Do this by executing jconsole.exe from the bin directory of your JSDK installation.

    4. Connect to your remote server at the specified JMX port
      Select the 'Remote Process' radio button and enter the host server name and using the port (5097 in this example) in the form [hostname]:[port].


    REFERENCES

    1. http://www.javapassion.com/handsonlabs/jconsole/index.html#Configure_a_simple_app
    2. http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html
    3. http://java.sun.com/javase/6/docs/technotes/tools/share/jconsole.html


    SEE ALSO

    1. JStat http://java.sun.com/javase/6/docs/technotes/tools/share/jstat.html

    XP Connecting to a Solaris Server via X11 XWindows

    I'm working out the details of how to view the JConsole profiling information from my Windows XP desktop.

    I began with the misconception, that unless one is running jconsole locally (e.g. on the same server) as the one the JVM is running, then the amount of jconsole information you can see is limited. From the Java documentation at Sun, you are led to believe that remote sessions are unable to access certain tabs.

    Having busted that, I'm now left with some valuable info that I know will be useful later, so here it is.

    HOW TO GET AN XWindows connection to a Solaris Server.

    One requirement is to have an XWindows session running on XP.
    The other is to enable X11 over SSH on the Solaris server.

    I used Cygwin/X on the desktop. It's great and there's plenty of easy documentation on cygwin's web site to get you going here <http://www.javapassion.com/handsonlabs/jconsole/index.html#Configure_a_simple_app>.

    On Solaris modify the file /etc/ssh/sshd_config. Enable X11 tunneling by finding the section labeled "X11 tunneling" and make it match the following:

    X11Forwarding yes
    X11DisplayOffset 10
    X11UseLocalhost yes

    Finding the PID (Process Id) of a Windows XP Process

    Open up the Windows Task Manager (Either press Ctrl+Alt+Del and select "Task Manger", or issue the command "taskmgr" from the command line).

    Click on the “Processes” tab.

    Select the “View" menu item and choose "Select Columns...”.

    Check the "PID (Process Identifier)" checkbox and click the "OK" button

    The process list will now show the PID of each running process.

    There are a number of other properties you might like to show on the process list.

    This is a hidden gem.

    Tuesday, May 5, 2009

    Productivity Tools

    I've developed a list of my favorite productivity tools for a presentation to my local beCamp.

    I'm a Java developer but if you are not a programmer that doesn't mean these tools aren't for you. I do a variety of tasks and I want these tools to be available to me on whatever system I'm using. Feel free to comment and recommend others.




    Top Favorites

    • Beyond Compare (file and folder comparison, desktop, network, server, ...it does it all)
    • Hypersnap (screen capture and editing)
    • FinePrint (printer output control)
    • Wiki on a Stick (portable wiki)
    • BareGrep
    • BareTail

    Network

    • Secure CRT 32 (Telnet, SSH, rlogin)
    • Filezilla (FTP)
    • Putty (Telnet, SSH, rlogin)
    • CurrPorts (show open ports)
    • SmartSniff (packet sniffer)
    • SocketSniff (socket sniffer)

    Development

    • Oracle SQL Developer (oracle database client)
    • Toad (oracle database client)
    • Textpad (text editor)
    • Notepad++ (text editor)

    Desktop

    • Synergy (software KVM)
    • Second Copy (backup)
    • RocketDock (application launcher)
    • Launchy (application launcher)




    BeyondCompare www.scootersoftware.com

    My number one all-time favorite & must-have.

    Overview

    • Compare files & folders between desktop or FTP hosts.

    Favorite Features
    • Visualize and merge changes in files or folders.
    • Synchronize folders and file systems such as Test & QA servers (via FTP & its fast), thumb drive contents.
    • Compare & navigate Zip and Jar file contents
    • Windows File System Explorer integration

    Platforms:

    • Windows; Red Hat Enterprise Linux 4, 5; Fedora 4 - 10; openSUSE 10.3, 11; Ubuntu 6.06 - 8.10

    Wish List:
    • Mac version (please let me know if you hear of anything like this for Mac)
     Cost:
    • $30 (Standard), $50 (Pro) --well worth the cost!.

    It pays for itself by quickly showing me what files are different





    Beyond Compare Example of a folder comparison.




    Note: This is a comparison of a folder on my local Windows file system with a folder on a Unix server. This is very handy to compare configuration files between Test and QA systems.





    Beyond Compare Example of a file comparison



    Note: Again, this is showing me the contents of a file on my local Windows system versus a file on a Unix server.



    Hypersnap www.hyperionics.com

    Overview

    • Windows screen capture and image manipulation

    Favorite Features
    • Scrolling window capture handy for capturing from browser
    • Vertical and horizontal trim
    • Text snap
    • Image resizing, color correction & other standard image manip. features

    Platform: Windows

    Cost: $35

    Another of my favorite and most-used applicaitons.


    See also HyperCam which captures action and sound from a windows desktop and saves to AVI format.




    FinePrint www.fineprint.com

    Overview

    • An intermediary virtual printer that lets you preview and manage what gets printed and how, then lets you send it on to the printer of your choice.

    Favorite Features

    • See it before it goes to the printer (save paper)
    • Print two, four or eight per page (save paper)
    • Convert page size (i.e. from legal to letter)
    • Delete unwanted pages
    • Add borders, gutters, headers, watermarks, footers
    • Combine multiple print jobs into one
    • Easy to bypass if desired, easy to select different printers

    Platform: Windows

    Cost: $49.95

    Another top favorite!Very stable, low memory footprint





    Synergy synergy2.sourceforge.net

    Overview

    • Share a single mouse and keyboard between multiple computers with different operating systems, each with its own display, without special hardware.
    • Intended for users with multiple computers on their desk since each system uses its own monitor(s)..


    Favorite Features

    • Cut and paste between computers
    • Works w/ multi-monitor configurations

    Platforms: Windows, Mac, Unix

    Cost: $0.00, but a project worth supporting

    Latest release April 2, 2006
    Requires TCP/IP



    Wiki on a Stick stickwiki.sourceforge.net

    Overview

    • A wiki that lives in one small self-modifying XHTML file

    Favorite Features

    • Organize your favorite sites, project URLs, etc
    • Easy to edit
    • Quick and dirty web site mock up
    • Organize your kids/wife's/parents internet favorites

    Platforms: Windows, Mac, Unix

    Cost: $0.00, but a project worth supporting




    BareGrep baremetalsoft.com

    Overview

    • Search for files on a windows file system
    • Regular expressions text search
    • Wildcard and regular expressions file search
    • Shows search results in context

    Favorite Features
    • Single small executable
    • High performance

    Platforms: Windows only

    Wish List:
    • Connect and search via FTP, as in Beyond Compare

    Cost: $0.00, there is a $25 'pro' version with additional features




    BareTail baremetalsoft.com

    Overview

    • File / log monitoring tool
    • Follow tail mode (like tail -f on Unix) 

    Favorite Features

    • Configurable text highlighting
    • Single small executable
    • High-performance search algorithm
    • Save, name and manage text search patterns

    Platforms: Windows

    Wish List:
    • Connect and tail via FTP connection as in Beyond Compare

    Cost: $0.00, there is a $25 'pro' version with additional features


    next

    Sunday, February 22, 2009

    WII Has Intermittent Issues Reading Game Disk

    Believe it or not, errors loading a game disk isn't just an issue related to having a dirty or scratched disk.

    Removing the USB wireless network card solves this issue in my son's WII.

    It's odd but true. Go figure.

    Sunday, January 18, 2009

    Laptop Keyboard Function Key Lock Appears to be Stuck

    This was such a pain to figure out for a problem with such an obvious solution.

    PROBLEM SYMPTOMS:

    Your laptop keyboard is stuck in "numeric keypad" mode.

    The "Fn" key appears to be stuck on.

    You type "UIOP" or "JKL:" and you get "456*" or "123-".

    This persists even after you log off and on again. You think "I got some weird bug or my keyboard is broken".

    SHORT ANSWER:

    By pressing a key such as "Num Lk" or a combination of other keys (see below) you can return the keyboard to its normal function.

    On a Dell D600 simply pressing the key labeled "Num Lk" (above the "F11" key) will return the keyboard to its normal function.

    For other laptops there are a variety of key combinations. Refer to the section titled "Other Manufacturers" at the bottom of this posting.


    LONG ANSWER:

    Because laptops do not physically have room for a separate numeric keypad, many laptop manufacturers allow the right-hand keys to be temporarily re-mapped [U is 4, I is 5, O is 6, ...] to a numeric keypad layout so that people with good calculator / numeric keypad touch typing skills can more easily input numbers.

    On the Dell laptop the numeric keypad mode can be easily toggled on and off simply by pressing the (white lettered) "Num Lk" key (above "F11"). Do not press the "Fn" key+ "Num Lk" on the Dell.


    BACKGROUND:

    A few days ago I had tried to see if I could temporarily dim the monitor on the laptop to save energy and had tried a number of the function key combinations and never figured it out. I guess I hadn't done any more work thereafter and just shut down.

    Booting up a few days later I found that most of the letters I typed with my right hand "UIOP" and "JKL;" were coming out numbers. (U is 4, I is 5, O is 6, ...) I figured out that by holding the function key (the key with "Fn" in blue letters below the "Z" key) and pressing the affected letter temporarily corrected the issue and I thought somehow that the function key was stuck. But I couldn't figure out how to unstick it.

    On the Dell D600 keyboard a key's alternate function is labeled in blue italic font. The logical thing to try is to hold down the "Fn" key and try a number of key combinations to see which one unlocks the numeric key setting.

    The tricky part of this solution on the Dell is that you do not need to hold down the "Fn" key to toggle the numeric keypad mode on and off. As above, simply press the key labeled "Num Lk" and the keyboard returns to normal (e.g. don't hold down the "Fn" key while pressing "Num Lk").

    The thing that gets people about this solution is that for most other uses of the function keys you must hold down the "Fn" key and press the blue labeled key corresponding to the action you wish to invoke (i.e. to make the laptop display to an external monitor, hold the blue labeled "Fn" key and press blue labeled "CRT/LCD [AKA the white labeled "F8"]).

    [In fact, the "Num Lk" key is labeled in WHITE which means "DON'T press the "Fn" key to activate the behavior". As stated, this is obvious only after you find the solution. On the Dell, there is even an indicator symbol, a little backlit lock symbol with the number '9' in it above the keyboard, near the power button, to show you that the function keypad mode is engaged. ]

    IMHO, to help with this issue, manufacturers should not persist this mode between sessions... when you log off, the keyboard should not remember it was in the "numeric keypad" mode.




    Key Combination Solutions for Other Laptop Manufacturers
    1. Hold down the "Fn" key and tap "F11" to turn off the number lock[Acer Aspire 5920].
    2. Hold down the "Fn" key and tap the "SCROLL" key (found next to the F12 button) [Gateway CX200 convertable]
    3. Pressing "F12"+"Num lock" / "Scroll lock" (key beside it) toggles the "FN lock" on and off [unk].
    4. Press "Fn"+"F12"+"Num Lock" all at the same time... [Compaq]
    5. Use "Ctrl"+"Shift"+"NumLk" [Dell Inspirion 7500]
    6. Hold down the "Fn" key and press "Scroll Lock" solved my problem. [unk]


    Other Solutions that Have Worked

    Some people's keyboards are just plain dirty or had something spilled on them that actually makes the key stick.
    1. For external keyboards (i.e. desktop) I have successfully "fixed" dirty keyboards, even ones that have soda spilled on them by placing the keyboard in the top rack of the dishwasher, keys facing down and running it in the "economy" cycle which uses warm not hot water and does not use the "dry" cycle which would heat up and probably damage the keyboard. At the end of the cycle lightly tap the keyboard with keys down to remove excess water trapped in the housing. Be sure to let the keyboard dry thouroughly. I placed it over the heater / air conditioner vent overnight. Be sure to select a vent that is not heavily traveled so that no-one accidentally steps on it.

    2. On some laptops you can take the keyboard out (this reputed to be pretty easy on the A430) and pry the key off and wash it by hand with a little bit of dishsoap. Dry it off completely and reinstall. On some laptops this is easy, on some its not.



    Now if I can just get the nosy cat to stop walking on the keybard.



    Friday, January 16, 2009

    Co-Installing Weblogic 10

    How to Install Weblogic 10 Along Side of an Earlier 8x or 9x Version

    These steps can be used to add a new weblogic instance for a developer that needs more than one version of weblogic installed:

    [] Install BEA 10.0.2 under a _new_ BEA home
    o Install into C:\bea10
    o Do not install into C:\bea (where WLS_8.1.6 is installed)
    o Leave WLS_8.1.6 installed
    o Do _not_ upgrade the WLS_8.1.6 domain
    o NOTE:
    o WLS_8.x must always reside in C:/bea
    o There is an issue w/ ver WLS_8x
    o EJBs will not deploy if BEA_HOME <> "C:/bea"

    [] Create & configure JDBC & Data Sources
    o Test each connection, bind each w/ the wls server

    [] Use Config Wizard to create a new WLS domain
    o Defaults:
    o Domain ...... mydomain
    o Directory ... C:\bea10\user_projects\domains\mydomain

    [] Change ~/bin/startWeblogic.cmd
    o Add new line as follows:
    SET JAVA_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=4000,suspend=n

    [] Configure eclipse for JDK 1.5x

    [] Change JAVA_HOME
    o Check your local Java version PATH & JAVA_HOME
    o Use the Weblogic installed Sun JDK

    [] You may want to copy and rename the distributed jars to your own lib folder:

    o weblogic.jar ........... weblogic-10.0.1-weblogic.jar
    o webserviceclient.jar ... weblogic-10.0.1-webserviceclient.jar
    o wlutil.jar ............. weblogic-10.0.1-wlutil.jar
    o api.jar ................ weblogic-10.0.1-api.jar

    Thursday, January 15, 2009

    Who's Blogging? Why?

    Yep, its me...

    Time to figure out what's the deal w/ blogs -- Who's got time to write 'em? Who's got time to read 'em? and Who the heck cares about what I've got to say? I've been advised to give it a shot and have been pushed over the threshold. (Thanks Jared)

    So.. I'm told I should take the time ... and ... It'll be a good thing, a good way to organize thoughts for presentations, articles, projects or that book. Sounds therapeutic. I'm all ready, just gotta make it regular. [Exhausted superhero whisper: "must ... write ... blog"]

    Why Errata? Officially, errata is a list that is inserted into a publication to correct errors or omissions that were discovered post-publication. Its a cool word and may be it's even appropriate. I do a lot of stuff I wish I'd have done differently, so may be this is to be my own errata.

    Followers