Apple Migrates to Intel

The big news in consumer computing this week seems to be the
announcement of Apple switching processors to Intel chips from IBM’s
PowerPC. I come to this news with quite a bit of scorn and derision,
but partly that is because I started out with bitterness towards Apple.
I spent the years between 1986 and 1996 using Macs, and in that time I
became an application user – not a computer user. I could invent
nothing, develop nothing, and there was no hint that there were creative
properties to computing devices in those years. I am not the only one
who found the Mac to be too confining – Neal Stephenson wrote an essay on the
subject. I frequently wish that I had spent those years learning and
using Unix, which would have given me a much broader set of skills than
the ability to double-click. So I did not come to this news with an
open mind, and further thought on the subject has led me to the opinion
that Apple has, once again, made a massively bone-headed move.

I am not suggesting that Apple should have stuck to the PPC chips – they
have not been advancing and are not providing an advantage to the
company. You can be as big a fan as you like of the architecture, but
if no one can make it speed up, and no one can make it’s
"better" features actually perform better, then it is time to
move on. That said, going to Intel is idiotic. Intel has been getting
it’s butt kicked by AMD for a few years now, and they are still
providing us with 1970’s technology today. Most importantly, by going
to a commodity chipset, Apple has paved the way to having their precious
software work on cheap, generic machines, which will radically undercut
their hardware sales. Apple is a company that needs to focus – either
make hardware or software, but stop trying to do both as a seamless
"experience". Some suggest that assuming Apple doesn’t sell
OS X for generic hardware, it will get ported to generic hardware and
widely pirated. I think that this is true, and it will hurt both Apple
and Microsoft, because neither one will make money from it. Some
suggest that the lack of support will dissuade people from this, but
that is not th case for the home user at all (though it is a major
deterrent for business). How much support is provided by Apple or
Microsoft now? Sure, there’s someone you can call, but I’ll tell you to
reboot for free, and I can ignore you just as well as a big company.
User-level support is practically non-existent for any OS – you need a
community or a third-party service vendor to get any real help.

Perhaps the most important issue is control – with both Windows and OS X
you get very little control over the system you use, and if you exert what
little control you have, you frequently find that you have voided your
support contract. On Windows you have control over your hardware, but
if you change too much you’ll have to re-register your copy of Windows.
Also, if you want to change a behaviour or fix a bug you have to wait,
and to buy a new product sight-unseen in hope of fixing it. I am no
longer willing to do that. I no longer up proprietary software because
it denies me that ability to control my computer for no benefit.

XF86Config-4 – Dual-Head

Section "ServerLayout"
    Identifier     "Matrox PowerDesk configured."
    Screen      0  "Display 1" RightOf "Display 2"
    Screen         "Display 2" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "PS/2 Mouse" "CorePointer"
EndSection

Section "Files"
    RgbPath     "/usr/X11R6/lib/X11/rgb"
    ModulePath  "/usr/X11R6/lib/modules"
    FontPath    "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
    FontPath    "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
    FontPath    "/usr/local/fonts/unicode"
#   FontPath     "unix/:7101"
    FontPath    "unix/:7100"
    FontPath    "/usr/X11R6/lib/X11/fonts/misc"
#   FontPath     "/usr/X11R6/lib/X11/fonts/misc:unscaled"
#   FontPath     "/usr/X11R6/lib/X11/fonts/misc"
#   FontPath     "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
#   FontPath     "/usr/X11R6/lib/X11/fonts/75dpi"
#   FontPath     "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
#   FontPath     "/usr/X11R6/lib/X11/fonts/100dpi"
#   FontPath     "/usr/X11R6/lib/X11/fonts/Speedo"
#   FontPath     "/usr/X11R6/lib/X11/fonts/PEX"
#   FontPath     "/usr/X11R6/lib/X11/fonts/cyrillic"
#   FontPath     "/usr/X11R6/lib/X11/fonts/Type1"
#   FontPath     "/usr/share/fonts/ttf/western"
#   FontPath     "/usr/share/fonts/ttf/decoratives"
#   FontPath     "/usr/share/fonts/truetype"
#   FontPath     "/usr/share/fonts/truetype/openoffice"
#   FontPath     "/usr/share/fonts/truetype/ttf-bitstream-vera"
#   FontPath     "/usr/share/fonts/latex-ttf-fonts"
#   FontPath     "/usr/X11R6/lib/X11/fonts/defoma/CID"
#   FontPath     "/usr/X11R6/lib/X11/fonts/defoma/TrueType"
EndSection

Section "Module"
    Load  "ddc"
    Load  "GLcore"
    Load  "dbe"
    Load  "extmod"
    Load  "glx"
    Load  "bitmap"
    Load  "speedo"
    Load  "type1"
    Load  "freetype"
    Load  "record"
EndSection

Section "ServerFlags"
    Option "AllowMouseOpenFail" "true"
    Option "Xinerama"
EndSection

Section "InputDevice"
    Identifier  "Keyboard0"
    Driver      "keyboard"
    Option      "CoreKeyboard"
    Option      "XkbRules" "xfree86"
    Option      "XkbModel" "pc105"
    Option      "XkbLayout" "us"
    #Option      "XkbLayout" "us_intl"
EndSection

Section "InputDevice"
    Identifier  "PS/2 Mouse"
    Driver      "mouse"
    Option      "Protocol" "PS/2"
    Option      "ZAxisMapping" "4 5"
    Option      "Device" "/dev/psaux"
    Option      "Emulate3Buttons" "true"
    Option      "Emulate3Timeout" "70"
    Option      "SendCoreEvents" "true"
EndSection

Section "Monitor"
    Identifier   "Display 1"
    VendorName   "CPQ"

    ModelName    "CPQ1330"
    HorizSync    30.0 - 85.0
    VertRefresh  50.0 - 150.0
    Option       "DPMS" "true"
EndSection

Section "Monitor"
    Identifier   "Display 2"
    VendorName   "CPQ"
    ModelName    "CPQ1330"
    HorizSync    30.0 - 50.0
    VertRefresh  50.0 - 90.0
EndSection

Section "Device"
    Identifier  "MATROX CARD 1"
    Driver      "mga"
    VendorName  "All"
    BoardName   "All"
    BusID       "PCI:1:0:0"
EndSection

Section "Device"
    Identifier  "MATROX CARD 2"
    Driver      "mga"
    VendorName  "All"
    BoardName   "All"
    BusID       "PCI:1:0:0"
    Screen      1
EndSection

Section "Screen"
    Identifier "Display 1"
    Device     "MATROX CARD 1"
    Monitor    "Display 1"
    DefaultDepth     24
    SubSection "Display"
        Depth     24
        Modes    "1024x768" "1024x768" "1024x768" "1024x768" "1024x768"
    EndSubSection
EndSection

Section "Screen"
    Identifier "Display 2"
    Device     "MATROX CARD 2"
    Monitor    "Display 2"
    DefaultDepth     24
    SubSection "Display"
        Depth     24
        Modes    "1024x768"
    EndSubSection
EndSection

Section "DRI"
    Mode         0666
EndSection

Backdrop in Python

#!/usr/bin/python

import os, sys, random, imghdr

# This is a little program I call via cron to change my desktop every
# few minutes.  With no arguments it goes to my directory of backdrop
# images and picks a valid image at random.  If I specify a path and a
# file the program will put it up as the display.

# I don't want to fill up my inbox with emails from cron telling me that
# X isn't running, so I check first.
xisrunning = os.popen("pidof /usr/bin/X11/X").read()

def changebackdrop():
    # The below command works for transparent Eterm or Urxvt terminals,
    # populating their backgrounds with the image they occlude.  xli or
    # xsetroot can be called, but they don't work as desired for
    # transparent terminals.
    command = "/usr/bin/Esetroot"
    # If I was logging into X remotely, this would change.
    commandargs = " -display :0.0 "

    # This is where my backdrops live
    picdir = "/home/willyyam/misc/bmps/"

    if sys.argv[1:]:
        doit = command + commandargs + sys.argv[1]
        os.popen(doit, 'r')
    else:
        files = os.listdir(picdir)
        os.chdir(picdir)
        pics = []
        for file in files:
            # This is a test for valid images - it includes rgb files,
            # which are not supported by my image software, but the
            # error thrown is not terrible - it knows what it can and
            # cannot run.
            if imghdr.what(file):
                pics.append(file)

        randpic = random.choice(pics)
        doit = command + commandargs + picdir + randpic
        os.popen(doit, 'r')

if xisrunning:
    changebackdrop()
else:
    exit

# Copyright 2005 William Witteman