Adieu, Representative Souder. I'm sure someone, somewhere is thanking you for your bold service in… uh… ensuring that college kids who get caught trying marijuana lose all their financial aid

Found this sitting in the sound recorder app on my phone. It's a 16 second clip of what it sounds like at night in Puerto Rico, up in the jungly mountains. Specifically, it was recorded at the Casa Grande Mountain Retreat.

 
icon for podpress  Puerto Rico Nightsong [0:16m]: Play Now | Play in Popup | Download

I've been a coldfusion developer for over 9 years now, and tinkered with web design for at least 12. It's pretty rare for me to find something I've never used before and didn't know existed in HTML… but today, I did.

The OPTGROUP tag is how you make non-selectable headings in select lists. I guess for some reason I always assumed that was done with javascript or CSS, but no, it's a simple tag.

In case I ever need it again, this is the CSS to force a "proper" ordered list hierarchy all the way to 6 layers deep. (pro tip – if it's 6 layers deep, you're doing something wrong)

<style type="text/css">
  OL { list-style-type:upper-roman }
  OL OL { list-style-type:upper-alpha }
  OL OL OL { list-style-type:decimal }
  OL OL OL OL { list-style-type:lower-roman }
  OL OL OL OL OL { list-style-type:lower-alpha }
  OL OL OL OL OL OL { list-style-type:lower-greek }
</style>

Oddly, hunting for a house and buying one is a bit time consuming.

All in all, I looked at about a dozen homes before deciding on one. It's a 105 year old Queen Anne, a couple blocks from the river. I moved in a month or so ago and I'm still not completely settled in. It's about 2200 finished square feet, technically 4 bedrooms 1.75 baths (but one bedroom is set up as a laundry room and I'm using another as an office). There's also a great third floor/attic that's finishable (and big enough that I could probably add a loft to it), and a 450 square foot 1 bedroom/1 bathroom "mother-in-law suite" over the "carriage house", which I'm renting to a ND divinity student. On one side of the house is the neighborhood association building. On the other side — a pair of nuns. Across…  a street that leads straight down to the river.  Behind, the 2 car "carriage house", and an alley, and a couple of houses that are currently being restored by the neighborhood association. So overall a pretty quiet location, if you ignore that the street is a fairly busy one and the hospital's less than a mile away. Big yard for being in such an old section of town. I've been here almost a month now. Enjoying it thus far. We'll see how it goes :)

And now, back to the regularly scheduled neglect of blog.

I have no idea why this information was so difficult to find, but I'm posting it here in case I ever need it again.

To do a reverse lookup in coldfusion:

<cfscript>
rawIP = createObject("java", "java.net.InetAddress").getByName('#ipaddress#').getAddress();
hostname = createObject("java", "java.net.InetAddress").getByAddress('#rawIP#').getHostName();
chostname = createObject("java", "java.net.InetAddress").getByAddress('#rawIP#').getCanonicalHostName();
</cfscript>

Note — this is slow. If you're doing them in bulk, you may need to go in small batches or set a higher timeout.

Also, this was perhaps useful: http://api.hostip.info/get_html.php?ip=#ipaddress#&position=true — returns the country, city, state, and geotag info for an IP address, where available.

Assumption: table named locations that has a location name and the location's latitude & longitude as a single field, with lat and lon comma separated, both in signed degrees format.

This is an intentional cartesian join… so if you have a lot of locations, use with care.

<cfquery datasource="MyDSN" name="getDist">
SELECT DISTINCT   
    a.latlon AS thestart,
    a.locName AS startname,
    b.latlon AS theend,
    b.locName AS endname
FROM     locations a
CROSS JOIN    locations b
WHERE     a.locName<> b.locName
ORDER BY     a.locName, b.locName
</cfquery>

<cfoutput query="getDist" group="startname">
<h4>#getDist.startname# to…</h4>
<ul><cfoutput>
<li>#getDist.endname# — #3963.0*acos(sin(listfirst(thestart)/57.295779513082323)*sin(listfirst(theend) / 57.295779513082323)+ cos(listfirst(thestart) / 57.295779513082323)*cos(listfirst(theend) / 57.295779513082323)*cos((listlast(theend) – listlast(thestart)) / 57.295779513082323))# Miles
</li>
</cfoutput>
</ul>
</cfoutput>

———————

This is based on a snippet of SQL code someone forwarded to me which was signed "RBarryYoung, 31-Jan-2009″ — so credit to RBarryYoung for it. :)

An interesting tidbit of information: If you create a cartogram of the United States, by county, based on the number of voters in the 2008 presidential election, and then shade each county red/blue based on the percentage of mccain/obama votes, it comes out looking strangely beautiful, like a purple bird in flight.

At the risk of sounding overdramatic, after 7 years in chains, hope now flies — on purple wings.

I'm really getting tired of seeing this guy… I made the graphic for IT security, but I wasn't expecting them to filter firefox, too….

in the name of love?

Some modifications to the vacation plans

Thursday night — Park & Fly package at a hotel by the airport in chicago, dinner at the Woodfield Mall.

Friday — Fly to PR, pick up rental car (Jeep Wrangler), check in to Da House and explore Old San Juan.

Saturday Morning — El Yunque Rain Forest

Saturday Afternoon — Flight from Fajardo to Vieques (Air Flamenco, who actually answers the phone…), check in to Casa de Amistad.

Saturday Evening — Biobay tour with Island Adventures.

Sunday Morning — Rent a car from Martineau Car Rental and check out the island. No specific plans.

Sunday Evening — Sunset from a beach (Probably the west end of Starfish beach) or possibly a second biobay tour.

Monday Morning — Return car, Flight from Vieques to Fajardo, board the Erin go Bragh III for a day of snorkeling and sailing.

Monday Evening — Return to San Juan, check in to the Caleta Guest House's Jungle Room.

Tuesday Morning — check out any of the San Juan stuff we haven't done yet.

Tuesday Afternoon — Arecibo Observatory and the Caguana Ceremonial Ball Courts, then check in to the Casa Grande

Wednesday — Breakfast, Yoga, a bit of a rest, then the ferry around Lago dos Bogas (Youtube link) and lunch at one of the cantinas there. Then back to the casa for some rest (and maybe a side trip if we missed anything on tuesday)

Thursday — Breakfast, Yoga, then a trip to Ponce for the day. We'll visit the Tibes indian site, the coffee plantation, Seralles Castle, and maybe the art museum, as well as some shopping. Then back to the Casa for dinner & relaxation.

Friday — Breakfast, Yoga, and a day of complete relaxation.

Saturday — Breakfast, Yoga, and back to San Juan… maybe visit something on the way there since our flight isn't til 2pm.

Next Page »