I occasionally print out really long articles for bedtime reading. If I print directly from the browser, I end up with a TON of pages. So usually what I do is copy the text to Word, shrink the margins down to the minimum (except I go 0.6” top margin to allow room for stapling), convert to two columns with a line and 0.2” between them, and change all the text to Times New Roman 8pt. It ends up looking something like this (from this SI Andre Agassi article I’m looking forward to):

I recorded a macro and mapped it to a toolbar button so I can do it in one click. Here’s the resulting code, if you want to use it:

Sub SaveInk()
  WordBasic.PageSetupMargins Tab:=0, PaperSize:=0, TopMargin:="0.6", _
    BottomMargin:="0.25", LeftMargin:="0.25", RightMargin:="0.25", Gutter:= _
    "0", PageWidth:="8.5", PageHeight:="11", Orientation:=0, FirstPage:=0, _
    OtherPages:=0, VertAlign:=0, ApplyPropsTo:=4, FacingPages:=0, _
    HeaderDistance:="0.5", FooterDistance:="0.5", SectionStart:=2, _
    OddAndEvenPages:=0, DifferentFirstPage:=0, Endnotes:=0, LineNum:=0, _
    CountBy:=0, TwoOnOne:=0, GutterPosition:=0, LayoutMode:=0, DocFontName:= _
    "", FirstPageOnLeft:=0, SectionType:=1, FolioPrint:=0, ReverseFolio:=0, _
    FolioPages:=1
  If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
    ActiveWindow.Panes(2).Close
  End If
  If ActiveWindow.ActivePane.View.Type <> wdPrintView Then
    ActiveWindow.ActivePane.View.Type = wdPrintView
  End If
  With ActiveDocument.PageSetup.TextColumns
    .SetCount NumColumns:=2
    .EvenlySpaced = True
    .LineBetween = True
    .Width = InchesToPoints(3.9)
    .Spacing = InchesToPoints(0.2)
  End With
  Selection.WholeStory
  With Selection.ParagraphFormat
    .LeftIndent = InchesToPoints(0)
    .RightIndent = InchesToPoints(0)
    .SpaceBefore = 0
    .SpaceBeforeAuto = False
    .SpaceAfter = 6
    .SpaceAfterAuto = False
    .LineSpacingRule = wdLineSpaceSingle
    .Alignment = wdAlignParagraphLeft
    .WidowControl = True
    .KeepWithNext = False
    .KeepTogether = False
    .PageBreakBefore = False
    .NoLineNumber = False
    .Hyphenation = True
    .FirstLineIndent = InchesToPoints(0)
    .CharacterUnitLeftIndent = 0
    .CharacterUnitRightIndent = 0
    .CharacterUnitFirstLineIndent = 0
    .LineUnitBefore = 0
    .LineUnitAfter = 0
    .MirrorIndents = False
    .TextboxTightWrap = wdTightNone
  End With
  Selection.Font.Name = "Times New Roman"
  Selection.Font.Size = 8
End Sub
11/03/09 @ 02:17 PM

I wanted to do something with Twitter, so hatched plovr. It scans Twitter looking for people who need help, and helps you help them (you can reply via the plovr Twitter account, without belonging to Twitter yourself, or you can click through to Twitter and lend a hand as yourself).

If you have a minute, check it out, maybe help a stranger while you’re there!

03/16/09 @ 03:25 PM

I’ve only tried the Readability bookmarklet on a couple NYTimes and New Yorker articles, but it works flawlessly so far. A keeper. (via kottke)

03/03/09 @ 03:56 PM

Interesting profile in The New Yorker on Jerry Baber, an Appalachian gunsmith who wants the military to adopt his robotic soldiers. The technology is made possible by his recoil-less automatic shotgun, which allows the robots to fire without having their aim disrupted:

Until recently, Baber’s reputation as a firearms craftsman was known only to a few dozen gun-trade insiders. Then, a few years ago, he started producing, from start to finish, his own weapon: a fully automatic shotgun called the AA-12. The AA-12 has the power of a twelve-gauge shotgun but none of its bruising recoil. Recoil is a problem with any shotgun; a typical single-shot twelve-gauge will, as Baber puts it, “just rattle your damn teeth when it goes off.” A gun’s kick occurs when gas from ignited gunpowder propels the shell out of a gun barrel, creating an equal and opposite force that pushes the gun’s firing bolt backward. That force eventually gets transferred to the shooters shoulder, and the pop of the recoil also sends the barrel upward. Trying to fire an automatic version of a twelve-gauge shotgun would be like holding a fire hose with one hand.

By contrast, you can fire an AA-12—which shoots five shotgun shells per second—with one hand and hold a mug of coffee in the other without spilling it. Made almost entirely of aircraft-grade stainless steel, the gun can fire thousands of rounds without cleaning. Baber spent a dozen years, and upward of a million and a half dollars of his own money, perfecting the gun. He believes that the AA-12 is the most deadly close-range weapon ever created.

Here’s a YouTube demo reel. I thought the one-hand claim might be an exaggeration, but I guess not.

02/20/09 @ 01:32 PM

This couldn’t be much cooler, Josh Silver has come up with an approach to mass-produce glasses for the poor in developing nations, no optician required. Genius.

01/02/09 @ 02:03 PM

I'll feel a bit silly when this doesn't work, but I gotta try it sometime anyway: bag 'o water frightens away flies.

06/19/08 @ 10:41 PM

How do you synchronize five metronomes? Why, with a board and two soda cans, of course!

05/12/08 @ 10:41 PM

Loved Johnny Lee's "Wii Remote hacks" demo on TED. Led to his TED mini-bio, and then his original YouTube video, Low-Cost Multi-touch Whiteboard using the Wiimote. Hey, I just realized he's the $14 Steadycam guy! Good brain on him.

04/11/08 @ 08:41 PM

Awhile back I tried kludging together a glute-ham developer. The experiment was a failure, but I didn't realize how much of a failure until buying a real GHD. Night and day, even buying the cheapest one I could find, this Yukon GHD. It's quite nice for the price. The only problem I had was with the footplates, which are too small and too far away to fully engage. Here is my fix:

The pieces are made of 3/4" plywood scraps, and the carriage bolts go on either side of the footplate (so you don't have to drill through it). There are washers in all the obvious places, but also between the front and back plywood pieces that butt up against the edges of the footplate, preventing side-to-side motion. These are perhaps unnecessary, as you can really clamp these on pretty tight.

This modification makes a HUGE difference in the feel of the machine. The increased surface area accommodates my size 12.5 feet nicely, and the added thickness is great too, locking my feet in much better. I can use the GHD much more effectively now than before. I can't imagining owning one of these machines and NOT making this fix.

08/16/07 @ 11:25 AM

I recently discovered that four quarter-inch (1/4") neodymium disc magnets ("rare earth" magnets) will not only fit nicely inside the body of a Bic pen, but they are strong enough to hold both the pen and a shopping list to my refrigerator:

fridge pen

Perfect! The list and the pen will always be right where I want them. And I can just use scrap paper for lists instead of buying ridiculous magnetic notepads. I had disc magnets on hand, but I bet a cylinder magnet would be a great choice as well. You might have to trim a bit off the ink sleeve to make room for the magnet in the barrel, but as I mentioned on my Earth Pen post, this has never caused me any leaks, so trim away.

03/19/07 @ 09:39 AM

In the tradition of posting my AutoHotKey hacks (Universal AutoCorrect with AutoHotKey and Wikipedia and Making the INSERT Key Useful Instead of Annoying), here's a new one that lets you easily convert text you select in any application to upper (CTRL-SHIFT-plus) or lower (CTRL-SHIFT-minus) case:

; Convert Selection to Lower Case
^+-::
bak = %clipboard%
Send, ^c
StringLower, clipboard, clipboard
Send, ^v
clipboard = %bak%
return

; Convert Selection to Upper Case
^+=::
bak = %clipboard%
Send, ^c
StringUpper, clipboard, clipboard
Send, ^v
clipboard = %bak%
return

See either of my previous posts for more detailed information on what AutoHotKey is and how to get it fired up.

01/19/07 @ 03:03 PM

When you have a movie in your queue that is also for sale, Netflix links to it. While I don't object to this in principle, the manner in which they go about it his very distracting. Here's a fix, until they come up with something more unobtrusive (like a tiny dollar sign icon next to the title):

Should do the trick, unless Netflix changes the CSS definitions out from under me.

P.S. You might also like my script for queue reordering.

01/09/07 @ 03:57 PM

If you are the sort of person that uses keyboard shortcut, you probably know that F3 is commonly used as the shortcut for "Find Next". And if you know that, you probably use that command a lot. And you probably still hit F3 in Microsoft Word expecting it to work, only to be disappointed. Despite making that mistake thousands of times.

Or maybe it's just me.

Anyway, here's a quick AutoHotkey script for making F3 work the way you'd expect in Word (it remaps F3 to MS's shortcut for Find Next, SHIFT+F4):

#IfWinActive ahk_class OpusApp ; only in Word
F3::+F4
#IfWinActive ; reset

I could have just remapped the keys in Word itself, but this way I can carry this behavior with me via the AHK scripts I keep on my USB key (and I keep my scripts in sync from my desktop machine to my USB key with Unison, which rocks).

12/02/06 @ 11:36 PM

If you've ever wished you could deselect a radio button this hack is for you. Here's the way radio buttons usually behave:

See how once you select one, there's no way to get back to a state where no radio buttons are selected? Well, here's how to fix that:

11/29/06 @ 12:00 AM

I wanted to be able to easily count up my Netflix returns (630 over the past 5+ years), so whipped up a quick solution. Here's what you do:

11/22/06 @ 12:07 AM

A buddy of mine didn't like the way Word decided which folder he needed when opening documents:

This one has always bothered me. Again, I'm writing along, and I need to open another Word file. I have a thousand folders within folders, because I have notes and papers going back years, organized by time and within that by the course I've taught, the research project, etc. At this level my organization is actually good, I can find things when I want them very quickly.

The folder I want, most frequently, is the same one within which I'm currently writing. For example, I'm working on lecture notes for tomorrow, and I need to check the syllabus in the current course.

But when I hit CTRL + O, of course, it takes me way back up to this high level, to "AlecDox," which is how I renamed whatever uber-macro folder the machine gave me initially. Then I have to open the current semester folder, the current course folder, then the doc I want. Wasted steps. Sometimes, it goes to whatever folder I Opened most recently. But *every time* it restarts, sleeps, or auto-logs me off, which of course it does all the time, it takes me back to the big high AlecDox folder.

Can I tell my computer to respond to every Open command by opening the folder within which I'm currently working -- that is, within which the currently-open document, if there is one, resides?

This is what I ended up having him do to make Word behave this way. Give it a go if you want the same behavior:

  1. Open a Word doc.
  2. Go to "Tools" ⇒ "Macro" ⇒ "Macros..."
  3. Under "Macro name", type:
    FileOpen
  4. Click Create.
  5. Some code representing the current FileOpen behavior will appear in a code editor. Select all of it and delete it. Replace it with this (largely stolen from a guy named Larry):
    Sub FileOpen()
    
    On Error GoTo ErrorHandler
    
    If ActiveDocument.Path <> "" Then
       ChangeTo = ActiveDocument.Path
       ChangeFileOpenDirectory (ChangeTo)
       SendKeys "+{TAB}"
    End If
    
    Application.Dialogs(wdDialogFileOpen).Show
    
    Exit Sub ' Exit to avoid handler.
    ErrorHandler: ' Error-handling routine.
    
    Application.Dialogs(wdDialogFileOpen).Show
    
    End Sub
  6. Close the code editor.

Seems to do the trick! And it turns out I prefer this behavior as well, so set up my own copy of Word to work this way.

11/17/06 @ 09:45 AM

Another quick AutoHotKey script:

#v:: ; Win-V hotkey
clipboard := clipboard
Send, ^v
return

This converts whatever's on the clipboard to plain text (no formatting) and then pastes. I use this all the time when copying some text from a web page to Word because I often don't want the formatting to tag along. I chose Win-V because Ctrl-V is the normal paste shortcut.

Interesting side effect: if you copy a file or folder in Explorer and then use Win-V to paste it, it's path is pasted as text. Also handy.

UPDATE: ruddym contributed this version, which is almost certainly better reliable. Mine hadn't given me any trouble, but his looks more robust, and I've been using it for months. Thanks ruddym!

#v::
Clip0 = %ClipBoardAll%
ClipBoard = %ClipBoard% ; Convert to text
Send ^v ; For best compatibility: SendPlay
Sleep 50 ; Don't change clipboard while it is pasted! (Sleep > 0)
ClipBoard = %Clip0% ; Restore original ClipBoard
VarSetCapacity(Clip0, 0) ; Free memory
Return
10/27/06 @ 01:59 PM

Y'know how sometimes you go to hit the Home key and you accidentally catch the Insert key too, but you don't realize it until you've typed over something, because suddenly you are in "overstrike" mode rather than "insert" mode? I wanted to kill the Insert key, and immediately thought of my favorite utility, AutoHotKey (upon which I built that Wikipedia AutoCorrect thing). But instead of just killing the Insert key, I thought perhaps I could make it do something useful. So I took the "append" script from here and just changed it to fire whenever I hit Insert, like so:

Insert::
bak = %clipboard%
Send, ^c
clipboard = %bak%`r`n%clipboard%
return

This has two effects:

  1. Hitting Insert no longer puts me in "overstrike" mode.
  2. If I have text selected, it is appended to the clipboard (unlike CTRL+C, which replaces whatever is on the clipboard with your new selection).

UPDATE: I added another script, this one for CTRL-Insert. As a web programmer, I'm sometimes faced with a specific repetitive task of going through text and putting stuff around little chunks of text. In this case, I had a bunch of questions on a page that needed to be emphasized, so I needed to wrap them in STRONG tags. Each question was different, so I couldn't do a find/replace with regular expressions. What I wanted was to select the question, hit CTRL-Insert, and have it automatically put the tags around whatever I had selected. My solution is kinda convoluted, and nobody will care about it but me, but here goes anyway. First, the script:

^Insert::
bak = %clipboard%
Send, ^c
StringReplace, clipboard, bak, @@, %clipboard%
Send, ^v
clipboard = %bak%
return

Then, once you have it installed, the steps:

  1. First, type out your "template". You just need to put @@ wherever you want the selected text to be inserted. For my example, the template looks like this:
    <STRONG> @@ <STRONG>
  2. Next, select your template text and copy it to the clipboard.
  3. You're all set. Select a question (or whatever you want between STRONG tags) and hit CTRL-Insert. Continue selecting and CTRL-Inserting as needed. So in my example, if you select "my dog has fleas" and CTRL-Insert it, it is instantly replaced with
    <STRONG> my dog has fleas <STRONG>

Your IDE might do something like this already, but I like that AHK makes this functionality available in any application. And I can bring it along on my USB key, making me more at home on foreign machines.

10/23/06 @ 11:50 PM

[ Be sure to read the final update at the end of this post! ]

I've really been enjoying AutoHotkey (AHK), a tool that lets you execute macros, text expansion, custom keyboard shortcuts, etc. My favorite feature is the text expansion, where it watches what you type and when it recognizes an abbreviation you've defined it will expand it automatically, no matter which application you're typing in. So "ttyl" could be automatically expanded to "talk to you later" in an e-mail, instant message, Word document, browser forms, etc. Very handy.

Anyway, you've probably noticed Word has an "AutoCorrect" feature where it corrects common misspellings on the fly. For example, "teh" gets instantly corrected to "the". I was thinking it would be great to use AHK to get that same functionality in any application. I had slowly been adding my own most common typos to an AHK script, and it worked great, but then I thought it would be nice to have a more comprehensive list. Enter Wikipedia, and its lists of common misspellings! I grabbed the machine-readable download, parsed it, commented out the ambiguous entries (see comments in the script), added in my own person gotchas, and loaded it. Cross-application AutoCorrect! Here's a zip file containing the script if you want to give it a try:

  • wikipedia_autocorrect.zip See UPDATE 5 below for the script's new home.

You'll need AHK installed, of course. And note the "Hotstring" feature this technique uses is only available on Windows NT/2000/XP or higher.

UPDATE: Adam at Lifehacker linked this up, thanks! He notes I could have compiled this for non-AHK users. I probably should have, but didn't because I just assumed folks would want to add their own common misspellings. But if you just want to run it without installing AHK, Adam has made a compiled version available via his post. Very cool.

UPDATE 2: I updated this script to include Tara Gibb's enhancement (see below) and a few more of my own common misspellings. The enhancement lets you highlight a misspelling and hit WIN+H to easily add the correction to the script (so it's self-updating). A nice way to flesh the script out with your own spelling foibles (another reason to not run the compiled version provided at Lifehacker, as this feature won't work there).

UPDATE 3: Quite excitingly, Chris Mallett, the author of AutoHotKey, found this script and linked it up! He also made a couple improvements, which are now reflected in the script available above. I tossed in a few more of my personal common misspellings while I was at it.

UPDATE 4: Reader Shane submitted a pile of Word AutoCorrect words for inclusion, so I folded those in (after removing duplicates). Thanks Shane! While I was at it I also folded in a bunch more of my personal misspellings. In all, there's probably around 700 more entries in the latest version.

UPDATE 5: Chris Mallet and the AutoHotKey community have taken this script under their wing. Specifically, Dewi Morgan has made some terrific improvements, cleaned up the code, and added many more words. I think that version should be considered the definitive version, and is available at the AHK Other Downloads page. Very cool!

08/03/06 @ 01:57 PM

I really liked my Fisher Space Pen, the key attribute being its size: it fit comfortably in the side pocket of my jeans. After I lost it, I really liked my second Fisher Space Pen too. After I lost that one, I thought for a minute before buying another. Did I really care about anything but the size? Had I even once used my Space Pen to write underwater or in the cold vacuum of space? No. To the tune of $15 a pop, did I want to go $45 in the hole to Fisher? No. So here's what I did:

Got myself a dozen of these Bic pens (something like $0.35 each):

Took one apart and cut off around two-thirds of the barrel (cut through the "d" in the "med USA" part of the label):

Lined up the ink sleeve with the remaining part of the barrel to see how much I'd have to remove, then snipped it off (even cutting through the inky part, I've never had any leakage - YMMV):

Assembled, it's as small as a Space Pen, and not as smooth and shiny, so it's less likely to slide out of your pocket (and if it does, who cares?):

With the cap on the back it's long enough to hold comfortably, even with big hands:

I've gone through four or five of these, and have never had a leak. Even though you lose some ink when you trim 'em down, they still last for a good long time.

True, the next time I'm on a top secret mission and my nemesis tries to kill me slowly in a vacuum chamber and my only hope is to write a note on a piece of paper and hold it up to the plexiglass telling the buxum heroine how to turn off the machine I'll be completely hosed, but I'm willing to take my chances.

06/01/06 @ 11:26 PM

Y'know how when you want to paste an Amazon URL to somebody, it's really long, it wraps, and it's ugly? Well, it's possible to greatly shorten such URLs. For example:

http://www.amazon.com/gp/product/B000E6EK3S/
ref=amb_center-9_160116401_1/104-0734288-7167943?
n=130

...becomes:

http://amazon.com/o/ASIN/B000E6EK3S

I had a bookmarklet for doing this conversion with a single click, but in the ultimate display of laziness, I wanted to do it automatically instead. Hence my new "Short Amazon Permalinks" Greasemonkey script. What it does is this: when viewing an Amazon product, it converts the big title text to a link which points to the shortened version of the URL. Now all you have to do is right-click, "Copy Link Location", and you have the shortened version ready for pasting.

To use it you'll have to be running Firefox and Greasemonkey. If you are and want to give it a whirl, click the link to the script above and install it, then visit a worthy Amazon page. It should be all linkified.

02/20/06 @ 12:27 AM

Dean Kamen, who really should be known for so much more than the Segway, unveils his latest:

Kamen sank several million dollars and more than three years of his life into developing a portable water filter that will purify through distillation any type of tainted liquids poured into it. His 200-employee DEKA Research and Development has produced about 30 of the prototypes. About the size of a dorm-room fridge, they use about 2 percent of the energy required by traditional distillation systems.

"Any type of tainted liquids" includes urine, which is apparently the demonstration liquid of choice.

01/25/06 @ 08:25 AM

The bookmarklet I was using for shortening Amazon URLs recently broke, so I found this nice one at Distilled Illusions and modified it to handle what is apparently a new URL format at Amazon. Here is my version of the bookmarklet. To use, bookmark that link (putting it in your toolbar makes it very convenient), navigate to an Amazon product page, then click the bookmarklet (bookmark). A popup will appear with the shortened Amazon link for your copying/pasting pleasure. And here's the code, formatted a bit for readability:

javascript:
var index=location.href.indexOf('/-/');
if(index==-1){
  index=location.href.indexOf('gp/product');
  if(index==-1){
    var asin=location.href.substring(index+5,index+15);
  }else{
    var asin=location.href.substring(index+11,index+21);
  }
}else{
  var asin=location.href.substring(index+3,index+13);
}
var u='http://'+location.hostname+'/o/ASIN/'+asin;
w=window.open('','','height=3,width=400');
w.document.write('%3Ca href=%22'+u+'%22%3E'+u+'%3C/a%3E');
w.document.close();

I also modified the output slightly so that the shortened URL is a link. In Firefox you can thus right-click, "Copy Link Location" to get the URL onto the clipboard.

10/25/05 @ 12:11 PM

Hi

I'm Jim Biancolo, and this is stuff I found interesting that I thought you might like too. Here are some of my favorites if you want to start there. Mostly I link to other people, but some stuff is mine, like:

Spillover

I am loving Instapaper, and use if to sock away stuff to read. Here are a bunch of articles I read recently and liked.

Archives

Subscribe

Here are the RSS feeds for this site, my Instapaper reading list, and my Instapaper favorites.

"RSS? What in the blazes are you carryin' on about, boy?"

If you prefer, enter your address below to get updates via e-mail. Powered by Feed My Inbox (they have a good privacy policy).