Dec 082008
 

For anyone who is interested in Python programming, there is a monthly Houston Python Meet-up tomorrow evening. Here are the details:

Date/Time: Tuesday, December 9, 2008 at 7:00 PM Location: The Sauté Bistro, 2303 Richmond Avenue, Houston, TX 77098 (713-522-2106)

I will be giving a presentation about using Python with Amazon Web Services.

Here are various URLs from the presentation:

Main AWS Site.

API Tools

API Docs

CloudFront Docs

boto

Keynote presentation

Presentation as a PDF

Full Featured Python-S3 program

Twenty Rules for Amazon Cloud Security

Sep 202008
 

The WebKit folks have been busy. I just read this fascinating post on the Surfin’ Safari blog.

SquirrelFish Extreme (SFX) is the newest Javascript Engine from the WebKit folks. And it is fast. I downloaded version r36685 on my MacBook Pro and ran the SunSpider JavaScript Benchmark. The SFX engine was 3.69 times faster than the engine in Safari 3.1.2!

TEST                   COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:           3.69x as fast     3527.6ms +/- 1.6%   956.6ms +/- 1.8%     significant

=============================================================================

  3d:                  2.92x as fast      451.8ms +/- 5.0%   154.6ms +/- 4.5%     significant
    cube:              3.11x as fast      164.8ms +/- 11.9%    53.0ms +/- 7.0%     significant
    morph:             2.57x as fast      149.2ms +/- 6.2%    58.0ms +/- 5.0%     significant
    raytrace:          3.16x as fast      137.8ms +/- 4.7%    43.6ms +/- 12.5%     significant

  access:              4.90x as fast      546.4ms +/- 2.1%   111.4ms +/- 8.6%     significant
    binary-trees:      4.20x as fast       76.4ms +/- 7.4%    18.2ms +/- 28.3%     significant
    fannkuch:          10.5x as fast      235.4ms +/- 2.8%    22.4ms +/- 14.5%     significant
    nbody:             2.97x as fast      174.4ms +/- 2.6%    58.8ms +/- 5.7%     significant
    nsieve:            5.02x as fast       60.2ms +/- 10.5%    12.0ms +/- 12.7%     significant

  bitops:              7.01x as fast      457.0ms +/- 3.3%    65.2ms +/- 5.9%     significant
    3bit-bits-in-byte: 5.10x as fast       68.4ms +/- 6.5%    13.4ms +/- 14.1%     significant
    bits-in-byte:      6.02x as fast       98.8ms +/- 4.4%    16.4ms +/- 15.7%     significant
    bitwise-and:       17.2x as fast      171.6ms +/- 5.6%    10.0ms +/- 24.9%     significant
    nsieve-bits:       4.65x as fast      118.2ms +/- 0.9%    25.4ms +/- 8.2%     significant

  controlflow:         5.68x as fast       86.4ms +/- 4.4%    15.2ms +/- 24.8%     significant
    recursive:         5.68x as fast       86.4ms +/- 4.4%    15.2ms +/- 24.8%     significant

  crypto:              4.29x as fast      249.4ms +/- 3.6%    58.2ms +/- 6.7%     significant
    aes:               4.78x as fast       79.4ms +/- 2.6%    16.6ms +/- 29.8%     significant
    md5:               4.18x as fast       85.2ms +/- 9.8%    20.4ms +/- 11.1%     significant
    sha1:              4.00x as fast       84.8ms +/- 3.9%    21.2ms +/- 15.2%     significant

  date:                3.47x as fast      309.8ms +/- 1.0%    89.4ms +/- 5.3%     significant
    format-tofte:      3.52x as fast      142.8ms +/- 3.2%    40.6ms +/- 6.0%     significant
    format-xparb:      3.42x as fast      167.0ms +/- 1.7%    48.8ms +/- 6.8%     significant

  math:                3.76x as fast      499.8ms +/- 0.6%   133.0ms +/- 5.8%     significant
    cordic:            4.59x as fast      191.0ms +/- 1.0%    41.6ms +/- 13.8%     significant
    partial-sums:      3.34x as fast      212.8ms +/- 1.5%    63.8ms +/- 5.6%     significant
    spectral-norm:     3.48x as fast       96.0ms +/- 3.3%    27.6ms +/- 17.6%     significant

  regexp:              5.07x as fast      211.8ms +/- 1.6%    41.8ms +/- 5.7%     significant
    dna:               5.07x as fast      211.8ms +/- 1.6%    41.8ms +/- 5.7%     significant

  string:              2.49x as fast      715.2ms +/- 2.6%   287.8ms +/- 2.1%     significant
    base64:            4.99x as fast      109.8ms +/- 5.9%    22.0ms +/- 12.6%     significant
    fasta:             3.16x as fast      183.4ms +/- 1.7%    58.0ms +/- 7.4%     significant
    tagcloud:          1.54x as fast      143.6ms +/- 1.8%    93.4ms +/- 3.1%     significant
    unpack-code:       2.23x as fast      140.8ms +/- 1.5%    63.2ms +/- 2.6%     significant
    validate-input:    2.69x as fast      137.6ms +/- 11.2%    51.2ms +/- 7.2%     significant
Sep 192008
 

The great TextMate text editor has a bundle called “TextMate” that lets you install an “Edit in TextMate…” item to the Edit menu of all Mac applications that support alternate input managers. This is really handy.

For applications like Safari and Mail, etc., this works perfectly. However Firefox (my favorite browser) doesn’t recognize these extra input managers (yet). So what do you do?

Not to worry! There is a free FireFox extension called It’s all Text!. Just install it and, in the preferences, set it up as follows:

It's All Text (Preferences)

Notice the Hot Key setting? This is Command-CTRL-E, which is the ”same” hot key used to invoke the ”Edit in TextMate” function for applications that support the alternate input managers.

This gives identical functionality to Firefox as to what you would get in Safari, et al.

Sep 122008
 

As I write this it is 19:50 on Friday, 2008-09-12.

We are already getting very prominent gusts of wind. The eye of hurricane Ike hasn’t even made landfall yet. I think we are in for a very interesting evening. During the last 20 minutes before writing this post, I was sitting on the front porch of the house (facing South). During that period of time I heard three transformers blow. I would not be surprised to lose power any time now.

–g

Sep 102008
 

Just posted a complete implementation here.

This is the basic help output:

$ ./bulk_email -h
Usage: bulk_email [options] 'Subject line of the email message in quotes'
        
    Reads a list of email address from standard input.
    Sends emails to all of them.
    
    NOTE:   If you use this program to send SPAM you will be generating
            much negative Karma for yourself, so please DO NOT SPAM!!!
        
    These are the configuration values that are required in the config
    file:
    
    FROM='from-email-address'
    SMTP_ACCT='smtp-account'
    SMTP_PASS='smtp-password'    
    
    Here are some optional configuration parameters.  They may be overridden
    in the config file.  Note that by default we are using gmail!
    
    SMTP_HOST='smtp-host'   # default = smtp.gmail.com
    SMTP_PORT=smtp-port     # default = 587
    SMTP_USE_TLS=True|False # default = True

Options:
  --version         show program's version number and exit
  -h, --help        show this help message and exit
  -x, --extra-help  If specified, print out EXTRA help and exit
  -v, --verbose     If specified, print out information while processing.
  --config=CONFIG   The file that contains configuration info for the program.
                    By default, the program will look for a configuration file
                    in /home/gordy/.bulk_email.rc
  --html=HTML       The file that contains the HTML-formatted message
                    (required)
  --plain=PLAIN     The file that contains the plain-text message (optional,
                    but recommended)
  -e, --embed       If specified, scan the html copy for any <img /> tags.
                    Fetch the referenced image.  Encode and embed it and
                    replace the src attribute of the <img /> with a cid:imagex
                    reference.

You can get extended output (which I won’t post here due to length) by using the -x option like bulk_email -x.

For the love of all that is holy and good, please DON’T SPAM!!!