Who Sold You Out? – How to Figure out Who Leaked Your Email Address

When setting up accounts or handing out my email address, I use a catchall on a different domain I have, giving a different mailbox to each sender.  So, for instance if I give my address to Bob’s Cream Puffs to get a coupon, it might be bobscreampuffs@mydomain.com.  You can do this with a normal (non-catch-all) address too, by using the plus sign after the mailbox name.  In my case, that would be something like alex+bobscreampuffs@mydomain.com.  That trick even works with GMail and a number of other web services.

Continue reading “Who Sold You Out? – How to Figure out Who Leaked Your Email Address”

Saving Floats, Longs, and Ints to EEPROM in Arduino Using Unions

The Arduino EEPROM library provides the read() and write() functions for accessing the EEPROM memory for storing and recalling values that will persist if the device is restarted or its operation interrupted.  Unfortunately, these functions only allow accessing one byte at a time.  The float, double (the same as float on most Arduinos), and long data types are all four bytes long, and the int data type is two bytes long, the same length as the word data type.  Some trickery is needed to easily store and recall these values.

Continue reading “Saving Floats, Longs, and Ints to EEPROM in Arduino Using Unions”

Patching pyserial to Fix Serial Baud Rate Limitations in Linux

I ran into an interesting issue when trying to connect to a new printer with my Linux laptop.  The printer firmware was set up for 250000 baud and for some reason I couldn’t connect to it.  After a little searching, I found that this was a known issue in pyserial with newer kernels and there’s a quick fix.

Continue reading “Patching pyserial to Fix Serial Baud Rate Limitations in Linux”

Concatenating PDF Files on Linux

I’ve had this socked away for a while, but was just reminded of it.  This is a method of concatenating PDF files.  This takes multiple PDF files as inputs and outputs a single PDF file made up of those.  This is particularly useful when a document needs to include sub-documents, such as a report that includes preexisting data sheets, or a proposal needs to include financial statements, resumes, or other supporting documents.

Continue reading “Concatenating PDF Files on Linux”

Protecting Email Addresses From SPAM Harvesters With a CAPTCHA

If you manage any websites, you should be aware of the risk of publishing an email address publicly.  SPAM bots spider the web looking for these email addresses, adding them to lists that are sold and used to inundate you with glorious offers of organ enlargement and cheap watches.  Today I encountered the most robust solution that I’ve yet to see.

Continue reading “Protecting Email Addresses From SPAM Harvesters With a CAPTCHA”

Fixing Magnet Links in Chromium on Linux

I just discovered that magnet links didn’t work out of the box in Chromium on CrunchBang Linux.

I tried a couple of other fixes found in other places and figured I’d repeat the one that worked here in case it can be helpful to someone.

The solution that worked came from here, although it turned out that only this one command was necessary.

xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet

Arduino, 3D Printer, and USB Serial Device Permissions on Linux

When I first got started with Arduino under Linux, I quickly discovered that I had issues connecting to the Arduino to program it or talk to it via serial.  I later found the same issue when I started working with 3D Printers, when trying to connect the host application to the printer to operate it.

This was clearly a permissions problem, as all of these cases (and other USB serial devices) worked just fine when run as root (not a good practice, don’t do this).  This is just a quick post showing how to set yourself up with the permissions needed to use these devices as a normal user.

Continue reading “Arduino, 3D Printer, and USB Serial Device Permissions on Linux”

Setting up the HP LaserJet Professional M1212nf MFP Printer on Linux (CrunchBang Waldorf)

I’ve got an HP LaserJet Professional M1212nf MFP printer at the office, and most of the machines in the office are running CrunchBang Waldorf.  The stock version of hplip does not include the drivers for this printer.

Continue reading “Setting up the HP LaserJet Professional M1212nf MFP Printer on Linux (CrunchBang Waldorf)”

Consistent Experience Across Multiple Computers on CrunchBang Linux

This is just a quickie, nothing too in-depth here.  I just thought I’d mention that I’ve migrated all of my computers from Ubuntu to CrunchBang.  I enjoy the lighter and more responsive interface, as well as the lower system overhead.  It fits my workflow and interaction style well.

I don’t need a high degree of customization to be happy, I just want my customizations to conky and the openbox menu to be consistent between my various computers.

Continue reading “Consistent Experience Across Multiple Computers on CrunchBang Linux”

Assigning Static Device Names for USB Serial Devices (Including Arduinos)

I posted this on G+, but figured I’d post here as well with a little more depth.
I was working on a processing sketch that needs to communicate with several USB Serial devices (mostly Arduinos).  To make my life easier I wanted to find a way to make sure I could identify each one every time by the location of the port in the filesystem, which meant a static name for each.  This setup will give you the same name for the device in /dev every time you connect it.  This is particularly helpful if you have lots of devices to manage or want to hard-code a path to the port into a script or application (but only one that will only be running on your local machine).