RSS Feed

RSS

Comments RSS


Shave Secret – WOW!

Ok, do not usually do this and certainly am not being paid to do it, but it is very seldom that a product I try on a whim that works out so well. I have always HATED shaving. Even the very best lubricated shaving gels did not prevent me getting pretty bad razor rash. I would not shave very often because of it, usually just once a week for church or otherwise on special occasions (like my wife insisting!). I was in Wal-Mart about two months ago and noticed a product called Shave Secret shaving oil. It is a little bottle and the product is a blend of oils. I bought it on a whim out of desperation for something that would work better than shaving cream or shaving gel. It works fantastically well! With it, I can shave daily and not be one constant case of razor rash and it leaves the skin refreshed, moisturized, and well conditioned. It can be found on-line at http://www.shavesecret.com. Oh, and it is a TEXAS product made by USA King’s Crossing, LLC.. Cuero, Texas.

Useful Linux tips

This page has some very useful Linux tips.  Mainly for beginners, but some intermediate.   Good stuff!   Thanks to the author for sharing with the community.
Highly useful Linux commands & configurations

Barack HUSSEIN Obama – America’s Dictator


uppity

I am better than you.  I am smarter than you.  You will do what I say, BECAUSE I SAY SO!`


CSH PROGRAMMING CONSIDERED HARMFUL

From: Tom Christiansen <tchrist@mox.perl.com>
Newsgroups: comp.unix.shell, comp.unix.questions, comp.unix.programmer,
comp.infosystems.www.authoring.cgi
Subject: Csh Programming Considered Harmful
Date: 6 Oct 1996 14:03:18 GMT
Message-ID: <538e76$8uq$1@csnews.cs.colorado.edu>

Archive-name: unix-faq/shell/csh-whynot
Version: $Id: csh-faq,v 1.7 95/09/28 12:52:17 tchrist Exp Locker: tchrist $

The following periodic article answers in excruciating detail
the frequently asked question “Why shouldn’t I program in csh?”.
It is available for anon FTP from perl.com in /pub/perl/versus/csh.whynot.gz

*** CSH PROGRAMMING CONSIDERED HARMFUL ***

Resolved: The csh is a tool utterly inadequate for programming,
and its use for such purposes should be strictly banned!

I am continually shocked and dismayed to see people write test cases,
install scripts, and other random hackery using the csh.  Lack of
proficiency in the Bourne shell has been known to cause errors in /etc/rc
and .cronrc files, which is a problem, because you *must* write these files
in that language.

The csh is seductive because the conditionals are more C-like, so the path
of least resistance is chosen and a csh script is written.  Sadly, this is
a lost cause, and the programmer seldom even realizes it, even when they
find that many simple things they wish to do range from cumbersome to
impossible in the csh.

1. FILE DESCRIPTORS

The most common problem encountered in csh programming is that
you can’t do file-descriptor manipulation.  All you are able to
do is redirect stdin, or stdout, or dup stderr into stdout.
Bourne-compatible shells offer you an abundance of more exotic
possibilities.

1a. Writing Files

In the Bourne shell, you can open or dup arbitrary file descriptors.
For example,

exec 2>errs.out

means that from then on, stderr goes into errs file.

Or what if you just want to throw away stderr and leave stdout
alone?    Pretty simple operation, eh?

cmd 2>/dev/null

Works in the Bourne shell.  In the csh, you can only make a pitiful
attempt like this:

(cmd > /dev/tty) >& /dev/null

But who said that stdout was my tty?  So it’s wrong.  This simple
operation *CANNOT BE DONE* in the csh.

Along these same lines, you can’t direct error messages in csh scripts
out stderr as is considered proper.  In the Bourne shell, you might say:

echo “$0: cannot find $file” 1>&2

but in the csh, you can’t redirect stdout out stderr, so you end
up doing something silly like this:

sh -c ‘echo “$0: cannot find $file” 1>&2′

1b. Reading Files

In the csh, all you’ve got is $<, which reads a line from your tty.  What
if you’ve redirected stdin?  Tough noogies, you still get your tty, which
you really can’t redirect.  Now, the read statement
in the Bourne shell allows you to read from stdin, which catches
redirection.  It also means that you can do things like this:

exec 3<file1
exec 4<file2

Now you can read from fd 3 and get lines from file1, or from file2 through
fd 4.   In modern, Bourne-like shells, this suffices:

read some_var 0<&3
read another_var 0<&4

Although in older ones where read only goes from 0, you trick it:

exec 5<&0  # save old stdin
exec 0<&3; read some_var
exec 0<&4; read another_var
exec 0<&5  # restore it

1c. Closing FDs

In the Bourne shell, you can close file descriptors you don’t
want open, like 2>&-, which isn’t the same as redirecting it
to /dev/null.

1d. More Elaborate Combinations

Maybe you want to pipe stderr to a command and leave stdout alone.
Not too hard an idea, right?  You can’t do this in the csh as I
mentioned in 1a.  In a Bourne shell, you can do things like this:

exec 3>&1; grep yyy xxx 2>&1 1>&3 3>&- | sed s/file/foobar/ 1>&2 3>&-
grep: xxx: No such foobar or directory

Normal output would be unaffected.  The closes there were in case
something really cared about all its FDs.  We send stderr to sed,
and then put it back out 2.

Consider the pipeline:

A | B | C

You want to know the status of C, well, that’s easy: it’s in $?, or
$status in csh.  But if you want it from A, you’re out of luck — if
you’re in the csh, that is.  In the Bourne shell, you can get it, although
doing so is a bit tricky.  Here’s something I had to do where I ran dd’s
stderr into a grep -v pipe to get rid of the records in/out noise, but had
to return the dd’s exit status, not the grep’s:

device=/dev/rmt8
dd_noise=’^[0-9]+\+[0-9]+ records (in|out)$’
exec 3>&1
status=`((dd if=$device ibs=64k 2>&1 1>&3 3>&- 4>&-; echo $? >&4) |
egrep -v “$dd_noise” 1>&2 3>&- 4>&-) 4>&1`
exit $status;

The csh has also been known to close all open file descriptors besides
the ones it knows about, making it unsuitable for applications that
intend to inherit open file descriptors.

2. COMMAND ORTHOGONALITY

2a. Built-ins

The csh is a horrid botch with its built-ins.  You can’t put them
together in many reasonable ways.   Even simple little things like this:

% time | echo

which while nonsensical, shouldn’t give me this message:

Reset tty pgrp from 9341 to 26678

Others are more fun:

% sleep 1 | while
while: Too few arguments.
[5] 9402
% jobs
[5]     9402 Done                 sleep |

Some can even hang your shell.  Try typing ^Z while you’re sourcing
something, or redirecting a source command.  Just make sure you have
another window handy.  Or try

% history | more

on some systems.

Aliases are not evaluated everywhere you would like them do be:

% alias lu ‘ls -u’
% lu
HISTORY  News     bin      fortran  lib      lyrics   misc     tex
Mail     TEX      dehnung  hpview   logs     mbox     netlib
% repeat 3 lu
lu: Command not found.
lu: Command not found.
lu: Command not found.

% time lu
lu: Command not found.

2b. Flow control

You can’t mix flow-control and commands, like this:

who | while read line; do
echo “gotta $line”
done

You can’t combine multiline constructs in a csh using semicolons.
There’s no easy way to do this

alias cmd ‘if (foo) then bar; else snark; endif’

You can’t perform redirections with if statements that are
evaluated solely for their exit status:

if ( { grep vt100 /etc/termcap > /dev/null } ) echo ok

And even pipes don’t work:

if ( { grep vt100 /etc/termcap | sed ‘s/$/###’ } ) echo ok

But these work just fine in the Bourne shell:

if grep vt100 /etc/termcap > /dev/null ; then echo ok; fi

if grep vt100 /etc/termcap | sed ‘s/$/###/’ ; then echo ok; fi

Consider the following reasonable construct:

if ( { command1 | command2 } ) then

endif

The output of command1 won’t go into the input of command2.  You will get
the output of both commands on standard output.  No error is raised.  In
the Bourne shell or its clones, you would say

if command1 | command2 ; then

fi

2c. Stupid parsing bugs

Certain reasonable things just don’t work, like this:

% kill -1 `cat foo`
`cat foo`: Ambiguous.

But this is ok:

% /bin/kill -1 `cat foo`

If you have a stopped job:

[2]     Stopped              rlogin globhost

You should be able to kill it with

% kill %?glob
kill: No match

but

% fg %?glob

works.

White space can matter:

if(expr)

may fail on some versions of csh, while

if (expr)

works!  Your vendor may have attempted to fix this bug, but odds are good
that their csh still won’t be able to handle

if(0) then
if(1) then
echo A: got here
else
echo B: got here
endif
echo We should never execute this statement
endif

3. SIGNALS

In the csh, all you can do with signals is trap SIGINT.  In the Bourne
shell, you can trap any signal, or the end-of-program exit.    For example,
to blow away a tempfile on any of a variety of signals:

$ trap ‘rm -f /usr/adm/tmp/i$$ ;
echo “ERROR: abnormal exit”;
exit’ 1 2 3 15

$ trap ‘rm tmp.$$’ 0   # on program exit

4. QUOTING

You can’t quote things reasonably in the csh:

set foo = “Bill asked, \”How’s tricks?\”"

doesn’t work.  This makes it really hard to construct strings with
mixed quotes in them.  In the Bourne shell, this works just fine.
In fact, so does this:

cd /mnt; /usr/ucb/finger -m -s `ls \`u\“

Dollar signs cannot be escaped in double quotes in the csh.  Ug.

set foo = “this is a \$dollar quoted and this is $HOME not quoted”
dollar: Undefined variable.

You have to use backslashes for newlines, and it’s just darn hard to
get them into strings sometimes.

set foo = “this \
and that”;
echo $foo
this  and that
echo “$foo”
Unmatched “.

Say what?  You don’t have these problems in the Bourne shell, where it’s
just fine to write things like this:

echo     ’This is
some text that contains
several newlines.’

As distributed, quoting history references is a challenge.  Consider:

% mail adec23!alberta!pixel.Convex.COM!tchrist
alberta!pixel.Convex.COM!tchri: Event not found.

5. VARIABLE SYNTAX

There’s this big difference between global (environment) and local
(shell) variables.  In csh, you use a totally different syntax
to set one from the other.

In the Bourne shell, this
VAR=foo cmds args
is the same as
(export VAR; VAR=foo; cmd args)
or csh’s
(setenv VAR;  cmd args)

You can’t use :t, :h, etc on envariables.  Watch:
echo Try testing with $SHELL:t

It’s really nice to be able to say

${PAGER-more}
or
FOO=${BAR:-${BAZ}}

to be able to run the user’s PAGER if set, and more otherwise.
You can’t do this in the csh.  It takes more verbiage.

You can’t get the process number of the last background command from the
csh, something you might like to do if you’re starting up several jobs in
the background.  In the Bourne shell, the pid of the last command put in
the background is available in $!.

The csh is also flaky about what it does when it imports an
environment variable into a local shell variable, as it does
with HOME, USER, PATH, and TERM.  Consider this:

% setenv TERM ‘`/bin/ls -l / > /dev/tty`’
% csh -f

And watch the fun!

6. EXPRESSION EVALUATION

Consider this statement in the csh:

if ($?MANPAGER) setenv PAGER $MANPAGER

Despite your attempts to only set PAGER when you want
to, the csh aborts:

MANPAGER: Undefined variable.

That’s because it parses the whole line anyway AND EVALUATES IT!
You have to write this:

if ($?MANPAGER) then
setenv PAGER $MANPAGER
endif

That’s the same problem you have here:

if ($?X && $X == ‘foo’) echo ok
X: Undefined variable

This forces you to write a couple nested if statements.  This is highly
undesirable because it renders short-circuit booleans useless in
situations like these.  If the csh were the really C-like, you would
expect to be able to safely employ this kind of logic.  Consider the
common C construct:

if (p && p->member)

Undefined variables are not fatal errors in the Bourne shell, so
this issue does not arise there.

While the csh does have built-in expression handling, it’s not
what you might think.  In fact, it’s space sensitive.  This is an
error

@ a = 4/2

but this is ok

@ a = 4 / 2

The ad hoc parsing csh employs fouls you up in other places
as well.  Consider:

% alias foo ‘echo hi’ ; foo
foo: Command not found.
% foo
hi

7. ERROR HANDLING

Wouldn’t it be nice to know you had an error in your script before
you ran it?   That’s what the -n flag is for: just check the syntax.
This is especially good to make sure seldom taken segments of code
code are correct.  Alas, the csh implementation of this doesn’t work.
Consider this statement:

exit (i)

Of course, they really meant

exit (1)

or just

exit 1

Either shell will complain about this.  But if you hide this in an if
clause, like so:

#!/bin/csh -fn
if (1) then
exit (i)
endif

The csh tells you there’s nothing wrong with this script.  The equivalent
construct in the Bourne shell, on the other hand, tells you this:

#!/bin/sh -n
if (1) then
exit (i)
endif

/tmp/x: syntax error at line 3: `(‘ unexpected

RANDOM BUGS

Here’s one:

fg %?string
^Z
kill  %?string
No match.

Huh? Here’s another

!%s%x%s

Coredump, or garbage.

If you have an alias with backquotes, and use that in backquotes in
another one, you get a coredump.

Try this:
% repeat 3 echo “/vmu*”
/vmu*
/vmunix
/vmunix
What???

Here’s another one:

% mkdir tst
% cd tst
% touch ‘[foo]bar’
% foreach var ( * )
> echo “File named $var”
> end
foreach: No match.

8. SUMMARY

While some vendors have fixed some of the csh’s bugs (the tcsh also does
much better here), many have added new ones.  Most of its problems can
never be solved because they’re not actually bugs per se, but rather the
direct consequences of braindead design decisions.  It’s inherently flawed.

Do yourself a favor, and if you *have* to write a shell script, do it in the
Bourne shell.  It’s on every UNIX system out there.  However, behavior
can vary.

There are other possibilities.

The Korn shell is the preferred programming shell by many sh addicts,
but it still suffers from inherent problems in the Bourne shell’s design,
such as parsing and evaluation horrors.  The Korn shell or its
public-domain clones and supersets (like bash) aren’t quite so ubiquitous
as sh, so it probably wouldn’t be wise to write a sharchive in them that
you post to the net.  When 1003.2 becomes a real standard that companies
are forced to adhere to, then we’ll be in much better shape.  Until
then, we’ll be stuck with bug-incompatible versions of the sh lying about.

The Plan 9 shell, rc, is much cleaner in its parsing and evaluation; it is
not widely available, so you’d be significantly sacrificing portability.
No vendor is shipping it yet.

If you don’t have to use a shell, but just want an interpreted language,
many other free possibilities present themselves, like Perl, REXX, TCL,
Scheme, or Python.  Of these, Perl is probably the most widely available
on UNIX (and many other) systems and certainly comes with the most
extensive UNIX interface.  Increasing numbers vendors ship Perl with
their standard systems.  (See the comp.lang.perl FAQ for a list.)

If you have a problem that would ordinarily use sed or awk or sh, but it
exceeds their capabilities or must run a little faster, and you don’t want
to write the silly thing in C, then Perl may be for you.  You can get
at networking functions, binary data, and most of the C library. There
are also translators to turn your sed and awk scripts into Perl scripts,
as well as a symbolic debugger.  Tchrist’s personal rule of thumb is
that if it’s the size that fits in a Makefile, it gets written in the
Bourne shell, but anything bigger gets written in Perl.

See the comp.lang.{perl,rexx,tcl} newsgroups for details about these
languages (including FAQs), or David Muir Sharnoff’s comparison of
freely available languages and tools in comp.lang.misc and news.answers.

NOTE: Doug Hamilton <hamilton@bix.com> has a program that he sells for
profit for little toy non-UNIX systems.  He calls it ‘csh’ or the
‘hamilton csh’, but it’s not a csh as it’s neither bug nor feature
compatible with the real csh.  Actually, he’s fixed a great deal, but
in doing so, has created a totally different shell.

Tom Christiansen      Perl Consultant, Gamer, Hiker      tchrist@mox.perl.com
“Espousing the eponymous /cgi-bin/perl.exe?FMH.pl execution model is like
reading a suicide note — three days too late.”
–Tom Christiansen <tchrist@mox.perl.com>

Read more: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/#ixzz0rWEK4uIG

A Romantic Dinner

It is my wife’s birthday today.  We are out of town in Houston and vacationing, away from the kids who are vacationing separately.  It is wonderful to finally be at that point in life where that is possible!  It has allowed for a nice romantic dinner tonight at Perry’s Steakhouse, a great fine dining experience.   We had an excellent dinner and I did what I wish I had done twenty years ago, get down on one knee in public and make a proper proposal.  Of course, we are already married, but I did next best thing.  I asked her if she had it to do all over again, would she still marry me?  I also asked her if she would renew our wedding vows with me later this summer when our 2oth wedding anniversary comes around.  I received a joyful affirmative on both counts!  My advice to any married couple, take the time to do the simple, romantic things.  Go out to dinner.  Tell each other often you love them.  Do not forget how to go out on a date.  Take time for each other, because a limited amount of time is all you have together.

K5TSU Echolink Repeater

A new echolink repeater for Erath County, TX is on its way! The K5TSU/R.
After many years of faithful service of the KD5HNM repeater, the trustee Justin McClure has had to shut it down due to network infrastructure changes at his location. Many thanks to Justin, KD5HNM, for having made this available to us in Erath County, TX. Yesterday, some of us began discussing the possibility setting up a new Echolink repeater for our Ecom/WX use. It was amazing that within an hour we had what appears to be a very solid plan for bringing it online. A radio, computer an location have all been identified. Also, a call sign, K5TSU. This is the call sign of our local university ham club at Tarleton State University.

FOSS Encryption Software

I have been using EncryptionPlus Hard Disk encryption software at work now for encrypting laptops (per corporate security policies) for over six years now.   The product has work reasonably well.  Aside from personal file and email encryption products such as GPG, I was unaware of any FOSS (Free and Open-Source Software) full disk encryption systems similar to what I had been using at work, until a coworker brought TrueCrypt to my attention.   I have read the documentation and it seems perfectly capable for what I need so I am going to give it a try.  My laptop is unencrypting right now and EncryptionPlus will be uninstalled.   What makes me want to try this out is not just that TrueCrypt is FOSS, but also that I could not previously have a Wubi install of Ubuntu on this laptop while it was encrypted with the EPHD product – the Wubi Ubuntu would not boot.   Once this finishes unencrypting and EPHD is gone, I will once again do a Wubi install of Ubuntu and then try TrueCrypt and see if every thing works.   I will let the blogosphere know how this progresses!

Update — did the operation as described above. Wubi still did not work, but that now makes sense to me and I don’t think that could have worked. However, TrueCrypt itself is working wonderfully! I really like this product. I did a full disk encryption on a 75GB disk and it took much less than two hours. Also, the documentation for the software if very thorough. It is amazing that such a good system is FOSS!

Final Update — I could not be more pleased with TrueCrypt. I will highly recommend it to all my geek friends! :-)

From K5WLF – tech-note on battery run-time

K5WLF has written up a great tech-note on how to calculate battery run-time.  Very handy in any situation where running on battery power is critical.   A great overall blog post, the tech-note is found about half way down.   Check it out!

K5WLF post with tech-note:  http://www.rebelwolf.com/blog/?p=195

An update to K5WLF’s previous blog entry with information concerning the C/20 discharge rate of batteries, please see it for important additional information: http://www.rebelwolf.com/blog/?p=203

73,

Bill – WA5PB

HOWTO – Ububtu, a customizable Compose Key System

In my previous blog entry, I introduced both Unicode character entry and Compose Key entry of special characters.  One thing that becomes apparent is that there might be some characters or symbols missing from the default GTK+ code in Gnome.   Unfortunately, this is in compiled code and cannot be changed.  One option is to use Compose Key sequences for most special character entries and Unicode character entry for the occasional odd symbol.  However, if that “odd symbol” is one you intend to use often, you might wish you had a Compose Key sequence for it.   This can be accomplished, at a small price.

Situation, say you are an electronics enthusiast and have a need to type the Ohms symbol, Ω, quite often.  This symbol is not in the default GTK+ Compose Key sequences, and there is no way to add them easily into that source.   An option is to use the <Shft><Ctrl><u>03A9 Unicode method entry to get the Ohms symbol.  Sure, this works fine, but could be tedious if done on a regular basis.  What we need is a way to get this into a nice, intuitive, Compose Key sequence.  The solution is to take advantage of the fact that there is an alternate source for the Compose Key definition table and that this can be modified to add in missing symbols that you may need to use often.   This is the .XCompose file, which I will show here how to create and edit.

The method we will use is to override the default Gnome method with the orignal Xwindow method, which is also available on your system, but must be configured and activated.  It is called the Xwindow Input Method (XIM).  The system must be told to use this method instead by setting the GTK_IM_MODULE environment variable.   This is done with the following command from the shell prompt:

export GTK_IM_MODULE="xim"

For this environment variable setting to be automatically set every time you log into the system, add this line to the .gnomerc or .Xsession file in your home directory.  If these files do not exist, then create one (.gnomerc) by entering the following text in any text editor and saving the file as .gnomerc (do not neglect to include the leading dot!):

#!/bin/bash
export GTK_IM_MODULE=”xim”

Next, you want your own copy of the XIM Compose Key file to have and modify to your own liking.   We do this by copying a system copy of the file to our home directory and giving it the name .XCompose (this file name is CASE SENSITIVE!):

cp /usr/share/X11/locale/en_US.UTF-8/Compose ~/.XCompose

Finally, you will want to edit your .XCompose file to add in the symbols and keybindings  you are interested in.   For instance, here are the lines I added to bind the Unicode 03A9 for the Ohms symbol to <Multi_key> (AltGR in my case, whatever you have set as your Compose Key in your case) <o><m> (get it?) and <m><o>, also some other symbols I find handy.

<Multi_key> <o> <m>                   : “Ω”   U03A9 # OHM SYMBOL
<Multi_key> <p> <i>                    : “π”   U03C0 # PI SYMBOL
<Multi_key> <d> <t>                    : “Δ”   U0394 # DELTA SYMBOL

Is there a downside to overriding the default Gnome GTK+ Compose Key tables?  Yes, there is.  You loose the <Shft><Ctrl><u> keybinding to be able to do Unicode entry anywhere in the Gnome interface.  However, if your aim is to exclusively use Compose Key sequences and to update your data table to include any missing ones you might need, then it is not a bad trade off.

Finally, a tip on editing the .XCompose file.  Just how do you enter a represenation of the missing symbol into the file if you have already activated XIM which disables the <Shft><Ctrl><u> Unicode entry method?  Edit the file in an editor such as Vi that has its own Unicode entry method or use the Gnome “Character Map” utility to get a copy of the symbol into an editor that does not have a method of its own.   In Vi (or Vim), go into text insert mode and type <Ctrl><v><u>+unicode to enter Unicode symbols.

Once you have set the environment variable and created your file, log out and then back in to activate everything and you are all set to have a Compose Key system that you can customize to suit your own needs.

Much of this information was extracted from the following source and should be referred to for further information on the subject:
https://help.ubuntu.com/community/ComposeKey

HOWTO – Ubuntu special characters

In Ubuntu, if you want to type any Unicode character, do so my holding down Shift+Ctrl+U then the unicode for the needed character.  Shift+Ctrl+U gives you an underlined u and you type the code and hit <enter>.  Works in every application I have tried.

example:

Shift+Ctrl+U 00f4 results in ô
Shift+Ctrl+U 00e1 results in á

Of course, you have to know the Unicodes.  This chart will help  http://www.alanwood.net/demos/ansi.html

Also, you can use the COMPOSE KEY!

Addition information on configuring a compose key sequence and its use can be found here:  https://help.ubuntu.com/community/ComposeKey

I defined my compose key to be the Right-Alt key on Ubuntu 10.04 like this:

System>Preferences>Keyboard>Layouts>Options>Compose key position>Right Alt

Good list of compose key combinations to get all the weird, odd and desperately needed characters you want:  http://www.seedwiki.com/wiki/takomapark/compose2

Wikipedia entry on Compose key:  http://en.wikipedia.org/wiki/Compose_key

Another blogger’s nice short write up on using compose keys:  http://sivers.org/compose-key

Finally, for Windows users who would like to have Unix/Linux style compose key functionality this program works well and is free:  AllChars

Ubuntu, when things go badly – Synaptic HOWTO

This is good information for anyone who is going to be managing an Ubuntu system.

https://help.ubuntu.com/community/SynapticHowto

also good documentation on using the shell interface for Apt

https://help.ubuntu.com/community/AptGet/Howto

I had a 9.10 to 10.04 upgrade break due to an internet failure during the process.   The following is from the SynapticHowto.  The upgrade was so broken that it was leaving me at a shell prompt to login, the Gnome desktop was not loading automatically and the Update Manager would not finish the upgrade.  I did the following and it saved my upgrade and got everything working properly.

Broken Upgrade or Installation

  • What to do if an installation process fails and you find it is no longer possible to install or remove packages:
  • Open a Terminal and type the following commands, pressing the Return or Enter key after each (you may have to type in your password):
     sudo dpkg --configure -a
     sudo apt-get install -f

a neat trick via Ghostscript

I have found a neat trick.  Not original, found it here:  http://www.sls.psi.ch/controls/help/howto/tips_n_tricks.html#PostScript

PostScript and PDF

  • To concatenate PostScript or PDF files into a single PDF file:

    gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \
    -sOutputFile=<outfile> <infile> <infile> …

  • To concatenate PostScript or PDF files into a single PostScript file:

    gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite \
    -sOutputFile=<outfile> <infile> <infile> …

  • This trick used in combination with the fact that in Ubuntu you can print not only to a printer, but also to either a postscript or PDF file directly, means that if a book is presented in html on the web, say with each chapter being an individual HTML page, you can easily print each of these to a file and then use the trick to concatenate the ps or pdf files together to reassemble the entire book.  For instance, I am doing that with this book that is online:  http://www.gigamonkeys.com/book/

    I do not know how many other books that I have run across on the web that were HTML like this and I wanted to reassemble them for a good print out.  This is a way to do it.

    By the way, “gs” is the command line program for Ghostscript, which should be already installed on your Ubuntu system by default.  If you install Ghostscript on a Window system, the same trick should work there too so long as you print the HTML to a PDF printer driver.  Ghostscript can be downloaded from here:  http://pages.cs.wisc.edu/~ghost/

    Oh, yes, this is also cool…:  http://pages.cs.wisc.edu/~ghost/redmon/index.htm

    Why Desktop Linux (still) Sucks…

    AND WHAT WE CAN DO TO FIX IT!

    This is not a slam against Linux.  It is all about making our favourite OS more viable and available to more people.

    Ubuntu 10.04 LTS is released

    The new Unbuntu, 10.04 LTS, has been released. It is great!
    Go get Ubuntu 10.04.
    A good review from another blogger: Ubuntu 10.04 – Perfect

    The Magic SysRq key

    The Magic SysRq key!   If you use a GNU/Linux OS, discover what the SysRq key on your keyboard can do for you.  http://en.wikipedia.org/wiki/Magic_SysRq_key

    A beautiful day!

    What a beautiful day!   My wife and I went on a date today to Clark Gardens Botanical Park.   The gardens are located outside of Mineral Wells, TX which is about an hour from where we live.   We packed some fixings for sandwiches and a nice Muscat Canelli wine from Sister Creek Vineyards, one of our favorite wines.   The flowers were gorgeous and very fragrant.  The gardens exhibit a large variety of plant life, particularly flowers such as roses, iris, poppies, etc.  There is also a local contingent geese, guinea flow, swans, ducks, and peacocks.   As a bonus, if you are a fan of model trains, there is a brilliant set of G-scale model trains running in a section of the garden.  I highly recommend anyone take some time to visit this wonderful place.  Pack a lunch, take a loved one, and enjoy a great day out in the outdoors and the beauty of nature!

    A great quote!

    “In my many years I have come to a conclusion that one useless man is a shame, two is a law firm, and three or more is a congress.” – John Adams

    Liberty or Death!

    Liberty or Death!

    Protected: Not the New Deal, Square Deal, or the Fair Deal – it is the…

    This post is password protected. To view it please enter your password below:


    John Boehner final words…

    House Minority Leader, John Boehner, delivers final opposition just prior to the disastrous health care bill vote in the House of Representatives on 03/21/2010.  I am so proud of him.  Among TRUE PATRIOTS, it may be remembered in the tradition of Patrick Henry’s “Give Me Liberty, or Give Me Death” speech.

    —————————————–

    It is in vain, sir, to extenuate the matter. Gentlemen may cry, “Peace! Peace!” — but there is no peace. The war is actually begun! The next gale that sweeps from the north will bring to our ears the clash of resounding arms! Our brethren are already in the field! Why stand we here idle? What is it that gentlemen wish? What would they have? Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery? Forbid it, Almighty God! I know not what course others may take; but as for me, give me liberty, or give me death!

    Patrick Henry – March 23, 1775