The Very Hungry PDF Reader
There is something familiar about Adobe Acrobat 9’s logo . . . Oh yeah! That’s it!

Comparison of Adobe Acrobat 9 artwork and The Very Hungry Caterpillar.
There is something familiar about Adobe Acrobat 9’s logo . . . Oh yeah! That’s it!

Comparison of Adobe Acrobat 9 artwork and The Very Hungry Caterpillar.
I love this subnet mask calculator

The IP Subnet Mask Calculator enables subnet network calculations using network class, IP address, subnet mask, subnet bits, mask bits, maximum required IP subnets and maximum required hosts per subnet.

Details:
Have you ever wanted a larger compose box for gMail? especially when using g-mail to reply to a conversation?
I give them credit, most times when composing a new message or using it in full-screen mode, it does well. But if you’re like me, about 80% of your conversations are replies. And that is, after all, what is great about g-mail, right? The awesome threading capabilities.
So why doesn’t g-mail support a resizeable compose box? You are stuck with a fixed size, of about 260 px, even in the Chrome browser!!! A browser that is know to let you resize text boxes by default!
Well, I don’t know the answers to these questions, but they are frustrating, so I’ve written an extension for Chrome (or Chromium) which allows you to specify how big you want that box to be, and then it automatically resizes it (it make take a few seconds after you hit reply to fully grow).
Download the extension here:
It has an options page, which you can access by going to settings (wrench icon) and then extensions. I have also added in auto-update for this extension. I’m really quite pleased with it and wanted to share.
Let me know what you think.
Having trouble? Didn’t know that Chrome allows extensions? You probably need to upgrade to the latest version. This is tested and working for the 4.x versions, so get the latest chrome now, and after downloading, you need to enable extensions.
Alternatively, if you want a one-click extension install, I suggest using Chromium (which is the development version of Chrome) because it has a lot more power and features and extensions are enabled by default.
See my posts on Downloading the latest Chromium and Chromium is not Chrome.
Also, for other great extensions, check out Chrome Extensions.



In this example, I control 1 device (on X10 circuit A, device 1). I initally turn the device off. When the RFID tag I am looking for is read, I turn the lights on. Next time that tag is read, I turn the lights off. I acknowledge various changes by providing feedback to the user via blinking LEDs and serial comms to the PC. I use the free SSH/telnet client PuTTY, found here.
Now, for the code…
——————————————–
#include x10.h
#include x10constants.h
// RFID reader variables
#define TAG_LEN 12
char tag[12] = {‘0′, ‘F’, ‘0′, ‘3′, ‘0′, ‘3′, ‘7′, ‘1′, ‘8′, ‘5′};
char code[12];
int bytesread = 0;
int ledPin = 13; // Connect LED to pin 13
int rfidPin = 2; // RFID enable pin connected to digital pin 2
int val=0;
// X10 Control unit variables
int zcPin = 9;
int dataPin = 8;
int repeat = 1;
boolean LightsOn = false;
// Declare and instance of an X10 control module
x10 myHouse = x10(zcPin, dataPin); // 9 is 0xing pin; 8 is data pin
void setup()
{
// Begin serial comms with the PC
Serial.begin(2400); // RFID reader SOUT pin connected to Serial RX pin at 2400bps
// X10 Module
myHouse.write(A, ALL_UNITS_OFF, repeat);
pinMode(zcPin,INPUT);
pinMode(dataPin,OUTPUT);
// RFID
pinMode(rfidPin,OUTPUT); // Set digital pin 2 as OUTPUT to connect it to the RFID /ENABLE pin
pinMode(ledPin,OUTPUT); // Set ledPin to output
digitalWrite(rfidPin, LOW); // Activate the RFID reader
blink(); // All variables are set, notify user ready to operate
Serial.println(“Setup complete, all lights OFF.”);
}
void loop()
{
if(Serial.available() > 0)
{ // if data available from reader
if((val = Serial.read()) == 10)
{ // check for header
bytesread = 0;
while(bytesread<10)
{ // read 10 digit code
if( Serial.available() > 0)
{
val = Serial.read();
if((val == 10)||(val == 13))
{ // if header or stop bytes before the 10 digit reading
break; // stop reading
}
code[bytesread] = val; // add the digit
bytesread++; // ready to read next digit
}
}
if(bytesread >= 10)
{ // if 10 digit read is complete
Serial.flush(); // clear “ghost” readings of the same RFID
if(strcmp(code, tag) == 0) // Does the tag read match the one we are looking for
{
Serial.print(“Tag matches: “); // Yes
Serial.println(code);
if (LightsOn == false) // If lights are off, turn them on.
{
blink();
myHouse.write(A, UNIT_1, repeat);
myHouse.write(A, ON, repeat);
LightsOn = true;
Serial.println(“Lights ON.”);
}
else // Lights are on, so turn them off
{
blink();
myHouse.write(A, UNIT_1, repeat);
myHouse.write(A, OFF, repeat);
LightsOn = false;
Serial.println(“Lights OFF.”);
}
digitalWrite(rfidPin, HIGH); // Pause the reader after a read cycle to reduce multiple
delay(3000); // readings from the same tag.
Serial.flush();
digitalWrite(rfidPin, LOW);
}
else // Tag read is not the one we’re looking for.
{
Serial.print(code);
Serial.println(” does not match”);
digitalWrite(rfidPin, HIGH); // Flush accidental multiple readings
delay(3000);
Serial.flush();
digitalWrite(rfidPin, LOW);
}
}
bytesread = 0; // clear system and prepare for next cycle
delay(500); // wait for a second
}
}
}
/***************************
* Function: blink
* Blink the LED to ack actions
****************************/
void blink()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
}
This is an update to this issue:
Photoshop fails to paste my print screen from the clipboard. I’ve tested pasting in mspaint and it works fine. I’ve also tried creating a new document from clipboard but that won’t work either. What’s wrong and how do I fix it?
This is documented in stackoverflow, but the case has been closed and I wanted to give an update for Photoshop CS4
You can add a registry dword called “AlwaysImportClipboard” with a value of “1″ at this location: [HKEY_CURRENT_USER\Software\Adobe\Photoshop\11.0]
Remember, version 10.0 is CS3, 11.0 is CS4
Or, you can download these registry files which accomplish the same thing:
For Photoshop CS3 (fix print screen cs3 . reg)
For Photoshop CS4 (fix print screen cs4 . reg)
Update: Hey, sometimes photoshop has a hiccup and it just won’t let you paste. Something with the clipboard gets screwy. Just restart photoshop when that happens. Even this registry fix won’t solve that bug.
Photoshop actually has to “import” the clipboard to its own format – you may notice it actually doing this when you cursor changes to an hour glass (or “busy” or “busy background”) when you switch to photoshop after copying an image to the clipboard from another application. Sometimes there will be a slight delay while this import is happening before you can use / paste the image.
Also Note: You may need to go to Image->mode->RGB or CMYK if it is set on “indexed color,” especially after opening something that has indexing enabled (like a .gif) before you can paste. Also, if you only have a background layer and it is set as “background” try either creating a new layer and pasting into that or holding “alt” (option on mac) and double clicking the background layer in the layers panel to convert it to a layer (or right click it and convert it to a layer)
Hopefully one of these things will help you paste your image.
WinRAR has always been great. However, I find myself constantly renaming archives after using the right-click “add to archive” context menu item. I find myself prepending the files with the date created. I love streamlining things, so I decided to write WinRAR tech support a message. They prompty replied and informed me about some some things I didn’t realize were available!
Basically, you can create “profiles” for the archives you create.
Here are the steps RarLabs sent me:
- press “Add” button to open archiving dialog;
- enable “Generate archive name by mask” option on “Backup” page of
archiving dialog;
- select an appropriate mask for this option, insert + in the beginning
of mask to place it in the beginning of archive name;
- return to “General” page, press “Profiles…”, select “Save current
settings to a new profile”;
- specify a profile name and set “Add to context menu” option.
Also you may set “Immediate execution” option if you do not want to
see the archiving dialog every time after selecting this profile.
After that you shall see your new profile in context menu.
Note: The requires WinRar 3.8 or newer
This has become increasingly difficult to find online. It looks like the Chromium blog talks more about it without giving many clear options about how to download or install chromium.
Well, here’s my small contribution. You can find the latest files here:
http://build.chromium.org/buildbot/continuous/win/LATEST/
I highly recommend the mini_installer.exe for Windows XP or Vista.
Here are links to the bleeding edge builds of chrome for mac or chrome for linux
Also, Chromium is MUCH BETTER for installing and managing extensions ( see chromeextensions.org ) than Chrome. You can install with just one click! And you get a nifty “extensions” panel under the “tools” menu.

Here’s how!
If you have Chrome installed, uninstall it, or this program (below) will use Chrome by default instead of Chromium (Chromium is not Chrome)
Make sure this directory structure exists: C:\Documents and Settings\User\Local Settings\Application Data\Google\Chrome (replace User with your username)
Don’t create an Application folder inside the chrome folder – the next steps will do that.
Get the Sysinternals Suite (or at least the junction program for creating softlinks)
Run this command:
junction “C:\Documents and Settings\User\Local Settings\Application Data\Google\Chrome\Application” “C:\Documents and Settings\User\Local Settings\Application Data\Chromium\Application”
(Replace User with your username)
Download ChromeMailer and go through setup
Launch ChromeMailer and choose your options.
Trouble? ChromeMailer (as of 8/09) looks for Chrome in it’s default path – your profile\Google\Chrome\Application
You can either install chromium into that directory, or install it into the proper directory and create a softlink (junction) so the folders mirror each other. If you delete something in one folder it will be deleted in the other one, too. Look up softlinks on wikipedia for more info.
If you have recent nVidia software, you can enable the nView desktop manager, and then access the nView Desktop manager’s HotKeys tab.
There you will find an option to assign a keyboard shortcut to a profile.

I’ve also been trying to figure out a way to adjust the brightness and contrast with a quick, command line or shortcut method. Here’s as far as I’ve gotten.