Ok, now I'm just being annoying. I didn't want to be mucking around with Applescript at all, but Journler is so cool and so useful that I just can't help myself. With just a few little scripty tweaks, I'm able to use it as my dream PIM (that's a personal information manager for those of you who aren't annoying).
[p.s. Did you know that when you hover over the date of an entry in the browser list for a few seconds, the tip will show the amount of time that has elapsed since the date of the entry? So hover over 9/8/08 a few seconds, and underneath the tip showing "~ 8 months 4 weeks and 2 days ago". That is so cool! Make your savant computer slave calculate for you!]
Anyway, I used the script from my last post to import a bunch of iCal entries for meetings that I've had, each with one attached contact. In Journler, I needed to be able to see a list of all those meetings, see the date, see the topic of the meeting in the title, and also see the contacts so that I could see at a glance when I last saw who in comparison to everyone else. Because the contacts/resources have a many-to-one relationship to the entries, they aren't easily listed in the grid view. The entry Comments to the rescue!
This script makes a list of all the contacts names and copies it to the comments column, which can then be shows in the grid list and sorted on and so forth. Voila (hey, those French lessons are coming in handy, too).
All warnings apply; again, this was quick and dirty scripting.
-- place in ~/Library/Scripts/Journler
-- Copies selected entry's contact resources to comments
- Created by Courtney Lamb 6/7/09 (www.courtneylamb.com)
-- Use at your own risk!
tell application "Journler"
set theEntriesList to selected entries
repeat with theEntry in theEntriesList
set theNames to ""
repeat with theResource in resources of theEntry
if type of theResource is contact then
if theNames is not "" then
set theNames to theNames & ", " & name of theResource
else
set theNames to name of theResource
end if
end if
end repeat
set comments of theEntry to theNames
end repeat
end tell
08 June 2009
Applescript for Journler: puts Contacts in Comments
04 June 2009
Applescript to create Journler entries from all events in an iCal calendar
I searched long and hard on the you-know-what to find some nerd who had already done what I needed to do -- "import" all of my iCal events in a certain Calendar into Journler as events, also attaching the iCal event attendee to the Journler entry as a Contacts resource.
Surely someone else had done this already! I don't have to muck around with programming/scripting anymore, do I? I don't have to learn AppleScript all of a sudden; I mean, I'm sick of this shit, we're supposed to have robot servants to do things like this for us by now!
So I had to be my own nerd, and if you are the me of yesterday and are looking for a script to do this, you are welcome. Just use it at your own risk because I learned as little about AppleScript as I possibly could in order to throw this together and resented it every step of the way and wasn't careful with error handling and all that mess.
But it totally works! As a reference, I converted 158 entries this way with no problem, took a few minutes. I knew my mysterious past in data conversion would pay off some day.
-- place in ~/Library/Scripts/Journler
-- Creates Journler entries from all iCal events in the calendar named "Journler Drop" (copy desired events here)
-- Sets a tag of "iCal" to the Journler entry
-- In addition, if there is an attendee on the iCal event (just the last attendee, if there are multiple), it attaches a Contacts Resource to the Journler entry
-- Created by Courtney Lamb 6/4/09 (www.courtneylamb.com)
-- Use at your own risk!
tell application "iCal"
tell calendar "Journler Drop"
set theCount to count of events
-- Loop through all of the iCal events in the given calendar
repeat with j from 1 to theCount
set theEvent to item j of events
set theSummary to summary of theEvent
set theDate to start date of theEvent
-- Put both the iCal description and location in the Journler notes
set theNotes to ""
set theLocation to ""
if exists (description of theEvent) then
set theNotes to description of theEvent
else
set theNotes to ""
end if
if exists (location of theEvent) then
set theLocation to location of theEvent
else
set theLocation to ""
end if
-- Get only the last of the attendees, if any
set theContactID to ""
if exists (the last attendee of theEvent) then
set theName to display name of the last attendee of theEvent
tell application "Address Book"
if exists (the first person whose organization = theName) then
set thePerson to (the first person whose organization = theName)
set theContactID to id of thePerson
else
set theContactID to ""
end if
end tell
end if
-- Create the Journler entry
set theNewTag to {"iCal"}
set theCategory to "Contacts"
tell application "Journler"
set anEntry to make new entry
set the name of anEntry to theSummary
set the date created of anEntry to theDate
set the tags of anEntry to theNewTag
set the category of anEntry to theCategory
set the rich text of anEntry to theLocation & "
" & theNotes
-- Create the attached Contact resource from the iCal attendee
if theContactID is not "" then
set aResource to make new resource with properties {owner:anEntry, type:contact, contact id:theContactID}
end if
end tell
end repeat
end tell
end tell
08 March 2009
Warhol Tweets
Have you read The Andy Warhol Diaries?
05 April 2008
Tech Babble Mystery Word of the Week Winner!
This week's TECH BABBLE MYSTERY WORD is: enterprise.
From an April 2nd ZDNet article:
The project is structured as a joint development agreement, and no money will change hands, Colin Parris, IBM's vice president for digital convergence, said in a phone interview.
"We see a need for an enterprise-ready solution that offers the same content creation capabilities but adds new levels of security and scalability," he said.
After an initial phase of using the private Second Life areas internally, IBM will let its own customers access the privately hosted regions.
"We're doing this internally, and we're building the right kind of enterprise-grade solution," Parris said.
Colin Parris, you're our winner!! Your prize is a fully scalable, top-down, multi-tiered B-to-C solution with VPN wireless capability and social networking Flash apps!
Congratul8tions!
30 January 2008
Need to make a call? aka World's biggest, least convenient iPhone
You don't see many of these babies around any more. Do you need to make a call? Did you throw your cell phone in the ocean in a fit of romantic disappointment? Are you sorry now?
Jog down to Broadway and 4th in Santa Monica and, joy!, you can make that call. Don't call that person who made you drown the cell, though; this booth is too heavy to carry down to the beach.
Poor neglected phone booth! No door, missing windows, graffiti! We didn't appreciate you, boothie!
15 January 2008
BMW Isetta spotted on the loose in Santa Monica
Now THAT'S a small car. Some guy came out to Main St to get some attention by showing the lovely coffee-sipping ladies how two can fit in this tiny car. And then he yawned and slipped his arm around the back of the passenger seat....
18 July 2007
Dr. Genius and Mrs. Hunh? -- the G4 sleeps tonight
I think I might be a genius, which is a good thing because I need someone around to clean up after the boneheaded mistakes I make.
For instance (and this one gets blamed on both me and Mr. Hunh), we lived in our current house for a year using rabbit ears and watching fuzzy TV before we finally wondered, "Hey, what's that plug in the wall behind the TV for? And why's there a big antenna on the roof -- it doesn't even give us good reception!" When we finally attached a cable from the plug to the TV...hey, look! That antenna works after all!
That's the "What's That Thing?" conundrum that keeps biting us -- we'll notice something we can't explain and then shrug and fail to investigate it for a few years. We're busy, people, we can't be opening drawers in our own house unless it's absolutely necessary. So, What's That Thing that looks like a latch on the utensils basket in the dishwasher? Five years later, we push the latch and realize that it flips the basket open so you don't have to scrape your hands when you unload the utensils. Wow, that's so much easier! I'm a genius!
So my desktop MAC (a G4 -- if you care about these things, start scoffing about not having thousands of dollars to upgrade to a G5 for no reason...NOW. Done scoffing? Feel better? Ok.) had a little problem. The power was wonky, so the USB ports on the back of my monitor stopped working a year or eighteen months into my ownership of the unit, and the USB and firewire ports on the tower eventually became so unreliable that I had to buy new slots and install them, and the computer wouldn't sleep, so I had to either leave it on all the time or shut it down, and it booted kind of slowly, so it was the environment or me waiting an extra five seconds, and I already told you how precious time is to me.
So this has been going on for four years or so, with lots of web searching and macosxhints.com this and osxfaq.com that and Apple support knowledge base and google searches, all looking for answers to my problem. No one seemed to have exactly the same set of problems, specifically that putting the computer into sleep mode would cause it to reboot. I kept searching, tried all the basic troubleshooting (PRAM this, reset PMU that), tried different plugs and cords, etc etc etc. Tried a buttload of things. Considering replacing the power unit, since that was obviously the problem. Oh, and sometimes the Power button on the tower would not so much want to work without lots of pressing.
This weekend, I tackled the problem again, since a mechanical problem MUST have a mechanical solution, right? Dr. Genius put on her labcoat. Hmm, I guess I'll have to replace the power unit after all...I wonder what that'll be like? It'll probably be like the last time, when Apple sent a replacement unit and fan because the fan was too loud, and I switched out the....
Oh. Hmmm. Maybe I should retrace the steps from that long-distant operation and, uh, reseat the stuff I seated anew at the time. And reseat the power button thing, too, while I'm at it. I mean, it's the old Check That Your Cables are Fully Plugged In, step Uno of any troubleshooting, but how silly would it be if that were the prob...
Hey, look! My computer now sleeps again, the USB cables on the monitor work like a charm, the old USB and firewire ports fire up like gangbusters...I'm a genius! And it reboots fast enough even for me (which, alas, gives me less time to wonder What's That Thing around the house, like the black tubes mysteriously poking out of our balcony walls).
How did the old G4 chug along for the last three or four years with this underpowered handicap? I don't know. All credit to Apple construction, I guess.
This is the support article that finally got me on the right track re: reseating plugs and jogged my memory.
And I finally solved the chronic "G4 won't remember the keyboard configuration of my Microsoft Natural Elite Keyboard, so I have to run Keyboard Prefs and Change Keyboard Type every damn time the thing reboots or comes back from sleep, which it now can do, sleep I mean, thanks to my geniusocity" problem by, um, trashing the keyboard plist. Huh. That solution only took me a year or a year and a half to find, but that time is misleading because my computer wouldn't sleep anyway, so it wasn't usually a problem. I finally noticed that the plist file wasn't modified when I changed the pref via System Preferences.
The "Mail.app Smart Folders count does not refresh" problem is ongoing and seems to come down to rebuilding the relevant mailboxes, but I don't care much about that and think it's more an Apple bug/oversight than anything I can fix.
The moral of the story is: I'm a genius. The other moral is: how am I going to put off writing if everything on my computer works now? The third moral is: when people give you the troubleshooting advice of "it's broken, buy a new one", curse at them with your worst, most insulting words and run away quick because they are almost always wrong and also lazy and perhaps also smelly.
27 April 2007
OxiClean. No need to yell.
Look, I swear I just read a novella by D.H. Lawrence, and another by Henry James, and a third by Leo Tolstoy (I found a book of masterpiece novellas; can you tell?), and I might write very intelligent stuff about that stuff they were talking about -- humanity and love and stuff. And snow.
But the real story of my real life right now is OxiClean. I don't understand this. This is a product that flat out works, I mean like miracle rejuvenation of yellowed t-shirts, curtains, stained couch cushions, and what is euphemistically referred to as "pet stains" on the carpet. This motherf'ing stuff works! I am obsessed with it like Henry James was obsessed with insecure and naive women! I am as proud of it as a Russian aristocrat is of his horses and serfs! D.H. Lawrence should've written "Sons, Lovers, and OxiClean"!
It is sold in stores. I did not realize this until I looked for it in Target and Ralphs. It's a real product, not just a late night TV virtualclean thing, like a NoFuzz Duster (I made that up; good idea, no?). It is a legitimate, though MAGICAL, cleaning bubbler thing that agitates the material and lifts the dirt away (as I understand it). I bought a 16 gallon bucket just for OxiCleaning, and I am so happy! Everything is clean now!
I must grow a beard and yell at people about this product. Seriously, why the annoying pitchman? Is he Mr.Oxi? Why is he yelling? He makes the product seem like a rip-off when it is most certainly a rip-on. I can't figure out the advertising, but I am insisting you start cleaning all your stains and spills with the O.X.I. or I can not visit your house.
13 November 2006
Second Life, same as the first
I heard a thing on NPR recently about a web world called Second Life, and there are linden dollars that you can exchange for US dollars, and Suzanne Vega did a concert in this virtual world, somehow, and a reporter has an avatar in this world where he is also a reporter, but whereas in real life he is Adam Whatever, in Second Life he is Adam Reuters, and the whole fucking thing was surreal to listen to because they were talking about it like it was a normal thing when in fact it was insane.
Perhaps the world has advanced and I have not? I only have the first life so far myself.
26 September 2006
"Hiny Hiders"
I swear that I'm not obsessed with public restrooms. I never intended to post even one toilet-related entry, let alone two.
But while I was charmed and delighted by Rest Assured, I just can't get behind (ha!) this one. This is a shot from the bathrooms at O'Hare airport of the latch on the stall, which reads "Hiny Hiders", by a Scanton, PA company called Santana Products. As a native Pennsylvanian, I say No. (Imagine that said in a Philadelphia accent. How about, "No, and get me a glass of wudder.")
No to this name. The product -- toilet partitions for public restrooms, is fine; nay, necessary and desireable. But Hiny Hiders is not cute or appropriate; it's just gross. It's trying too hard to be adorable, and I don't want my scatalogically-associated partitions to be adorable. Rest Assured is a practical name that happens to be funny. Hiny Hiders is a joke that falls flat.
And it's spelled wrong. We each have a hiney, not a hiny.
Are cutsie-poo (ha!) names a weird byproduct (ha!) of the professional toiletries business? If so, that's crap. (HA HA!)
I don't even want to know what the cleaning lady thought as she heard me taking a picture from inside my stall.
Also, O'Hare toilet seats are covered with an automated plastic wrap that changes itself between uses. It's like the toilet makes you wear a diaper. It is unaccountably disgusting.
Also, I've noticed that the new restrooms on the beach at Playa Del Rey have NO STALL DOORS. NOT A SINGLE COMPLETE HINY HIDER. What the hell is a no-door multi-stall bathroom about? Who are the sick voyeurs who designed that mess?
11 September 2006
Rest Assured Toilet Seat Covers
I noticed something wonderful today.
I didn't have my camera with me, but -- oh, joy! -- I found plenty of images on the internet. Say hello to Rest Assured Toilet Seat Covers. I was in a bathroom today with a patented RA dispenser on the wall right in front of my nose. Since it was on the wall facing the toilet instead of above the toilet, I got a good gander at these handy little gems for the first time in my life and finally noticed the eerily perfect brand name.
Whoever named the produce "Rest Assured" must sleep soundly at night, secure in the knowledge that they had that one stroke of genius most of us spend a lifetime searching for.
Well played, Rochester Midland.
(The only alternative I could even think of was Butt Gown.)
28 May 2006
San Diego Loves Myspace
Or not.
Normally I wouldn't endorse naughty words in public places where the children -- The Children! -- may be corrupted by them, but come on. This is awesome.
26 May 2006
PHP/MySQL and CSS
I was a backend database programmer for too long -- Oracle PL/SQL to SQL Server t-sql to a little Sybase to reporting with Crystal Reports to using ASP .net. I worked for companies, crafting queries and functions and oh my god, I just bored myself. I liked it because it's like doing logic puzzles all day long.
But when I finally taught myself some front-end languages and, as of last year, got into PHP and MySQL programming, holy cow! What fun. Clean, sensible, always improving, with huge amounts of solid online resources, glossaries and code libraries to help you figure out how to make your site do whatever you want.
I don't know what makes some brains wired to enjoy the thrill of conditional statements and relational databases and functions and so forth, but it sure makes for a fun day of working on a site.
And CSS is the greatest -- it helps makes design clean and easy to do. (Well, "easy"). It makes sites make sense -- what a country, Yakov!
25 May 2006
Amazon.com
It works. Prices are low. Shipping is either reasonable or downright free. The interface makes sense. Almost everything is either in stock or available through a partner.
Amazon is the internet done right. I love you, Amazon!