Why Not Use WHEN OTHERS - Friday Question

There are several people on this forum that abhor use of WHEN OTHERS in the same vein as GOTO (which really is a bad practice).  I have an open mind and am looking for the reason it should be avoided.
When used to output the state during unexpected exceptions, WHEN OTHES can dramatically reduce debug time.  The only bad exception handler is WHEN OTHERS THEN NULL.  Error logging to a table is important and should include the back trace and call stack in addition to listing pertinent parameter, constant and variable values.  I consider this debug instrumentation.  If you write perfect code or you don't have end users that are very creative in finding bugs that occur because of the convoluted way they get to the code that causes the error you don't need it.  Or you like the thrill of the hunt going slogging through thousands of lines of code to try to figure out what caused the error.  I am lazy and want to have it spelled out for me.  Below is my error logging table (CODE is  a session level transaction identifier used for filtering) and my error logging procedure is equivalent to DBMS_OUTPUT.PUT_LINE.  This makes it easy to take other people's code and replace DBMS_OUTPUT with my error logging.  This becomes very useful for debugging triggers since there is no standard output device.
CREATE TABLE SUPPORT.MESSAGE_LOGS
  CODE        INTEGER                           NOT NULL,
  TEXT        VARCHAR2(4000 BYTE)               NOT NULL,
  CREATED_ON  TIMESTAMP(6)                      NOT NULL,
  CREATED_BY  VARCHAR2(100 BYTE)                NOT NULL,
  OSUSER      VARCHAR2(100 BYTE),
  MACHINE     VARCHAR2(100 BYTE),
  PROGRAM     VARCHAR2(100 BYTE),
  BACK_TRACE  CLOB,
  CALL_STACK  CLOB
Typical insert is:
INSERT INTO message_logs (
              code,
              text,
              created_on,
              created_by,
              osuser,
              machine,
              program,
              back_trace,
              call_stack )
VALUES      (
              utilities.get_xaction_sequence,
              pv_text,
              SYSTIMESTAMP,
              UPPER ( utilities.get_session_user ),
              UPPER ( utilities.get_osuser ),
              UPPER ( utilities.get_machine ),
              UPPER ( utilities.get_program ),
              DBMS_UTILITY.format_error_backtrace,
              DBMS_UTILITY.format_call_stack
Typical error text:
ERROR in UTILITIES.CREATE_FILE: ORA-29280: invalid directory path
Directory = FILEDIR
File Name = _Revoke_From_COGNOS_ALL_Script19-MAR-12.SQL
Linesize = 32000
Text - 1st chacters = -- File created on 19-Mar-2012 11:16:38

Hoek wrote:
C'mon Ed, now shirley you must have an opinion regarding the use of WHEN OTHERS?
Feel free to share it with us
My opinion is that I hate it when an application -- any application, under any framework, in any language -- swallows an error message.  As to getting into the weeds of WHEN OTHERS, I tend to agree that it should be avoided but am open to arguments for exceptions.  Does that sound like waffling?  It's not intended to be.  Here's where I have to make a confession.  When I transitioned from the role of "developer" (we called them "programmer/analyst" then) to dba, my shop was also transitioning from IBM's IMS database (hierarchical) to relational databases - first DB2, then as client-sever architecture came in they settled on Oracle as the C/S database.  Because I was viewed as an "early adopter" and had been doing some development work on our first client-server apps, I was tagged to become our first Oracle DBA. (My first oracle db was v7.3 on Win 3.11)   As a result of that path, I never really got heavily into development with PL/SQL.  I can do OK on  individual procedures - mostly for one-off or stand-alone use. But I never developed that mental framework and toolbox of procedures that only comes with working heavily in a language.  
Don't call me Shirley

Similar Messages

  • I am getting a 'MIDI timeout' error message when I open garageband. I am not using any other apps so why is this happening. Restarting does not solve the issue.

    I am getting a 'MIDI timeout' error message when I open garageband. I am not using any other apps so why is this happening. Restarting does not solve the issue.

    I should also add that I am using core audio, no external MIDI device and Garageband v 6.0.5. Thanks

  • TS3408 why will some websites which loaded fine before now not load - when other favourites load fine, and new searches are fine?  This only affects 2 websites, both of which were bookmarked.  I have removed them as bookmarks and this makes no difference.

    why will some websites which loaded fine before now not load - when other favourites load fine, and new searches are fine?  This only affects 2 websites, both of which were bookmarked.  I have removed them as bookmarks and this makes no difference.

    From the Finder menu bar click Go > Go to Folder
    Type or copy paste the following:
    ~/Library/Caches/com.apple.Safari/Cache.db
    Click Go then move the Cache.db file to the Trash.
    Quit and relaunch Safari to test.

  • Why not use "new" operator  with strings

    why we not use new when declaring a String .because in java String are treated as objects. we use new operator for creating an object in java .
    and same problem wiht array when we declare array as well as initialize .here we are alse not using new for array
    why

    Strings aren't just treated as objects, Strings are Objects.
    As for why not using new for Strings, you can, if you want.:
    String str = "this is a string";
    and
    String str = new String("this is a string");
    do the same thing (nitty-gritty low level details about literals aside). Use whatever you like, but isn't it simpler not to type new String(...) since you still need to type the actual string?
    As for arrays, you can use new:
    int[] ints = new int[10];
    or
    int[] ints = { 0, 1, 2, 3, ..., 9 };
    But the difference here is you are creating an empty array in the first one, the second creates and fills the array with the specified values. But which to you often depends on what you are doing.

  • The sort field is not used when ordering multiple cds in one alumn folder, how do I correct this?

    It is using the track number and not the sort order field.  The reason I have multiple cds in one alumn is because they are books on cd.

    Sorry for the typo my "b" key was not working correctly.
    The sort field is not used when ordering multiple cds in one albumn folder, how do I correct this?  It is using the track number and not the sort order field.  The reason I have multiple cds in one albumn is because they are books on cd.

  • Custom hostname verifier not used when business services use a http proxy

    On OSB 10.3, we have a business services with an https end point. To access this end point, the business service used an http proxy.
    The certificate of the business endpoint is a wildcard certificate *.certificate.be . So we have a custom hostname verifier defined in the ssl configuration on the weblogic Server
    As we can see with the verbose mode at the jvm, the custom hostname verifier is not used when we use a http proxy in the business service. Osb use a ALSBHostnameVerifier and this one the defaulthostName
    <Mar 2, 2011 7:31:11 AM CET> <Debug> <AlsbTransports> <BEA-000000> <*** Connecting via proxy *** HTTP @ my.proxy.be/XXX.XXX.XXX.XXX:8080>
    [Loaded com.bea.wli.sb.transports.http.ALSBHostnameVerifier from file:/bea/osb_10.3/lib/sb-transports-main.jar]
    [Loaded weblogic.security.utils.SSLWLSHostnameVerifier$DefaultHostnameVerifier from file:/bea/wlserver_10.3/server/lib/weblogic.jar]
    Is there any way to force business service to used hostname verfifier defined in weblogic ssl server config?
    Thanks

    This is a known issue. Raise a case with support and ask a patch for bug#9182604
    Regards,
    Anuj

  • Why not use notifyall

    now I'm reading this book "Java Threads 2nd edition" by Scott Oaks and Henry Wong. Writer provide a class called BusyFlag to simulate the mutex.
    I wonder why not use notifyall() to replay notify().
    public class BusyFlag {
         protected Thread busyflag = null;
         protected int busycount = 0;
         public synchronized void getBusyFlag() {
              while (tryGetBusyFlag() == false) {
                   try {
                        wait();
                   } catch (Exception e) {
         public synchronized boolean tryGetBusyFlag() {
              if (busyflag == null) {
                   busyflag = Thread.currentThread();
                   busycount = 1;
                   return true;
              if (busyflag == Thread.currentThread()) {
                   busycount++;
                   return true;
              return false;
         public synchronized void freeBusyFlag() {
              if (getBusyFlagOwner() == Thread.currentThread()) {
                   busycount--;
                   if (busycount == 0) {
                        busyflag = null;
                        *notify();*
         public synchronized Thread getBusyFlagOwner() {
              return busyflag;
    }

    naficbm wrote:
    now I'm reading this book "Java Threads 2nd edition" by Scott Oaks and Henry Wong. Writer provide a class called BusyFlag to simulate the mutex.
    I wonder why not use notifyall() to replay notify().Looks like it should work with notifyall as well.

  • Why not use paper label on finished DVD project?

    I also use printed paper labels for my DVD covers
    why not use them?
    please advise?

    Hi
    The DVD get's unbalanced = Laser can't read track
    DVD are several times more sencitive than CD (not advicable to put lables on them either)
    And DVDs/CDs that are unbalanced also give more strain to the player mechanism
    that eventually stops working.
    Yours Bengt W

  • Why not use interfaces for constants?

    Hi,
    I have been getting conflicting views about why not use interfaces for constants?
    Can anyone shed some light on it?
    Piyush

    How so?
    If the constants are only used in a single classhow
    does it help to put them in a separate structute?
    (Ignoring the a type safe enumeration of course.)Well, mainly for readability. Suppose that you have a
    web application which has a servlet class
    "RedirectServlet", which takes a variable to redirect
    to a given JSP file. In the JSP files, you want to
    create forms which take this servlet as their action.
    You could of course put all these "redirect"
    constants in the RedirectServlet itself, but then
    it's kind of weird that you have to import a
    servlet in your jsp file to include these constants
    and to be able to write
    <form action="servlet/RedirectServlet?key=<%=
    RedirectServlet.HOMEPAGE %>> or so.
    Instead, you could create an interface called
    "RedirectConstants", and then your servlet
    RedirectServlet could implement this interface. Then
    your JSP can also access these constants via this
    interface.
    But then again, this is merely a matter of style, I
    fully agree that there is never a real _need_ to put
    constants in a separate structure if they're only used
    in a single class.Are you claiming that your example above is a single class?

  • Hello, can someone help me: my eMac G4 700 MHz. I can not boot it. If he starts appears on the screen, only a small "folder with a question mark." The Mac was not used 1 year. Question 1: Problem = hard drive? Question 2: Problem = PRAM battery? the What

    Hello, can someone help me: my eMac G4 700 MHz. I can not boot it. If he starts appears on the screen, only a small "folder with a question mark." The Mac was not used 1 year.
    Question 1: Problem = hard drive?
    Question 2: Problem = PRAM battery?
    the
    What can I do to boot?

    Restart with the Option key held down.
    If the internal drive shows up, it's the PRAM battery.
    If it doesn't, insert a compatible Mac OS 9 or X install disk, click the button with the circular arrow, and either repair the internal drive or install a new OS on it. If it doesn't show up in Disk First Aid(9) or the Disk Utility(X), it's either not plugged in or needs to be replaced.
    (97530)

  • Why is my saved Facebook password not used when both "Permanent Private Browsing" and "Remember Passwords for Sites" are enabled?

    After entering and saving my Facebook user name and password, the data is not used for subsequent entries into the application after the browser is reset. "Remember Passwords for Sites" is checked, but the data is only used if I do NOT have "Permanent Private Browsing enabled. Why does "Permanent Private Browsing" effect passwords? (Note: Facebook is NOT in the "Passwords / Exceptions..." list.)

    I agree that password protection may be considered important by some for Private Browsing, however if that is the intention, then it would be one of the delineated items such as...remember browser history, remember download history, etc. that are check-listed under that function. Also, having a separate Passwords option implies that their functions are mutually exclusive and therefore should function independent of one another.
    Thanks for your response.

  • Why not use Redo log for consistent read

    Oracle 11.1.0.7:
    This might be a stupid question.
    As I understand if a select was issued at 7:00 AM and the data that select is going to read has changed at 7:10 AM even then Oracle will return the data that existed at 7:00 AM. And for this Oracle needs the data in Undo segments.
    My question is since redo also has past and current information why can't redo logs be used to retreive that information? Why is undo required when redo already has all that information.

    user628400 wrote:
    Thanks. I get that piece but isn't it the same problem with UNDO? It's written as it expires and there is no guranteee until we specifically ask oracle to gurantee the UNDO retention? I guess I am trying to understand that UNDO was created for effeciency purposes so that there is less performance overhead as compared to reading and writing from redo.And this also you said,
    >
    If data was changed to 100 to 200 wouldn't both the values be there in redo logs. As I understand:
    1. Insert row with value 100 at 7:00 AM and commit. 100 will be writen to redo log
    2. update row to 200 at 8:00 AM and commit. 200 will be written to redo log
    So in essence 100 and 200 both are there in the redo logs and if select was issued at 7:00 data can be read from redo log too. Please correct me if I am understanding it incorrectly.I guess you didnt understand the explaination that I did. Its not the old data that is kept. Its the changed vector of Undo that is kept which is useful to "recover" it when its gone but not useful as such for a select statement. Whereas in an Undo block, the actual value is kept. You must remember that its still a block only which can contain data just like your normal block which may contain a table like EMP. So its not 100,200 but the change vectors of these things which is useful to recover the transaction based on their SCN numbers and would be read in that order as well. And to read the data from Undo, its quite simple for oracle to do so using an Undo block as the transaction table which holds the entry for the transaction, knows where the old data is kept in the Undo Segment. You may have seen XIDSEQ, XIDUSN, XIDSLOT in the tranaction id which are nothing but the information that where the undo data is kept. And to read it, unlke redo, undo plays a good role.
    About the expiry of Undo, you must know that only INACTIVE Undo extents are marked for expiry. The Active Extents which are having an ongoing tranaction records, are never marked for it. You can come back after a lifetime and if undo is there, your old data would be kept safe by oracle since its useful for the multiversioning. Undo Retention is to keep the old data after commit, something which you need not to do if you are on 11g and using Total Recall feature!
    HTH
    Aman....

  • Why not use Jsp for  control in MVC2 ?

    hi
    i am rajendra , i am preparing interview FAQ, so please give me my Que. Ans.
    1) we are using servlet for control in MVC2 Module,then why we can not use
    Jsp for control in mvc2
    2) if we used jsp for control in mvc2 then what is disadvantage compare to if using servlet for control in mvc2
    Please give me ans. as soon as..
    Thanks.

    Are you preparing a FAQ for others or are you just cramming before an upcoming interview and someone gave you a set of questions? It looks more like the latter to me.
    If you haven't actually written any MVC based code, you won't be able to snow the interviewer. It's better to just relax, get a good night's sleep and impress them with your willingness to learn, your fit with the team and whatever real accomplishments you have to show.
    If you really want an answer to this I suggest that you try writing an MVC2 system using JSP for the controller, which is possible, and then try doing the same in a servlet, or better yet using a framework like Spring MVC or Struts to provide the servlet for you and let you concentrate on your application.

  • Xletview: why not use sun's javaTV source code directly ?

    xletview : one emulator for viewing MHP Xlets on a PC;
    I see many difference from sun's code about the part of javaTV.
    Why the author Martin Sveden need to rewrite them and not use sun's javaTV source code directly ?
    Thank you for your any answer.
    Sorry for my horrible english.

    XleView is a fine effort, but it has its limitations. I tried using it for the GunBunny demo available in the JavaME SDK 3.0 Eary Access available in
    http://java.sun.com/javame/downloads/sdk30ea.jsp
    and I encountered some of thost limitations. What Sveden does it several tricky manipulations in a classloader for the Xlet. In particular, he translates bytecode as he loads the Xlet's classes, changing some class names, such as changing
    java.awt.Toolkit
    tto
    xjava.awt.Toolkit
    This works up to a point. This version of Toolkit usually just turns around calls java.awt.Toolkit's corresponding routine, but he deliberately he does not implement the ubiquitous
    public Image createImage(URL url)
    When I downloaded his source and tried adding ths into his code, I then encountered at runtime
    Uncaught error fetching image:
    java.lang.NullPointerException
    at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:97)
    at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:107)
    at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
    at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
    at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
    I think that this is some optimization within J2SE where they do not wait for the image to load and do the fetching in a separate thread. I do not know if there is some way to force the Sun's JVM to disable this optimization and I have not investigated furher, but I did email Svenden. I noticed that the current version of XleTView is 0.3.6 which is dated June 2004 and the web site http://www.xletview.org/ has had not news since 2005 .
    I note that Svenden provides an elegant user interface but I advise you not try to learn the API's from his classes: he makes no effort to keep his implementation separate from the API standards so, for instance, his version of HScene is
    package org.havi.ui;
    public class HScene extends Container
    implements HComponentOrdering, ImageObserver, MenuContainer, Serializable {
    whereas the real standard is
    public class HScene extends Container
    implements HComponentOrdering {
    I hate to critize such a fine effort, but it is best to keep an imlementation separate from the public API.
    I agree that having a lightweight, simple and Java feature-complete Xlet viewer running would be very helpful, especially if BD-J gains much popularity. I have found trying to work with the vendor players described at
    http://wiki.java.net/bin/view/Mobileandembedded/Blu-RayDiscHelloWorld
    to be frustrating. I tried all four mentioned and I have gotten none of them to work for me yet. These are huge downloads and the "Intro Version" of Arcsoft pointed to at the SDK 3.0 Early Access page
    http://www.arcsoft.com/products/totalmediatheatre/
    just gives a "File not found" HTML page. This forum post mentions that perhaps it was recently taken down?
    http://www.arcsoft.com/forum/forum_posts.asp?TID=1084
    I have already emailed Michael Downs of Arcsoft since he is mentioned here:
    http://wiki.java.net/bin/view/Mobileandembedded/BDJPCPlayers
    What did work for me was to take Sun's JavaTV 1.1 Reference Implementation and PowerDVD's BDJ.jar and hack/fix a few classes to get GunBunny to work within the RI's RunXlet program. This is not trivial but I will will describe:
    Download the JavaME 3.0 SDK EA and then download the correct version of PowerDVD that the SDK page points to:
    http://www.brothersoft.com/powerdvd-download-50794.html
    Download the RI binary and source of Java TV API 1.1
    http://java.sun.com/javame/technology/javatv/index.jsp
    Since I am too lazy to use anything but the latest 1.6 JRE as a runtime, I have to fix
    com.sun.tv.media.util.MediaThread
    to comment out its stop() method. This is becase stop() was deprecated and made final in J2SE 1.5
    http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html#stop()
    http://java.sun.com/j2se/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html
    Next, I had to mae a change to Sun's JavaTV implementation to keep the GunBunny demo happy by providing a ServiceContext. The RunXlet program calls SIEmulator, but that environment does not provide a ServiceContex, so I added one back in:
    com.sun.tv.receiver.SIEmulator
    private static ServiceContext svcctx = null;
    Add before every call to new AppSignalEvent() and add the svcctx as the second-to-last argument:
    if(svcctx == null){ try { svcctx = new com.sun.tv.ServiceContextImpl(); }catch (Exception e){ e.printStackTrace(); } }
    I then had to hack a few PowerDVD classes, which is evil of me. First, I had to build an empty class by the name of
    sun.util.BDJPlugin
    becuase some PowerDVD class extends it but it is not in its BDJ.jar and then I had to reverse-compile (evil!) and modify one of their internal classes to avoid a dependency on their native methods. What I ended up with was a hacked version of com.cl.bdj.helper.CUtil to avoid the native methods which access the registry where they query for registry settings but also provide a default value (which I return).
    com.cl.bdj.helper.CUtil
    private static String pGetRegistryString(long i ,String string ,String string3) {
    return string3;
    private static int pGetRegistryInt(long i ,String string ,int j) {
    return j;
    The last thing I had to do was to change com.hdccookbook.gunbunny.BaseXlet, to use the JavaTV container rather than the org.havi one:
    import javax.tv.graphics.TVContainer;
    import java.awt.Container;
    change
    // protected HScene scene;
    protected Container scene;
    public final void run() {
    // waitForPresenting();
    // scene = HSceneFactory.getInstance().getDefaultHScene();
    scene = TVContainer.getRootContainer(xletContext);
    In order to having working keys, I had to add the KeyListener interface to BaseXet and
    run(){
    addKeyListener(this);
    and then add a near duplicate of the org.dvb.event.UserEvent* stuff that is already there:
    public void keyPressed(KeyEvent e){
    switch(e.getKeyCode()){
    case KeyEvent.VK_0:
    case KeyEvent.VK_1:
    case KeyEvent.VK_2:
    case KeyEvent.VK_3:
    case KeyEvent.VK_4:
    case KeyEvent.VK_5:
    case KeyEvent.VK_6:
    case KeyEvent.VK_7:
    case KeyEvent.VK_8:
    case KeyEvent.VK_9:
    numberKeyPressed(e.getKeyCode() - KeyEvent.VK_0);
    break;
    case KeyEvent.VK_ENTER:
    enterKeyPressed();
    break;
    case KeyEvent.VK_LEFT:
    arrowLeftKeyPressed();
    break;
    case KeyEvent.VK_RIGHT:
    arrowRightPressed();
    break;
    case KeyEvent.VK_UP:
    arrowUpPressed();
    break;
    case KeyEvent.VK_DOWN:
    arrowDownPressed();
    break;
    public void keyReleased(KeyEvent e){
    // System.out.println("Released: e="+e+" code="+e.getKeyCode());
    public void keyTyped(KeyEvent e) {
    // System.out.println("Typed: e="+e+" code="+e.getKeyCode());
    It then comes up and functions, but the rendering is not very good. Again, this is complete hack. Running the Java TV 1.1 RI in a JRE 1.6 is not supported. If you try to run any of the other examples, you will discover that the XML parsing is broken in JRE 1.6 with this message:
    Parsing failed: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequence
    Exception: Invalid byte 1 of 1-byte UTF-8 sequence., file: lib\JavaTVSampleFile01.xml
    and you have to go and change the lines in
    lib\JavaTV.properties
    from
    ServiceFileHandler=com.sun.tv.receiver.ReceiverFile
    # ServiceFileHandler=SampleData_01
    to
    # ServiceFileHandler=com.sun.tv.receiver.ReceiverFile
    ServiceFileHandler=SampleData_01
    and build samples\db\SampleData_01.java and put it in your classpath along with all these other hacks.
    Nonetheless, if you want to develop a somewhat generic Xlet that uses some BD-J features, that is how you might do it. But the moment you exercise anything else in the vendor's BDJ.jar that simply doe snot work outside of their environment or invokes one of their native methods, you are again stuck.
    It would be nice if Sun would at least bother to update the JavaTV RI with the fixes I hae mentioned. Their "jmflite" implementation does not render perfecly but at least it would give the programmer something to work with without having to deal with an older JRE, etc.
    Andrew
    Edited by: AndrewMorrow on Oct 20, 2008 2:48 AM

  • Why not use Arch Linux only?

    Named as an Arch Linux "Linux Addict" (according to my upgraded user profile ), for some times I have asked myself why use other distros than AL, especially RedHat, SuSE and Mandrake. What do they provide what AL doesn't?
    One of the roles of RedHat became clear reading Linux Today, though it may not be for the common users but have to admit its impressive (there are three major advances in the new RHEL3 product line....):
    http://linuxtoday.com/it_management/2003102200926NWRHSW
    PS.
    Does it sound like I am addicted??... it feels natural   :idea: 

    maturity? stable? can't trust?
    let me tell you something i learned by experience ...
    i runed SuSE for long time (from 5.2 to 8.1) and what i know they do wrong is: if you have e.g. 6.0 (the most stable SuSE i know) then you can update your packages over internet, but after some time you will be "forced" to  buy the next release that is totally differently constructed (7.1, because it uses YaST2 instead of the YaST and other stupid inovations that you cannot easily update from internet) ... and after a while again you have to upgrade by buying the next one ...
    sure, you install it in about an hour and everything works, but hey, each package costs some money and this install is each time from quite 0 (because the integrated update often does not work) :-(
    trusting?
    i trust only in systems i configure myself ... and since SuSE 7.2 i lost the overview in where you can configure what and why ... and you are not sure that YaST2 will change your changed settings to default
    archlinux is fully configureable and does not have a tool that changes files behind your back (well, there is one case: when you update init-scripts with packman without setting in pacman.conf to exclude some files you changed ... but also then you can restore the settings by mv'ing the original files to their right name-links :-)
    why using also other distros?
    well since arch 0.5 i removed all other linuces from my machine (to save space) and now have only arch and winXP ... xp is used only for watching tv (because hauppauge usb "usbvision" module cannot be compiled with  a 2.4.x or 2.6.0tx kernel (but 2.5.x) and because of ebanking software that will not install on archlinux but easily on SuSE and WinXP (need the original sun's java vm, but have no time to construct a PKGBUILD for sun's jdk 1.4)
    ... and the needed other software i built packages of and installed on my local repository (and also copied in incoming) ... now i'm quite happy with archlinux as an OS (and i hope with a more advanced 2.6.x TV will come too, and java i will find one day time to build for ebanking)
    -> "use an OS that works, use archlinux"
    ps
    and about "linux addict":
    no, i dont think i'm addict, but i use this forum as a normal member  (to help others switching to an os that works,  to help people with problems i had myself often some time ago, to ask if i find something interessting or funny about something in arch, to inform that i built packages and put them in incoming :-) ... i would be much happier to have "regular user" instead of "linux addict", but that's something i cannot change

Maybe you are looking for