blog
[ 06:13 PM on December 31, 2008 ]
Check out The Lorax as told by meta-refreshes or create your own.
I did some marvelous detective work today. When I got back from a meeting around 2pm I noticed my white shag rub was pushed to the side, my window was open, and my bathroom floor was surprisingly clean. Now, I had had my window open last night, but was sure to close it, but I was rushing to leave, so I thought I could have left it open. The placement of the rug could've also been due to rushing, but what about the bathroom floor. And, oh yeah, I left out that the hot water wasn't working this morning; later finding out due to a blown pump in the basement. Anyway, I figured that when checking the hot water in the faucet, after the shower's wasn't working, I had left it on, because no water was flowing. Then once it was flowing it flooded my bathroom and the super had come in and cleaned it up; and I was right! I wasn't right about it flooding two other apartments' bathrooms, though. Sorry 3B and 3C :(.
[ 11:26 AM on December 31, 2008 ]
[ 06:22 AM on December 31, 2008 ]
and click the map link does this...
It's supposed to be 'bitterly' cold tonight for new year's... good.
[ 11:42 AM on December 30, 2008 ]
[ 05:06 PM on December 29, 2008 ]
jeffpalm.
Next, here's my first stab at adding geo-tagging information to floto, though I haven't committed it yet to SVN. I was going to write an iphone app to send them along, but (1) realized that it already embedded EXIF meta-information into the image, and (2) despite having horns and a pointy tail, from what I can gather, the iphone doesn't give you access to the camera if you play by the rules.
Anyway, so I made a little light geo-tagging wrapper in PHP that will do just-in-time geotagging for the time being, and then spit out some Javascript to go along with some more Javascript that creates the map. All in all it's pretty straight forward. The file displaying the map looks something like this:
<&php
define('MAP_KEY','ABQIAAAAs0zM...
define('SCALE',12);
include 'map-content.php';
&>
Ugh... still lots of problems with it.
[ 12:10 PM on December 29, 2008 ]
[ 08:14 AM on December 29, 2008 ]
source here as a new part of the project. I've re-organized it a little to separate the upload and cron stuff from the java stuff. The way this works is that your start it up, and are prompted with a
count down splash screen.
Next, you get to preview the image and decide whether to upload it or not.
Finally, you choose the fields to send, the URL if the path to the new form.php script.
This is more like the way floto started, because I would do HTTP posts from a J2ME app on a crappy Nokia phone, then once I migrated to the phone with horns, I decided to upload the photo as a mime attachment in an email message, and sending the meta data in the subject and body. So this is really more like the first version, except it's not on a phone. Granted I'll probably never use it again, because I hate taking pictures of myself, but it was fun little project while drinking coffee and listening to the Breaking News in the background.
[ 06:19 AM on December 29, 2008 ]
[ 05:18 PM on December 28, 2008 ]
- They had fans!
- The seats were really padded and comfortable
- The the lights kept on going off for some reason intermittently, at which time I could do inappropriate things to the other passengers without them knowing who done it
[ 09:47 PM on December 26, 2008 ]
[ 08:18 AM on December 25, 2008 ]
I wonder if there is a google alert setting so that you aren't sent 'alerts' for events occurring over a year ago? I guess these things are powered by CNN now...
[ 11:57 AM on December 24, 2008 ]
| MDW | EWR | ORD | JFK | IAH | SFO | CLE | DTW | MCI | CVG | MSP | MEM | XYZ | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MDW | 132 | 132 | 132 | 132 | 132 | ||||||||
| EWR | 175 | 175 | 175 | 175 | 175 | 175 | 175 | 175 | 175 | 175 | |||
| ORD | 102 | 214 | 214 | 102 | 102 | 214 | 214 | 102 | 214 | 102 | 102 | ||
| JFK | 111 | 111 | 111 | 111 | 111 | 111 | 111 | 111 | 111 | ||||
| IAH | |||||||||||||
| SFO | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 | 80 |
I thought there would be some variance in the delay for different airport pairs, but not much. The vertical codes shows the departing airport; the horizontal show the arriving airport. For example, the top/left most cell reads "planes leaving Midway (MDW) arriving in Newark (NWR) are delayed 132 minutes." or "passengers coming from the Chicago area to Jersey are going to be really fucking pissed off when they get off the plane, but at least happy they didn't fly out of O'Hare (ORD)."
[ 07:52 AM on December 24, 2008 ]
[ 07:23 AM on December 23, 2008 ]
![]() |
→ | ![]() |
| ↓ | ||
![]() |
← | ![]() |
| ↓ | ||
![]() |
→ | Done. |
( and yes, the times are off, because I took some screen shots yesterday when I started, then some this morning )
[ 03:56 PM on December 22, 2008 ]
I saw this poster on the train today, and while I see that counseling could be an alternative, I'm still trying to wrap my brain around how pregnancy tests and ultrasounds could be? I'll leave it at that.
It's not even 4pm and already getting dark, although it never was really all that light out today. Today went by fast so far, and I haven't really done all that much. I've eaten some popcorn, then some sushi, then an apple. That just about sums it up. If you've read this far, you should applaud yourself for a grand act of patience.
[ 05:37 AM on December 22, 2008 ]
It's nice a chilly in New York today, a great 16, and it's about time.
Lastly, Hasbro has some new tater offers, and although they have nothing on Darth Tater or Spudtrooper, they're alright. So without further adieu, "Spuda Feet" and "Indiana Jones Taters of the Lost Ark, Idaho Jones Spud"...

[ 03:14 PM on December 21, 2008 ]
% flickrss spudtrooper
The feeds will open in firefox, then you can subscribe with whaterever feed reader firefox defaults to for you. Of course this assumes you're running firefox on a mac (see the faq if you want something more robust).
I've also been doing some meaningful iphone stuff, then stopped and began to wander doing some less-than-meaningful iphone stuff. This came from wanting to play around with an app for a non-itunes digital music store; I chose the lime wire store. I'm pretty sure I figured out a way to make a transaction and download over the phone. Either way, this is what it looks like so far from today...



Eek! I forgot the song price, oh well, I'm gonna attend to the first thing I mentioned I have not yet done today.
[ 12:17 PM on December 20, 2008 ]
% ./firstgoogle potato.com spuds
And it will return the rank and search url for the first hit on potato.com that shows up for the query spuds.
[ 09:28 AM on December 20, 2008 ]
[ 12:45 AM on December 20, 2008 ]
The web site gethuman.com lists instructions on how to reach a real person when calling various customer service and support lines. It has a lot of good information, but isn't easy to navigate with the ibrick, so I thought it would be helpful to be promopted of these instructions right after you type a number.
The code is hosted by Google here:
http://code.google.com/p/gethumandialer/Here are a few screen shots:
On start up.
After dialing a number. Here, I dialed Auto Zone customer support and the apps says that to reach a real person, instead of a phone menu, you should "Press 1; at prompt press 2; at prompt press 0".
[ 05:47 PM on December 18, 2008 ]
Yeah, it's cracked...and let me be the first to say, getting the certificates and keys and profiles worked out to actually run on a phone is REALLY fun. So are root canals!!!
[ 09:47 AM on December 18, 2008 ]
but when it was saved it came out like this
I have no clue what's going on, maybe they have some sort of templating system? I'm f'ing confused.
[ 04:40 PM on December 17, 2008 ]
Not all that useful, but I can sort of think of one. The source is in google code, the page shown is here and the version you see is here -- append a '
?s' to the URL and first part of any file name will be starred out. To run it, check out the code, unzip or untar it, type make limewire and go to the URL above and type the same query you'd type in the client.
[ 02:10 PM on December 17, 2008 ]
And, if you ever can't connect to limewire, put a host file in your preferences directory -- i.e.
~/Library/Preferences/Limewire/gnutella.net on a mac.
[ 12:14 PM on December 17, 2008 ]
[ 02:21 PM on December 16, 2008 ]
And remember, a shoe that doesn't fit, is just a shoe.
[ 10:46 AM on December 15, 2008 ]
It basically grabs the query, grabs your location information following a link, send them to meetup, and then cram them in the DOM. This could work for other sites that either provide a search API or have pages manageable enough to crawl.
[ 04:32 PM on December 14, 2008 ]
[ 06:27 AM on December 14, 2008 ]
NSRange imgStart = [s rangeOfString:@"src=\""];
if (imgStart.location >= 0) {
NSUInteger loc =
imgStart.location + imgStart.length + 1;
NSUInteger len = [s length] - loc - 1;
NSRange imgStop = [s rangeOfString:@"\""
options:NSCaseInsensitiveSearch
range:NSMakeRange(loc,len)];
if (imgStop.location > imgStart.location) {
NSString *src =
[s substringWithRange:
NSMakeRange(imgStart.location + imgStart.length,
imgStop.location - imgStart.location
- imgStart.length)];
}
}
I just want this to look like what I'm saying, which is "extract the
string inside the quotes after the first instance
of src". Ruby says that.
or even betters.scan /src="([^"]+)"/ do |res| src = res[0] end
Geez.src = /src="([^"]+)"/.match(s) ? $1 : nil
[ 08:04 AM on December 13, 2008 ]
GoogleReader class, assuming you are in the same
directory as google_reader.rb or it's on your library
path:
I'm not quite sure what to do with it yet, I was thinking about an offline reader, which would be cool, but I can't seem how to find unread items; I would need that. Also, it would probably be better to have the aggregator on a phone, but I would think doing these things are much less painful in Ruby rather than demon objective C. In the meantime, there's a little test file here. You can use it from the command like the following:require 'google_reader' username = ... password = ... r = GoogleReader.new username,password xml = r.subscription_list ...
% ./google_reader_test name@gmail.com mypassword
<object> <list name="subscriptions"> <object> <string name="id"> user/06674996524717788469/label/drm </string> ...
[ 05:47 AM on December 12, 2008 ]
My level of contempt for the record industry has never been higher.
[ 02:59 AM on December 11, 2008 ]
[ 11:38 AM on December 10, 2008 ]
5.0α
I was told to spread the word on limewire 5.0, so I am, to the 3 people who read this (me and my mom included in that 3).
[ 07:16 AM on December 10, 2008 ]
stringWithContentsOfURL. Nothing huge, and this probably doesn't belong in all immutable data classes, but I think it's a good for strings.
[ 02:16 PM on December 07, 2008 ]
Wow! Uncle Steve has done it this time, they're stretching the day beyond 24 hours! My reservation tomorrow is at 32:30.
[ 08:33 AM on December 07, 2008 ]
fr) and type make; then copy the resulting
directory out to the Notes directory on your
ipod.
[ 07:51 AM on December 05, 2008 ]
[ 02:43 AM on December 05, 2008 ]
[ 12:28 AM on December 03, 2008 ]
[ 08:36 AM on November 02, 2008 ]
-
prototype-classcreates a new class -
prototype-gettercreates a new getter method for the name you enter when prompted. -
prototype-settercreates a new setter method for the name you enter when prompted. -
prototype-getter+settercreates new getter and setter methods for the name you enter when prompted.
[ 07:42 AM on November 02, 2008 ]
~. My point was that if you're not careful in doing
the oh so often rm -f *~ to force the removal of all
files ending with ~, you could accidentally switch the
arguments around to rm -f ~* removing everything in your
home, which wouldn't be good. As a lesser example I just ran across
another form of put in the ftp syntax...The normal synax
of put file send file to a remote
server; another form of which I was not aware until now
was put file1 file2, which
sends file1 to the remove server and renaming it
to file2. A normal interaction for me is to repeatedly
type put file until I'm putting sending more
than one file, in which case I start
with mput file1 file2
... filen to send multiple files. But when I go
from put file1
to put file1 file2 instead
of mput file1 file2 I end up
writing a long-winded post about a dumb, fucking mistake on my part.
[ 06:03 PM on November 01, 2008 ]
The new bloc party is worth a listen...perhaps just that, not sure yet.
[ 05:21 PM on November 01, 2008 ]
[ 12:05 PM on November 01, 2008 ]
and then, click the 'preview' link to get two new panes to allow you to quickly preview the links.
[ 06:13 AM on October 31, 2008 ]
Uh, yeah. I just turned on the TV and a great news program was on.... how great you ask? The lead in was "according to Scum magazine...".
Yeah.
[ 07:25 AM on October 30, 2008 ]
is growl integration for yammer so you
can procrastinate more effectively, since we've been using this
lately. To use it, click the icon and enter your username and
password (yeah, you have to do it everytime). It will poll your
account and show you new messages, such as
To install download and run the installer here: Yammage.pkg.
There seems to be something fishy with it right now, but I don't care at the moment, I'm going for a run.
[ 06:45 AM on October 28, 2008 ]
stdout, and then the options it takes,
etc... Then, it will output or print to STDOUT the code needed for
having a standard command-line app, having verbose, help, and so on
option. Here's a little example interaction, generating a
class Potato, outputting it to potato.rb, taking the
following parameters: file requires an
argument; print takes no arguments.
r3potatoo:ruby jeff$ ./generate Please enter the following infomation or type 'q' to quit... classname> potato outfile or 'stdout' [potato.rb]> option #1 name (blank for none)> file option #1 takes argument [y/N]> y option #1 description> the file to take option #2 name (blank for none)> print option #2 takes argument [y/N]> option #2 description> should we print option #3 name (blank for none)>The output is written to potato.rb, we can now run this file...
r3potatoo:ruby jeff$ ./potato.rb -h Usage: potato.rb <option>? <argument>? where <options> include: -h || --help print this message -v || --verbose use verbose logging statements -f <s> || --file <s> the file to take -p || --print should we print and <arguments> include:And, yes,
generate was generated by itself.I like cherrypeel....
[ 06:34 AM on October 27, 2008 ]
To install drag this link to your toolbar...
passwordOnce you've entered a password into a password
<input> field, click the link and those
inputs with text in them will turn red
indicating the password you entered was converted to a unique one
for that domain; those without text, but password fields, will
turn red.
before
after
Example
You can try it here... note this isn't a password field, so make sure no one is looking over your shoulder!Some more from (test.js)...
asdfljka9asdf78 → IAUkYIsUYgYoWE0 poohead → gQMYoYc poohe@d → IsgAIo_ p0000o0he@d → KQM6swE6Ck_ jpalm → wwsUA palmj → wIUgM mjpal → gYMUA jeffrey-palm → kAwsI(AkUwUA
Notes
The hash created is SHA1-based seeded with the domain host, and ensures the following, since the output has to be a valid password for a particular site:- The output will have the same length as the input
- The output will have the exact same number of non-alphanumeric values as the input, not necssarily in the same position
abc-123 you are saying
that you want "a password of length 7 and 1 symbol".
This seems to work alright.
Here is the source.
Since this is dealing with passwords, I'll say this: The author nor anyone else that wouldn't otherwise see your password will see it resulting from using this, and the author is not responsible for any bad things that you do with this or for bad things that happen to you as a result of using it. No bad things are anticipated, but if a bike-helmet maker can waive any responsibility for head injuries I can do likewise.
[ 08:57 PM on October 26, 2008 ]
- Aksh@y Kum@r, Oct 26, 2008
( kept 'anonymous' to protect the innocent )
[ 08:40 AM on October 26, 2008 ]
There are then links on the dialog to close or view the image fully.
[ 11:35 AM on October 25, 2008 ]
- Your isight
- flickr explorer
- flickr search
Here are the files -- I don't feel like making a DMG or zip, so use the jar.
- Tgz: fakeisight.tar.gz
- Jar: fakeisight.jar
By default you use your web cam and that image will update every minute. But you can change that by going into the preferences or passing arguments on the command line. Using the former method you'll go to the File -> Preferences menu and see a dialog box like this:
Currently the other values for class names are
-
com.jeffpalm.fakeisight.image.FlickrExploreCapture -
com.jeffpalm.fakeisight.image.FlickrSearchCapture:term
When it starts up you'll see a frame with the current, like so:
Notice in the second you pass a search term. In general, when specifying a class of Capture device, you can pass parameters to the constructor by appending strings of the form:
:param-1:param-2...:param-n,
and then param-1...param-n will be passed when we
try to construct one of these things by reflection.
On the command line you can look at the help, here:
Usage: java com.jeffpalm.fakeisight.Main <options>
where options include:
-c <class> || --capture <class> use 'class' as Capture class
-s <int > || --sleep <n> sleep 'n' seconds between changes
-v || --verbose print verbose debugging messages
-h || --help print this message
[ 06:43 AM on October 24, 2008 ]
[ 08:14 AM on October 22, 2008 ]
It's a greasemonkey script, and once you install it, when you're on a page just double click and enter a message and then a message box will appear where you clicked. Then when you're ready you click a menu item to reload the page with a new URL that will show the message boxes when someone has installed the script.
[ 10:23 PM on October 21, 2008 ]
[ 08:14 AM on October 20, 2008 ]
POST) request to that site. For example, if you
were looking at the Hopstop site (as I find myself doing a lot) and
click this link after dragging it to your toolbar
torubyYou would see this,
which is a Ruby class that provides the accessors, enums from
select elements, an initializer,
and a method process taking the text inputs, so that you could automate making
requests to this site now with code like the following, assuming you put this in hopstop.rb:
The original Javascript source is hererequire 'hopstop' html = Hopstop.new.process '123 14th st', '321 41st st'
toruby.jsand compressed (with this) version is here
out.js
[ 10:45 AM on October 18, 2008 ]
copytoclipboard on your
PATH, which you can get here) so you
can write bookmarklets in a normal style, and then test them by
pasting it into the address bar. Here would be an example using it, assuming I'm writing some Javascript in a file called new.js:
$create_bookmarklet -v -o new.js Writing to out.js Wrote new.js -> out.js Copying 976 chars to the clipboard Copied 976 chars to the clipboard Copied to clipboardThen I could simply paste into the address bar, and test it out. You can also do the trick of appending a full script from another machine to the DOM, but this is quicker when you're just playing around.
[ 06:13 AM on October 17, 2008 ]
I guess he just decided to insult himself.
[ 08:30 PM on October 16, 2008 ]
Nartually, there is a big hub at potato, but some of the other hubs are a little surprising: Kiss, Featured content, Toy Story, television, Hasbro...This changes dramatically as you increase the number of total nodes...
| # | 1k | 5k | 10k | 15k | 20k | 25k | 50k |
|---|---|---|---|---|---|---|---|
| 1 | Potato | Joseph Stalin | 12-12 | 12-12 | What links here | What links here | A–Z index |
| 2 | Kiss | Ghengis Khan | Joseph Stalin | What links here | Related changes | Related changes | What links here |
| 3 | Featured content | Current events | New York Yankees | Related changes | 12-12 | Discussion | Discussion |
| 4 | Toy Story | Robert Mugabe | USA | Joseph Stalin | Discussion | 12-12 | Related changes |
| 5 | television | Community portal | quality standards | Discussion | Joseph Stalin | Joseph Stalin | List of academic disciplines |
| 6 | Hasbro | ranks | What links here | New York Yankees | ISBN 0-9658794-0-2 | ISBN 0-9658794-0-2 | Wikipedia:Outline of Roget's Thesaurus |
| 7 | mustache | beard | Rhode Island | USA | New York Yankees | New York Yankees | talk |
| 8 | Disney's California Adventure | Featured content | Ghengis Khan | India | USA | USA | Wikipedia:Template messages/Cleanup |
| 9 | Main page | Mahatma Gandhi | Current events | quality standards | India | India | Featured topics |
| 10 | Contents | Charlie Chaplin | Related changes | sulfur | Ohio | Ohio | 12-12 |
These were all found using these (and some tests): The first abstracts out all the book-keeping, URL resolving, formatting, etc. that I seem to run into whenever I'm trying to create graph-like things using web thingies as the models. The abstraction is that subclasses of
CreateGraph need to supply a way to
extract links that will be searched next. Here is the entire thing:
require 'create_graph'
class WikiGraph < CreateGraph
def initialize
super '/wiki\/[^"]+'
end
end
WikiGraph.new.main ARGV
The argument to the super call is a regular expression
string or an Array of them, and describes the links that we are
interested in following; the super class, CreateGraph
takes care of the rest. There's certainly more here that could go
into the parent class, but I decided to take a run in the early
evening and took off.
[ 04:32 PM on October 16, 2008 ]
[ 05:10 AM on October 16, 2008 ]
-
unarchive takes zero or more
arguments and will unarchive each based on extensions. Currently
it accepts the following: .zip, .tar, .tar.gz, .tgz, .gz, .jar. It also takes two options,
-tto just print what we would do, and-vto pass thevflag totarandjar. e.g.
$ ls
bar.tar baz.tgz bla.tar.gz bug.gz foo.zip jab.jar
$ unarchive -v *
a.txt
b.txt
c.txt
. . .
$ unarchive -t *
tar xf bar.tar
tar xfz baz.tgz
tar xfz bla.tar.gz
gunzip bug.gz
unzip foo.zip
jar xf jab.jar
-
map takes two or more arguments and maps the first parameter (i.e. the command) to the rest of the arguments, e.g.
$ ls *.zip
a.zip b.zip c.zip
$ map "unzip -o" *.zip
Archive: a.zip
extracting: a.txt
extracting: b.txt
extracting: c.txt
. . .
[ 08:30 AM on October 15, 2008 ]
I finally got to use
my itunes/iphone remote
(appropriately named CrapTunes) for a legit reason. I was updating
the iPhone SDK on one crapbook and it wanted me to shut off itunes; I
didn't want to shut it off since saved by the bell had ended I want to
listen to music instead of listening to Breaking News in the
background. My macbook pro was stolen and my powerbook has a bum
display, so has to stay across the room. My headphones could reach to
my powerbook, but I wanted to control it -- hence CrapTunes.
I have to take up the rest of this space so that the little image to right doesn't wrap to the next post; I lack the skills to prevent this in a normal manner. I hear it was 30 degrees around Boulder yesterday, I'm ready for Winter. Alkaline Trio played last night. My back itches.
[ 12:55 AM on October 15, 2008 ]
normal
|
sorted by area
|
sorted by width
|
sorted byheight
|
[ 10:28 AM on October 14, 2008 ]
This is all © lastfm, if they call quits to me grabbing these I'll stop.
[ 09:54 AM on October 14, 2008 ]
[ 03:10 AM on October 14, 2008 ]
The following are the button assignments:
Down a track
Up a track
Pause the current track (doesn't work right now)
Play the current track (doesn't work right now)
Skip the current track
you'll be sent the first time to a browser and presented with a page showing the following
and once you click Yes, allow access you'll be able to continue and notice that you have a new track in your first play list.
[ 10:42 PM on October 12, 2008 ]
Then there is problem of finding something actually meaningful to do with this...
[ 02:24 PM on October 12, 2008 ]
CPU
Memory
Most importantly I had the chance to use this wonderful regular expression and got it right on the first and only try:
^(\w+)\s+(\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)\s+(\d+)\s+(\d+)\s+\??\??\s+(\w+)\s+([\:\w\d]+)\s+(\d+:\d+.\d+)\s+([\:\w\d]+)\s+(\d+:\d+.\d+)\s+(\d+:\d+.\d+)\s+(.*)$
[ 10:52 AM on October 12, 2008 ]
(Why on earth did I do this???)
Whenever you visit usernamecheck.com you'll see check boxes next to all of the sites, select all/none buttons, and a new 'CHECK Selected' button at the top.
When you click the 'CHECK Selected' button, you will only inspect those sites that are selected.
[ 08:08 AM on October 12, 2008 ]
[ 11:36 AM on October 11, 2008 ]
before
after
[ 08:13 AM on October 11, 2008 ]
[ 06:24 PM on October 10, 2008 ]
[ 11:22 AM on October 10, 2008 ]
mailto: link, so you can simply log into your mail on
your phone, click the link, and pretend like you sent it from your
phone -- and you have a life. Example:
$ ./sendlink spudtrooper.org spud@spudtrooper.org greasynuts To> jeff@spudtrooper.org Subject> hey Now type a message and type a single '.' to end. I am NOT at my computer . Sending to spud@spudtrooper.org on spudtrooper.org Done.Then log into your phone and you'll see a message with the following. Click the link.
You can either pass in the hostname, username, and password, or keep them in
~/.sendlink like the following:
user:spud@spudtrooper.org pass:greasynuts host:spudtrooper.org
[ 09:25 AM on October 10, 2008 ]
To use it first start up the real PandoraBoy in your applications and then start this and you can have a small controller instead of using the larger Pandora Boy. There's a shell script in the tar to do both to make it less cumbersome.![]()
The up and down arrows are for voting a song up or down. The pause and play are to pause/play the song. The right arrow is to go to the next song. It's a little smaller and small is good (only in some scenarios). Here is the source:
pandoraboy.tar.gzSince you need the mac classes or your classpath, run it with the
Makefile.
There's more to do, like putting the current song, keeping on top, probably more, but I'm taking advantage of the sun and going running.$ make run javac -g -classpath .:/System/Library/Java PandoraBoy.java java -classpath .:/System/Library/Java PandoraBoy
[ 08:19 AM on October 10, 2008 ]
$ ./nytimes -v mail.spudtrooper.org spud@spudtrooper.org greasynuts Opening http://nytimes.com/ Opening http://www.nytimes.com/pages/todayspaper/index.html Opening http://www.nytimes.com/pages/politics/index.html Opening http://www.nytimes.com/pages/books/index.html .... Sending mail to spud@spudtrooper.org on mail.spudtrooper.orgthen you'll get an email and you can view it on your phone offline:
or just in your browser:
To the best of my knowledge this doesn't violate their terms or copyrights, if it does, don't use it.
[ 09:19 AM on October 09, 2008 ]
[ 04:42 PM on October 08, 2008 ]
[ 09:18 AM on October 08, 2008 ]
% ./analyze_mail -p <host> <user> <pass> > emails2phones.txt % ./merge_names emails2phones.txt > merged_emails2phones.txt % ./import_contacts merged_emails2phones.txtYou're then prompted about every new contact found in your mail, and you have a chance to assign labels to the emails and phones. Some examples are here.
[ 08:53 AM on October 07, 2008 ]
[ 03:35 AM on October 07, 2008 ]
They seem to be working -- or at least not creating huge error logs -- now.
bandlines Keep track of your favorite bands and artists, view their tours in a number of ways. kathymaps Allows people to collaborately share narratives using Google Maps as a medium. geo rss Combine a number of geo rss feeds into one and view it.
[ 02:27 AM on October 07, 2008 ]
When you click Set and enter an email address and 'time left' to be notified you'll see something like the following:
Then once the time in the game dips below this number an email will be sent to the address you gave.
It didn't help the Saints win...neither did Automatica Gramatica.
[ 08:30 AM on October 06, 2008 ]
and an example output would be:r3potatoo:jeff$ ./addressbook2html > contacts.html Exporting address book to contacts.vcard... Parsing vcards from contacts.vcard... Cleaning up...
Anderson, Alf 917-123-4567 Turtle, Henry 617-765-4321 fivelegged_turtle@gmail.com ...
[ 09:33 PM on October 05, 2008 ]

( click for a larger one )
This is basically a much, much smaller (and not nearly as cool) version of the mountain project that I didn't see until after doing this :/. I focus on each individual bands (i.e. the people) by filtering out people with whom I didn't communicate enough, rather than the humps; though the latter is significant, too. Here is one with a more lenient filter:
( click for a larger one )
The source is here: seemail.tar.gz.
[ 02:02 PM on October 05, 2008 ]
Search all songs in ~/Music for songs with lyric change.
musicgrep "change"
Search all songs in ~/Music with artists containing the string Belle.
musicgrep -a "Belle"
Search all songs in ~/Music with titles containing the string Cat.
musicgrep -t "Cat"
[ 11:38 AM on October 04, 2008 ]
[ 07:49 AM on October 03, 2008 ]
~/.ical for convenience. I need to figure how to better show multiple results, the current method sucks like those thingies on spiderman's hands...here is a snipped example output for a feed listing art events in New York:
r3potatoo:ruby jeff$ ./today \
s69iupuak9ll5d3tvct0io4pic@group.calendar.google.com
...
12:00
13:00 Judith Joy Ross: Protest (13:30 - 20:00)
Josef Koudelka: Invasion 68: Prague (13:30 - 20:00)
John J. O'Connor (13:00 - 22:00)
14:00 Paris/New York: Design Fashion Culture (14:00 - 21:00)
Kandinsky in Paris 1934-1944 (14:00 - 23:45)
Revealing the Collection (14:00 - 22:00)
Judith Joy Ross: Protest (13:30 - 20:00)
Josef Koudelka: Invasion 68: Prague (13:30 - 20:00)
...
[ 09:59 AM on September 30, 2008 ]
[ 10:52 PM on September 28, 2008 ]
[ 10:17 AM on September 27, 2008 ]
- Michigan State ? at Indiana ?
- North Carolina ? at Miami ?
- Mississippi ? at Florida 4
On another note, scan_logfiles is a little script to analyze logfiles, in particular user agents. Look at the file for options, but it basically prints out histograms of various components of user agents.
[ 09:47 AM on September 26, 2008 ]
- It has caffeine
- At the end you get an extra-special treat of something that most resembles sludge -- but it, too, has caffeine, so no complaints.
- And it gives you a sense of accomplishment, so you kind of feel like a caveman
[ 09:30 AM on September 25, 2008 ]
[ 12:42 PM on September 10, 2008 ]
rss feeds as ics feeds so I can read these RSS feeds in iCal or google calendar. So far there's only one, but possibly more to come:
[ 10:46 PM on September 09, 2008 ]
[ 10:02 PM on September 09, 2008 ]
[ 01:49 PM on September 09, 2008 ]
[ 02:35 AM on September 09, 2008 ]

maybe they should use their resources to find a grammar-checker (names are hidden to protect the innocent from showing they know me).
[ 12:39 AM on September 09, 2008 ]
out: logfiles.rb. To use it, pass in the names of Apache log files to inspect, and this will output some HTML to out. Some example output is found here.
[ 11:16 AM on September 08, 2008 ]
Updated craigmails to fix a bug in encoding the email, and also eliminated the need to actually access the posting (via AJAX), so that peoples' IPs won't get banned, the links load more quickly, and the email link is actually valid.
Also, here is some docs on a (sort of) new little project to provide remote-control like interfaces for controlling resources on a laptop with your iphone: http://www.jeffpalm.com/iwebapp/docs/ and the google page is here: http://www.jeffpalm.com/iwebapp/code/. The idea is that the interface is served over a remote computer (e.g. jeffpalm.com) and displayed on an IPhone, but there is a little server running on a local machine that is responsible for communicating with the phone via a Javascript library. There is slightly more of a description on the wiki help page. Here are a couple screen shots:
[ 01:32 PM on September 07, 2008 ]
OWNER # HISTOGRAM
Henry Poole 20 ********************
Domains by Proxy, Inc. 15 ***************
Name Envy Privacy Services 9 *********
DomainSource.com, Inc. 6 ******
RareNames, WebReg 4 ****
Havana Journal Inc. 3 ***
Not Applicable 3 ***
Seth Wilkof 2 **
NGP Software 2 **
BelgiumDomains LLC Privacy Service 2 **
joe glazer 2 **
N.A. 2 **
DomainDoorman LLC Privacy Service 2 **
If you're
very googlized, this file is in iCal format
here: congress.ics.
[ 11:50 AM on September 07, 2008 ]
You can do this using this.
Congress person URL Daniel Inouye www.danielinouye.com Pat Roberts www.patroberts.com Norm Coleman www.normcoleman.com Arlen Specter www.arlenspecter.com John Doolittle www.johndoolittle.com Lois Capps www.loiscapps.com Adam Schiff www.adamschiff.com Brian Bilbray www.brianbilbray.com Ric Keller www.rickeller.com Robert Wexler www.robertwexler.com Ron Klein www.ronklein.com Jesse Jackson Jr. www.jessejacksonjr.com Ray LaHood www.raylahood.com Baron Hill www.baronhill.com Ed Whitfield www.edwhitfield.com Candice Miller www.candicemiller.com Chip Pickering www.chippickering.com William Lacy Clay Jr. www.williamlacyclayjr.com Dean Heller www.deanheller.com Steve Israel www.steveisrael.com Vito Fossella www.vitofossella.com Mary Fallin www.maryfallin.com David Davis www.daviddavis.com Lloyd Doggett www.lloyddoggett.com Rob Bishop www.robbishop.com Nick Rahall www.nickrahall.com
./congress.rb > congress.txt ./congree.pl congress.txt prettify.pl goods.txt > congress.htmlor type
make.
[ 02:43 AM on September 07, 2008 ]
[ 01:59 AM on September 07, 2008 ]
[ 01:26 AM on September 07, 2008 ]

(Apologies for the low quality, mac's don't capture the tooltips in screen shots)
[ 10:04 PM on September 06, 2008 ]
~/.pollstar. I don't have any music on this machine, but if I did -- and I had these artists -- a sample output would look like this:
r3potatoo:ruby jeff$ ./pollstar.rb DATE ARTIST VENUE 09/05/08 Indigenous B.B. King's Blues Club 09/13/08 Foxy Brown B.B. King's Blues Club
[ 03:49 PM on September 06, 2008 ]
[ 12:47 AM on September 06, 2008 ]
[ 08:53 PM on September 05, 2008 ]













