Safari, NetNewsWire, Yojimbo, and Pinboard
Bookmark Page in Yojimbo
This is a script for Safari. It’s a variation on my Bookmark in Yojimbo script. The original “Bookmark & Edit” option has been replaced with “Bookmark & Post to Pinboard”. I rarely want to edit a bookmark or its properties, but soon I might start sharing some links on Pinboard.
Bookmark News in Yojimbo
This is a script for NetNewsWire, a free feed reader for Mac OS X. It works just like the above script for Safari. It saves a bookmark to the current news item, and provides an option to spread the news by posting the bookmark to Pinboard. This is what I’m going to do instead of sharing items in Google Reader.
Post Bookmark to Pinboard
This is a script for Yojimbo, the program I use to save bookmarks and other bits of information. It posts the selected bookmark items to Pinboard. This script is invoked [and thus required] by the “Bookmark & Post to Pinboard” option in both scripts listed above.
Before posting a bookmark, the script prompts you to enter a description. The initial value of the description is based on the Yojimbo item comments. If you click “Post”, the bookmark will be posted with the given description but the Yojimbo item comments will not be changed; “Post & Update Comments” will change the item comments to match the entered description.
To help you keep track of what you’ve shared, items posted to Pinboard are added to a “Pinboard” collection, which will be created if it doesn’t already exist. As an example, here’s what my collection looks like at the moment:
And here’s how it looks on Pinboard:
Limitations
These scripts don’t deal with tags, labels, stars, or other features offered by Yojimbo or Pinboard. These scripts aren’t likely to be very useful if you’re not me. I don’t know exactly what happens if you post the same bookmark to Pinboard twice; I think it’s updated automatically.
There are bugs.
Download
Download all three scripts here (24 KB)
Configuration
Some assembly is required. I recommend installing the scripts in the following locations (create the directories if they don’t already exist). Run them with FastScripts or the regular script menu.
~/Library/Scripts/Applications/Safari/Bookmark Page in Yojimbo.scpt ~/Library/Scripts/Applications/NetNewsWire/Bookmark News in Yojimbo.scpt ~/Library/Scripts/Applications/Yojimbo/Post Bookmark to Pinboard.scpt
Edit the _pinboard_script_path
property at the top of both “Bookmark in Yojimbo” scripts to identify the full path to your copy of the Pinboard script. In my case, this reads:
property _pinboard_script_path : "/Users/anoved/Library/Scripts/Applications/Yojimbo/Post Bookmark to Pinboard.scpt"
Lastly, edit the _API_username
and _API_password
properties at the top of the Pinboard script to reflect your Pinboard login information. Since the Pinboard API is essentially a clone of the Delicious API, it should be straightforward to modify this script to work with Delicious – but unfortunately I haven’t quite got it working. Don’t hold your breath for an update, but please do share any fixes or improvements.
Acknowledgements
The code to post to Pinboard is derived from this NetNewsWire to Delicious script by Larry and Andrew. My sketchy URL encoding code is lifted from this example at Mac OS X Automation.
Posted on Monday, February 15th, 2010.
Listen to fiction / instead of in-depth reviews / enjoy my haikus
The City Quiet as Death by Steven Utley and Michael Bishop (via Tor.com Story Podcast 9)
Don Horacio:
abandoned by God and Man,
mad as the old stars.
The universe reverberates in Horacio Gorrión’s ears, a grand clamoring neurosis of action, stasis, and scale. Counseled on one hand to find purpose through investment in the new physics of Genesis, and counseled on the other hand to accept the benevolent disinterest of a distant Prime Mover, Horacio ultimately succumbs to the briny discord of the squid in the locket.
Existential dread is the fundamental ingredient of Lovecraftian horror, and The City Quiet as Death delivers a compelling portrait of an aged bachelor overwhelmed by the incessant continuity of Creation. The well-realized setting of his Caribbean household provides plenty of calories – and the threat of tentacles is an appropriate garnish.
Morris and the Machine by Tim Pratt (via Drabblecast 150)
Today love grows cold –
travel back to set things right;
time is no arrow.
Morris is a tinker who has built something in the basement. His wife is become weary of his work and wary of his absences. Morris has made a great breakthrough, but it is a bittersweet victory. He returns from each test of his machine and of himself to find no progress towards his heart’s goal, which slips further away with each day.
Good story. Sad stories often are.
Biographical Notes To “A Discourse On The Nature Of Causality, With Air-Planes” By Benjamin Rosenbaum by Benjamin Rosenbaum (via Podcastle 90)
Aboard an airship,
the Plausible Fabulist asks
in whose plots we act.
Set in a fanciful alternate reality populated with zeppelins, assassins, and helpful mechanical Wisdom Ants animated by the Brahmanic field, this story’s endangered protagonist – a writer – considers how his protagonist – an inhabitant of a rational “materialist” world like ours – might reason his way out of such improbable peril. Through the lens of fiction, the fictional Benjamin Rosenbaum discerns a solution to his plight.
We, too, can view fiction as more than mere entertainment. Each story is a pattern; equipped with the memory of many patterns, more situations become recognizable and more challenges become tractable. This is how imagination enhances experience. (But don’t forget to vet intuition with reason.)
Posted on Saturday, February 13th, 2010.
Translucent Parts Lists in LPub
Inspired by a preview instruction image posted by GreenLead, here is a guide to creating parts lists with translucent backgrounds in LPub.
Start by opening a model in LPub. I’m using this one.
Go to LPub’s Configuration menu and select Page Setup. Choose Picture as the Background type and select a file (thanks to Hubble for the nebula image in this example).
Now the page background is in place. Don’t forget that some images make better backgrounds than others. This example is a bit dark, making it hard to see the assembly details in some places.
Next, return to the Configuration menu and select Parts List Setup. Select Picture as the parts list Background type and choose your background image (here is the simple transparent white image I’m using).
In this case, it doesn’t matter whether you choose Stretch or Fill, but if your parts list background has some texture or text you may prefer one over another. However, I think there is a currently a bug in LPub that causes the parts list border to be stretched or cropped along with the background, so for now you’ll probably want to select Borderless as the Border type.
Now the page background is partly visible through the tinted parts list backgrounds. No post-export image editing necessary! Note that you can also modify individual parts lists backgrounds one at a time by right-clicking them.
I hope this gives you some ideas for new things to try with your custom instructions.
Posted on Thursday, February 11th, 2010.
Old School versus New School SF
I recently listened to StarShipSofa Aural Delights #119, featuring the first “Old School versus New School” showdown. This feature presents two stories, one from contemporary times and one from the Golden Age of science fiction. Listeners are polled on the podcast website, and the story that wins the most votes will be announced as the favorite in a future episode.
The comparison provides an interesting structure for the show. This week, the old school story was The Last Evolution by John W. Campbell, Jr. The new school story was Knotwork by Nina Kiriki Hoffman.
I wasn’t sure what to expect. I’m familiar with and fond of the work of authors I consider progenitors of the genre: Jules Verne, H. G. Wells, and later writers credited as Golden Age authors, including Arthur C. Clarke, Isaac Asimov, and Ray Bradbury. I was therefore surprised to find that I detested The Last Evolution. (The full text is available for free at Project Gutenberg).
The Last Evolution
I enjoy stories of all stripes, so why did this one provoke such a negative reaction?
The problem here is not in the details of the science deployed in support of the story; it’s that there are no details, the science consists of the pursuit of some hand-wavy “Ultimate Energy”, and that the story simply isn’t compelling.
I find The Last Evolution guilty of that most threadbare indictment of science fiction, which is that it’s all about gee-whiz robots and spaceships, coupled with a nerd’s neglect of the social elements that make stories meaningful and memorable. In general, I reject that characterization of the genre, but in this case I think the stereotype is accurate.
(I’m familiar with some of the period’s authors, but I’m not too familiar with the old pulp magazines like Campbell’s Astounding Science Fiction; perhaps it was once the norm to publish such shallow stuff.)
The Last Evolution describes the final superiority of machines over mankind in a fight against alien invaders. Questions about machine intelligence are genre staples today, so Campbell deserves credit for addressing the subject in his time. Nevertheless, our resilience customarily provides some reassurance in parables about humanity’s fate. No such flattery is present in The Last Evolution. Perhaps I am just hurt that Campbell finds support for the null hypothesis; after all, there is strong pro-human publication bias in science fiction written for a human audience.
The plot reminds me of an escalating playground argument. Imagine two small boys playing with toy soldiers, countering each claim of victory with unexplained declarations of invulnerability or improved weaponry. This is how the competitive evolution of new machines is described in The Last Evolution. Each iteration is more capable, according to vague allusions to greater strength and sophistication, but there is no convincing differentiation between generations.
Here is a very specific complaint: the words “machine” and “beam” are overused. (The word “machine” occurs 103 times and the word “beam” occurs 53 times.) These are poor substitutes for more engaging descriptions of the robot technologies central to the story. I found it exasperating to hear about yet another machine equipped with yet another beam.
There are a few human characters, but they exist mainly to deliver some cardboard “oh no; now we are all nearly dead” dialogue in lieu of a decent elegy.
I take a dim view of the unmitigated conclusion that technology obviates biology.
I accept that a key function of science fiction is to explore provocative premises, but I take a dim view of the unmitigated conclusion that technology obviates biology. A species’ fitness depends on its environment, so a mechanical race won’t necessarily occupy the same niche as the human race.
Of course, alien death beams ultimately eliminate every human niche, leaving behind an environment that is indeed only fit for machines. So, there is some logic to the plot – but there isn’t any heart.
Knotwork
So what of the second story, Knotwork? Its presence in the podcast demonstrates the inclusive breadth of today’s science fiction spectrum. The Last Evolution is all about machines and their god damned beams, whereas Knotwork is all about people and their feelings. There is an otherworldly kink to the plot, but it emerges gradually in service to the story. I liked it.
The titular thread-and-pencil mojo of Knotwork might seem more like fantasy than the technological extrapolation typically associated with science fiction. True, but science fiction stories aren’t necessarily about science. The label derives from the setting; in many cases, “engineering fiction” would be a more accurate label, as it is novel technology, not the facilitating science, that motivates or constrains the plot. The science content in popular subgenres such as space opera is often so far removed from current understanding that it might as well be magic.
Think about a story as an instance of the scientific method at work. A what-if hypothesis is proposed in the circumstances or the choices of the characters. The plot unfolds, as an experiment, from these initial conditions. Observations are made and conclusions are drawn – or left open for future research and reading to resolve. Repeat, and bit by bit understanding accumulates. It is not a quantitative method, but replicated findings gain authority, divergent interpretations indicate interesting problems, and, occasionally, we are rewarded with serendipitous insights.
In Knotwork, the science is in the storytelling. What can you learn about yourself by imagining what would happen if you pulled the strings?
Science fiction makes this experimental model explicit in its setting, as does all speculative fiction, but stories of any genre can pose questions and pursue answers. This is what science fiction has taught me to recognize and appreciate in all literature. In Knotwork, the science is in the storytelling. What can you learn about yourself by imagining what would happen if you pulled the strings?
Plus, as someone who likes to doodle, I am partial to the idea that there is a power beyond mere representation in the marks that make up a drawing.
I might even argue that there is a bit of real magic.
Posted on Tuesday, February 9th, 2010.
Audio Fiction Limericks Volume 2
Catch ‘Em in the Act by Terry Bisson (via Tor.com Story Podcast 7)
There once was a dude whose name was Lou
who lived alone with nothing to do.
He bought a camcorder,
which caused some disorder,
yet after it all he still felt blue.
I’m pretty sure I’ve seen ads for those Crimestoppers™ cameras myself. Catch ‘Em in the Act is written in a repetitive pattern pleasantly reminiscent of a folk story.
The Twa Corbies by Marie Brennan (via PodCastle 82)
Thanks to ravens whose speech he did dread,
a peddler found a knight who was dead.
He told the knight’s lady
who seemed a bit crazy;
later she died and birds ate her head.
Posted on Tuesday, February 2nd, 2010.
Reviews in Rhyme: Podcast Fiction Edition
Continuing the theme from yesterday’s book reviews, here are limericks about some short stories I listened to today. (Spoiler warning!)
Another End Of The Empire by Tim Pratt (via PodCastle 88)
The dark lord ruled the land with no ruth,
but his doom was to lose it to youth.
To escape prophesy,
he ruled graciously,
and in peace came the oracle’s truth.
Sometimes audio narrations make me cringe (especially when men attempt to deliver female dialogue in falsetto), but Cheyenne Wright’s reading of this story was great fun.
The Last Great Clown Hunt by Chris Furst (via Drabblecast 148)
On the Plains roam the tribes of the clowns,
the Bozos who were banished from towns.
A clown hunter-cum-cop
who’s tasked to the big top
meets his brother, the chief, which confounds.
I don’t like clowns, but I love the “native” clown names in this story, such as Runs With Scissors. Hilarious sound effects complement the somber telling of this tale.
The Cat Who Walked A Thousand Miles by Kij Johnson (via Tor.com Story Podcast 6)
In Japan lived a cat who was small
with her aunts by a gardened old hall,
but the earth shook and turned
and the garden was burned
so the cat ran away from it all.
The encounter with the monk at the end of this story nearly brought a tear to my eye. (Actually, it seems the narration was abridged, so the story continues after that scene. Fortunately, the beautifully-illustrated full text is available in a variety of formats.)
Posted on Monday, February 1st, 2010.
Recent Books in Rhyme: Fiction Edition
Here is a list of novels I’ve recently read, inspired by a similar list my dad posted earlier this month.
I didn’t feel up to the task of writing accurate synopses or insightful reviews, so instead I wrote limericks.
Sundiver by David Brin
E.T. smarts don’t evolve on their own;
they’re doled out to new Clients on loan.
But we humans are jerks
and we gum up the works
’cause we show you can go it alone.
Blindsight by Peter Watts
On the edge of deep space there awaits
thoughtless threat to the Earth and our fates –
so we sent some misfits,
in a ship well equipped,
for our heroes are all reprobates.
Ilium by Dan Simmons
The post-humans are gods up on Mars
who go Greek ‘stead of aiming for stars.
They enact Homer’s texts
– Helen has lots of sex –
and regret acts of key charactars.
The Road by Cormac McCarthy
So this man and his son hit the road,
With a cart and some cans in the cold.
They struck out for the coast,
saw a cannibal roast,
and at last the man died as forebode.
Lamentation by Ken Scholes
A mechanical man cast a spell
and the city from which he hailed fell.
This pawn burdened with blame
for all lost to the flame
will rebuild it as others raise hell.
Hope you enjoyed that!
Posted on Sunday, January 31st, 2010.
Online LDraw Viewer
Click here to view some digital bricks right in your browser.
It’s a quick late-nite first-draft online adaptation of the Processing LDraw viewer I’ve been playing with.
Posted on Tuesday, January 12th, 2010.
Setting up Andy’s LDraw Viewer
Andy has posted the Processing code for the nifty little LDraw viewer I mentioned in my previous post.
Processing gives you a decent among of guidance, but for your reference here’s what I did to get this up and running:
- Download and unzip
ProcessingLcad-Oct2008.zip
. - Rename the
LcadTest-Oct2008
folder toLcadTest01
in order to match the project file it contains. - Move the contents of the
LcadTest01/libs/
folder to your Processing sketchbooklibraries
folder. In my case, it is/Users/anoved/Documents/Processing/libraries/
. - Move the contents of the
LcadTest01/models/
folder to themodels
subfolder of your LDraw library. Alternatively, you can editLcadTest01.pde
to load a model of your choice. - Open
LcadTest01.pde
and editBaseDir
to identify your LDraw library folder. In my case, it is/Users/anoved/Documents/LDraw/
.
Lastly, if the capitalization of the LDConfig.ldr
file in your LDraw library does not match that specified later in LcadTest10.pde
, edit one or the other so they are in agreement.
Now you can take it for a spin. And, yes, this viewer can load files with Unix line endings. ☺
Posted on Monday, January 11th, 2010.
Beginning Processing
Processing is a system that makes it as straightforward as possible to do some pretty sophisticated graphics programming. Based on Java, it abstracts enough technical details to let you focus, more or less, on the basic logic of the idea you want to animate. From the web site:
It is used by students, artists, designers, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool.
Check out the Exhibition for some examples of what’s possible and the Tutorials to see how easy it is get started. There is a great collection of examples for specific topics, too, most of which include illustrative applets embedded in the page. The ability to export Processing programs (or “sketches”) as applets is particularly appealing, although my understanding is that some features, such as file I/O, are available only in application or development mode. It works cross-platform.
I know I have encountered Processing before, but my current interest began as I read Andy Lynch’s description of a simple LDraw renderer he implemented as a Processing sketch. That lit a fire under some related ideas of my own that have been simmering for want of an optimal outlet.
But there’s more to my interest than digital bricks: if there isn’t already a decent library (which would be surprising, as many useful libraries seem to be available), I might be tempted to write a shapefile loader, if for no other reason than to complement the shapefile parser I once wrote for Chipmunk Basic. I think it could be fun to experiment with some raster GIS and remote sensing ideas in Processing, too. (Just get the spectral signatures – click, click, click – and you do it. That’s all what it is!) Last but not least, per its original intent, I can envision using Processing as a superior tool to visualize certain data.
What sort of Process will you invent?
Posted on Monday, January 11th, 2010.