Subscribe to feed:
Or get posts via email:









Add to Technorati Favorites



January 15, 2008

Stop Your Loose-leaf Junk Mail

Often my tiny mailbox is jammed with loose-leaf advertising addressed to "RESIDENT," obscuring or crumpling important mail.

SpecialOffers.jpg

Today I noticed a phone number for inquiries, then called the number and found that they accept requests to be removed from their mailing list!

If you live in the Bay Area and dislike this kind of generic, paper-intensive marketing, do what I did: Call the San Francisco Chronicle at 415.777.7979 and leave a message containing your address exactly as it appears on the mailing.


UPDATE:
Thanks to a tip from Kip, I got rid of redplum, an additional source of coupons and junk mail. The publisher (Valassis / Advo) removed my address when I called their friendly consumer support line: 888-241-6760 (8:30am-5:00pm EST). You can also fill out a removal form online.

UPDATE:
Valpak sent envelopes of coupons addressed to a "Smart shopper at" my address, so I called the number on the envelope (1.800.676.6878). There was no human, but I was able to get these removal instructions from their automated system:

"Mail your request along with your blue Valpak envelope to:
Valpak Direct Marketing Systems
8605 Largo Lakes Drive
Largo, FL 33773
Your name will remain on our suppression list for two years."
(I pressed 1 for english, 3 for corporate, 1 for mailings, 2 for removal)

October 17, 2007

How to Type International Characters on iPhone

I needed to add a contact from Västerås, Sweden to my iPhone. Not knowing how to enter international characters, I sufficed to type "Vasteras", which is good for a Swedish chuckle if pronounced out loud.

How to Enter International Characters on the iPhone:

Using the iPhone "keyboard", just hold down the letter key you wish to modify . A popup menu will appear showing the possible modified symbols. For example, if you want "å", hold down the "a" key and choose "å" from the popup menu.

This was apparently an undocumented feature in the latest iPhone software release, version 1.1.1.


June 13, 2007

Connecting to MySQL with Crystal Reports XI

CrystalReports is not too into the open source scene, consequently it doesn't work with MySQL out of the box. But you can easily get the Crystal Reports Designer to work against a MySQL database by using JDBC.

  1. Download the MySQL Connector J jar file. That download should contain a jar file that looks something like: mysql-connector-java-3.1.14-bin.jar

  2. Add the location of your newly downloaded jar file to the Classpath, as defined in CrystalReports CRConfig.xml file. On a Windows machine, the config file will be located somewhere like:
    C:\Program Files\Business Objects\Common\3.5\java\CRConfig.xml

  3. Once you have altered your CRConfig.xml, close and reopen Crystal Reports.
  4. From the menu: File -> New -> Standard Report
  5. In the "Available Data Sources" list, double-click to expand "Create New Connection"
  6. Double-click to expand "JDBC (JNDI)"
  7. Double-click "Make New Connection"
  8. Connection URL: "jdbc:mysql://db.example.com/dbname" (Use your own database host name and db name).
  9. Database Classname: "com.mysql.jdbc.Driver"
  10. Click "Next"
  11. Enter a database user/password combination when prompted.
  12. You should now be able to inspect the tables/columns in the database to begin reporting.


If the connection is not allowed, make sure your granted access settings in MySQL allow you to connect from wherever you are. Try connecting using the vanilla MySQL command line client.

June 9, 2007

Avoid Lock-in: How to Get Your Own Email Address

These days, we use our email addresses as a form of online identity. You don't want your digital identity to be owned by an ISP, DSL, or cable company whose service you might wish to cancel someday. Your email address goes away when you cancel, with forwarding usually not provided. I know people that are hopelessly stuck paying AOL or Comcast every month because of such lock-in. Silly as it may sound, it can be a big problem if you end up having a hundred online accounts tied to that email address.

The free email companies (gmail, yahoo, hotmail) are only somewhat better, in that they are at least not charging you for the lock-in experience. But the lock-in principle is the same. With every online account you tie to that email address, you lock-in even tighter to that address.

Here is how to own your own identity: Buy your own domain name, and pay for professional email hosting. Neither of those services is locked to your email address. Both are seamlessly replaceable if you find a better deal. Your email address remains your own.

Additional benefits are that you get to choose a personal or professional sounding email address, and you will never need to change your email address ever again.


Here's what I did:


  1. Register your domain name (about $9/yr) at GoDaddy. (more on GoDaddy below)

  2. Sign up for "Individual Email at Your Domain" (about $11/mo) from LuxSci. Using this link gives you 5% off. (more on LuxSci below).

  3. Once you are logged into GoDaddy, choose "Domains->My Domain Names" from the menus.

    email-lockin-2.png

  4. Now in the "Domain Control Center" select your domain.

  5. Click on "Total DNS Control and MX Records".

    email-lockin-1.png

  6. In the "MX (Mail Exchange)" section, add three new MX Records (delete any pre-existing MX Records). Your MX records should correspond to the instructions in the setup message you get from LuxSci, and may look something like this:

     Priority Host Goes To
     15       @    yourdomain.com.inbound15.mxlogic.net
     25       @    yourdomain.com.inbound25.mxlogicmx.net
     35       @    yourdomain.com.inbound35.mxlogic.net 
    

    email-lockin-3.png

  7. You are done! Test your new email, both sending and receiving. Be aware that it can take anywhere from 0-3 days for your new DNS changes to fully propagate through the net (this is a normal property of how DNS works).



Notes on GoDaddy:

I have been using godaddy for the past two years, and have no affiliation with the company. It is mass-consumer oriented, so you have to be careful to avoid buying many of the unnecessary extras they are pushing. If you can live with that, you will find a good value and full-featured domain management tools. I have also dealt with their customer service twice, and without any issue.

Here is what you can expect (based on my experience):


  • ~$9.20 for a .com domain, plus ~$7 more for private registration, which I added.
  • Complete control of your DNS (in this case we need the MX control)
  • No hassles transferring domains in or out. (I've tested both).


Notes on LuxSci:

I have been using LuxSci for two years. I provide a coupon code (BUNGEE) for a referral program that gives you a 5% discount and me a 5% commission. However, be sure that if I ever stop using LuxSci as my email hosting provider, I will immediately stop recommending them in this way.


Note on Both GoDaddy and LuxSci: Each of the two companies will actually provide both domain registration and email. Not surprisingly, each of them only does one service best, so I can't recommend either as a one-stop-shop. Below are details of how each company offers the corresponding service.

GoDaddy does offer an inexpensive email service, but since GoDaddy's email does not include IMAP, I chose LuxSci instead. IMAP is the full-featured mail synchronization protocol that lets me keep desktop, and mobile, and web mail readers, all in sync. POP is a half-baked protocol, but often offered because its much cheaper to provide that IMAP. Life is too short to waste time with POP.

LuxSci offers a (resold) domain registration service. From what I can see, it is more expensive and less full-featured than registering at GoDaddy. In theory, you could save a step and register your domain at Luxsci, but I have not used their service and cannot make that recommendation. Share your experience if you do.

Nonsense Award Winner

Nonsense is somewhat like randomness, in that it's very hard for a human to create perfect nonsense without inadvertently injecting little bits of sense. Once in a great while, however, a carefully crafted instance of utter nonsense reaches such levels of quality that special recognition is merited:


go-back-auto-revert-buffer.gif

"Warning! The GoBack Auto-Revert buffer is now 50% full. Once this reaches 100%, the computer will automatically revert to the Auto-Revert time."

February 14, 2007

Java Injection in Jasper Reports

I needed to create a JasperReports variable of type NumberFormat to format dollars without cents.

Try to stay calm while reading this.

JasperReports allows the creation of variables that can be evaluated at report run time. The variables can be of any Java object type. You can set the value of the variable to be the result of any Java expression that evaluates to the same type as the object variable (which cannot be void).

I created a JasperReports variable named “nfc” for (number format currency) and set it up to be of type java.text.NumberFormat. Then I set its value to be NumberFormat.getCurrencyInstance()

java-injection-1.png

It’s convenient to use in fields throughout my report:

$V{nfc}.format($F{assets})

That worked, but to my chagrin, getCurrencyInstance() returns a formatter that includes two decimal places for cents. In free-form Java of course, we’d just call setMaximumFractionDigits(0) on the formatter, and be rid of the wretched pennies. But in JasperReports we can only evaluate Java “expressions.” Because setMaxiumFractionDigits returns void, it can’t be used as an expression.

Luckily I figured out a way to inject arbitrary Java into the JasperReports expression evaluator. You can do this in iReport or straight in the jrxml file.

Here’s how:

1. Create a variable: (View->Variables->New)
2. Type in the type: java.text.NumberFormat
3. Set the value to:

java-injection-2.png

NumberFormat.getCurrencyInstance()
);
System.out.println( "Hello World! Java Injection!" );
((NumberFormat)value).setMaximumFractionDigits(0

There are two things to notice:

A. The fun begins with ); That is what JasperReports expression evaluator sticks at the end of your expression when it compiles. After you provide your own ); to complete that expression evaluation, you can add any Java statements you like. Just remember when you’re done, leave off the trailing ); because the expression evaluator will tack that onto the end.

B. “value” is the name of the temporary variable that will contain the result of your expression. In order to call setMaximumFractionDigits on my NumberFormat object, I first have to cast “value” to NumberFormat.

Here’s how that variable looks in the JasperReports xml (jrxml) file:

<variable name="nfc" class="java.text.NumberFormat" resetType="Report" calculation="Nothing">
    <variableExpression> <![CDATA[
        NumberFormat.getCurrencyInstance()
        );
        System.out.println( "Hello World! Java Injection!" );
        ((NumberFormat)value).setMaximumFractionDigits(0
    ]]>
    </variableExpression>
</variable>


Note: JasperReports also allows the use of Java ‘Scriptlets’ that would solve this problem, but I didn’t want to use that feature because it would force other users of my report to get the pre-compiled external class file into their classpath, yadda blah blah ClassNotFoundException blah half-the-day-wasted yadda yadda… My point is that I wanted the JasperReports XML to stand on its own three feet, shielding everyone else from external dependencies.


UPDATE: I have now learned that JasperReports has formatting built in and while this Java injection technique is "cool", it is not necessary for number formatting. Here's what I eventually figured out: In iReport, right click on the number field, choose Properties, click on the "Text Field" tab, and then enter #,##0.0 in the Pattern box. This example will round to one decimal digit. You can use any pattern supported by java.text.NumberFormat.


January 1, 2007

Apple's New iPod Pea

Get ready, because the smallest iPod ever is slated to be released in Q1 of 2007.

Apple has finally managed to reduce their popular MP3 player to a size that barely accommodates its own headphone jack.

Steve Jobs is scheduled to appear on stage in which he will undoubtedly pull a handful of iPod peas from his pocket.

Technology and Specs

Solid-state engineers at Apple achieved a design breakthrough. The miracle is a new kind of spherical flash-RAM chip, storing 1 gigabyte or up to 240 songs.

Nearly 1/1000th the size of the original iPod, the new iPod pea is an eighth of a cubic centimeter and weighs in at just over 0.2 grams. There are no clips, displays, or buttons. The pea runs in a "permashuffle" mode.

Songs are loaded via bluetooth, and the pea charges its battery as long as it is within three feet of the PeaPod. Charging is made possible by a long-ridiculed (until-now) power broadcasting technique originally devised by Serb-American inventor Nikola Tesla.

Like other iPods, the iPod pea has no servicable parts.

Marketing

Typical of Apple, technological innovation goes hand-in-hand with marketing innovation. The iPod Pea will be sold in pods of five. "We felt every family member should have their own pea, plus a few extra just in case."

Marketers believe that the new iPod pea will overtake its predecessors as the number one contest-giveaway item. According to a leading PR firm, "giving away free nanos and shuffles is no longer effective because everyone already has one."

California-based pastry chef Didier Fournier became the first consumer to get his hands on an iPod pea, happily snatching up a test-group unit that leaked onto eBay. As a promotion for his bakery, Fournier intends to hide iPod peas in "winning pastries," giving his customers "one more thrilling reason to consume [his] delectables."

Apple admits it originally named the product "iPea", but changed the name after test-group participants were unable to "wipe that smirk off their faces."

Customizations

Custom engraving will be available for the iPod pea, though the message is limited to a single character in 6pt Helvetica.

While most iFans will have to remain content with white peas, collectors are excited by the news that a very-limited-edition "black-eyed" version will come pre-loaded with the hit single "Let's Get it Started (Spike Mix)." Apple, always with a carrot to dangle, also promises to deliver green and other pastel-colored iPod peas just in time for the Easter shopping season.

Disclaimers

The iPod pea is intended only for consumers aged 11 years and older. The National Association for Safe Toy Evaluation (N.A.S.T.E.) warns against products with small parts that can be swallowed, aspirated, or inserted into nasal cavities.

This story is fictitious. Please don't sue me. I heart Apple

December 27, 2006

An Inconvenient Distribution: A Web 2.0 Geek’s Letter to Al Gore

I just sent a hand-written letter to Al Gore:

----------------
Dear Sir,

Your lifelong environmental work is to be applauded. Everyone should see the vital message you convey so effectively in “An Inconvenient Truth.”

Unfortunately, theaters are unable to deliver your ideas to the necessary scale. Even with a version available on amazon.com, downloaders must still pay $15. Any fee is an economic inconvenience that guarantees a limited distribution.

You must reach everyone, in a way only “free” can.

I humbly urge you to give it away.

Social connectors like myself will carry your message to saturation. If your film were freely available on the Internet, I would personally share it with my network of hundreds.

There are many profitable ways to make the film freely available. By widening exposure, you will be increasing the pool of DVD buyers. Also, increased merchandising revenues and donations will supplement DVD sales. Perhaps you only give away a low-resolution version.

Please enable this epidemic of ecological awareness. All you need to do is give your film away.

Sincerely,
Michael Eakes
----------------


It is important to note that the filmmakers have implemented several grass-roots distribution techniques, but they are not enough.

If the warnings in the film are correct, they are too important to be delayed by traditional and inefficient distribution methods. The current fee and copy protection are inappropriate. The film should be free (as in beer).

By utilizing existing peer-to-peer technology, like BitTorrent, Mr. Gore won't even have to shoulder the hosting burden.

I appreciate your constructive comments on this matter.


UPDATE1: I realize that content sometimes becomes available on YouTube or via BitTorrent without the permission of the copyright owner. However, I am advocating for the owners to give it away legally, and then to publicize, promote, and encourage the distribution of the free release. I have offered to volunteer any technical assistance Mr. Gore might need in order to achieve this.

December 18, 2006

Tag Cloud Name Badge

Friday's holiday event at hatfactory had a great crowd. The coworking space tends to attract a really great mix of positive energy geeks, as well as alternative living, transportation, and media hackers.

I was delighted to run into my favorite think-tank couple, Linda and Erick Von Schweber. I was even more delighted to see that Erick was donning a tag-cloud name badge illustrating his various interests "for the month".

Apparently Erick is not alone, he pointed me to "Daniel Steinbock, a PhD student at Stanford, who independently began producing and wearing a tag cloud tag, or cloud tag for short."

I think its a brilliant idea to help people connect a little faster at gatherings. Now if only we could have our digital meta-data broadcast locally over bluetooth. Then we could get little software filters that help us automatically match interests with other nearby people. The system could apply a small voltage to give us a tingly feeling whenever someone interesting comes near... heyyyyy... wait a minute...

December 12, 2006

Doggequins

I couldn't help but notice these dog mannequins in a San Francisco shop window. Are these anthropomorphic figures well established? Did I already miss their tipping point? I immediately consulted "the google" to find out.

My conclusion, despite the abundance of dog mannequins and fashion to adorn them, is that the life-size but lifeless animals are only at the beginning of their frenetic, memetic life-cycle. I take comfort knowing this becuase no-one beat me to google-coining the word "doggequins" Did I just google-coin the verb "google-coin"?

In any case, I'm certainly going to buy the domain names before the great doggequin epidemic happens.