September, 2011


30
Sep 11

On Evernote

Brett Terpstra had a post a few days ago about how he uses Evernote even though he is predominately a plain text guy. Brett makes perfect sense. Damn him!

I used Evernote like crazy for a long time. I paid for premium service for a long time. But it worried me that it was a hole I was digging that I might not be able to get my carefully curated notes out of. Now Brett comes along and makes a perfectly rational argument for using it where appropriate. I have to admit, I have missed Evernote.

I do like having most of my notes as plain text in Simplenote and Dropbox but Evernote certainly has a sweet spot.

Veritrope (love this site) has some great scripts for dealing with Evernote and Devonthink. The Evernote to Devonthink script works really well and is one of the best written AppleScripts your going to read this month. Thing of beauty.

With this tool at hand, I can schedule a regular job to extract my Evernote entries and tags and put them in a Devonthink Pro Office database.

I realize Evernote has it’s own export function but it did not handle my library well and I lost all of my tags. This script works better than the native export.


29
Sep 11

JavaScript Links [LINK]

Nettus+ generates some great content and posts some fantastic links. Here’s a bunch of WebDev links (mostly JS). I’m so impressed with how powerful JavaScript is becoming on modern browsers. The next generation of WebApps are going to feel so close to native applications that I doubt we will be able to tell the difference. Here are 3 of my favorites from that Nettus+ list:

  1. Cryptico.js for client side encryption (up to 1024 bits)
  2. Keymaster for handling keyboard shortcuts (including modifier keys like command and option)
  3. JQuery Mobile. JQuery, but for mobile. Seems obvious.

 

 


29
Sep 11

Jambox Update

I really do love my Jambox speaker from Jawbone. It sounds good for its diminutive size. Jawbone just updated the firmware (how many speakers have a firmware?) and added a new audio mode. The only real pain int he update process is that I am required to download and install a menubar application. I then need to connect the Jambox and launch a Web site. I then must login to the mytalk.jawbone.com Web site and update the firmware. That’s a lot of steps to update a speaker.

Jambox Update

 

On the bright side, there are actually some nice options for the Jambox. The new audio mode, called LiveAudio, adds a bit more separation to the sound. It does sound a bit better, but this is still a small speaker. Additionally the Jambox has another option for increasing the sound quality but at a reduction to the maximum volume. I have not noticed a difference with this mode.

Most of the other “Extras” are just pumping third party apps and services that are not specific to the Jambox. The Web site feels cluttered and awkward. I would have preferred a standalone application rather than a bunch of ads for cheap junk. Honestly, this is not an inexpensive piece of kit and the up-sell feels a little unseemly.


29
Sep 11

Bento and Beer

Beer Tracking Trilogy Episode 4

See this post for the introduction and ground rules

Bento

I started this project in Bento. A couple of years ago, I created a Bento database for cataloging beers I drank. The purpose was to know what to buy again, and what to avoid at all costs. Bento worked moderately well but had some frustrating rough edges.

Bento on the Mac has two different views into the data. There is a simple list view that can be searched, sorted and filtered. Then there is the form view which provides extensive customization. With careful design I built a form that looked like a custom app built for the single purpose of cataloging beer.

Spoilers

This is a long post (>2500 words) with lots of images and details that may be tedious to some. If you just came here to find out if you should be a Bento user here’s the conclusion: It worked great on the Mac but did not translate well to the iPhone app. The iPhone was just too small and the application did not have well thought out controls. It was fine for looking up information, but frustrating for adding anything new from iOS. There was also the issue of data portability. I’ve had too many instances of applications going away and taking my well curated data with them. That’s why I forced myself to leave Evernote in favor of alternative note-taking systems. There were several features that I really liked, so I kept with Bento for about a year. In the end, I decided my requirements had changed and no longer fit into the Bento model.

Bento on the Mac; $49

Initially Bento was only available on the Mac. It’s a more laid-back, more attractive and more accessible version of FileMaker Pro. There’s no scripting

I purchased Bento when it was first released. I was once a heavy FileMaker Pro user and developer but I had graduated to new and more severe forms of self-flagellation with Oracle databases. I had not touched FileMaker Pro in many years but Bento looked to scratch an itch for some lightweight database solutions at home.

Bento on the Mac is a lovely experience. It has a simple and clean interface that can be customized within seconds to provide an excellent experience. There is no scripting in Bento. That might be a relief to anyone that is familiar with FileMaker. That also means you’re stuck with exactly what Bento offers out of the box.

What is offers out of the box is very good. At it’s core, Bento is a flat database with a lot of chrome and pre-made widgets. To create a useable form, I just need to define fields and drag UI elements to where I want them. There’s a list view that behaves much like a dumb spreadsheet. It can be sorted and numerical columns can be summed. There is no text formatting or field coloring.

Bento really embraces the idea of “ignorance is bliss.” The less you know about how to build forms, the more you can just enjoy using them.

Here’s the form I built for my beer inventory. The Form Interface

That form took under 15 minutes to make. That included defining the fields, arranging the UI elements and tweaking the field lengths. That’s really the only options you have.

On the left hand side of the image you can see that Bento uses a single source for all libraries. There are not separate library files. This is both good and bad. It’s very similar to iOS where I don’t think about where my files are stored. iOS apps generally store the files and manage them for me. Bento does the same. The down side is that I can not just move or send my library file manually. I can’t just copy my library file to Dropbox to share. In fact, Bento doesn’t play nice with Dropbox at all.

I think this library model works for Bento. It’s a simple application for basic workflows.

There are more views available automatically. No formatting or tweaking needed. Here’s the grid view of the library. This view mocks me for missing images, much like the Cover Flow view in iTunes.

Grid View Grid View

Here’s the list view available for the inventory. This view exposes the guts of the library. It really is mostly a flat table with a bunch of entries.

List View List View

Version 3 of Bento introduced a split view as well. List view on top and the form view on the bottom. This is my preferred view for working in my library.

Split View Split View

Smart Lists

In addition to a Library group in Bento, each Library can also have Lists. Lists are groupings of records. One of the most useful for me is to have Smart Lists that are based on some search criteria. As with every feature in Bento, smart lists are limited, but dead-simple to make. There’s no way to create nested criteria like in iTunes, but that’s not how Bento was designed and I’m willing to bet most iTunes users don’t make smart lists with nested criteria.

The Smart Lists that I use often (I have more but cleaned them out for this image) are as follows: Favorites: Anything with more than 3 stars Shopping List: Anything with more than 3 stars with no stock (quantity is empty) Smart List Creation

I would like to see something a bit closer to iTunes. For example adding a criteria that is dependent upon being in another smart list. That shouldn’t add too much complexity to the interface, but provide a powerful way to build complex Smart Lists.

Manual Lists

Just as the name implies, Manual Lists are created by adding individual records. One way I use this, is to prepare for a tasting session. I can quickly add all of the beers I want to run through and make sure that I have enough in stock.

Manual List Creation Manual List Creation

Saving

There is no saving. I make a change or add an entry and can then quit the application. One advantage of Bento’s lack of library portability is that there’s no need to ever save changes. There are plenty of backups created, but even before Lion, Bento never needed a manual Save step.

Data Portability

I have been pleasantly surprised at how easily I can get data in and out of Bento. For an application with few bells and whistles, it has plenty of options for data portability.

Bento supports a couple import and export options that include iWork Numbers, Excel, PDF and CSV. I only ever work with CSV since it is a tried and true method for moving tabular (pun intended) data around.

When importing CSV data, Bento will auto-match fields that already exist in the current library. I can also quickly create any necessary fields without leaving the import window. For example, importing a bunch of records into my Beer Inventory library was dead-simple.

Import Form Import Form

Bento on iPhone; $4.99

Each iOS companion app is going to set you back a bit. I think that’s somewhat fair. I would prefer a universal app rather than a separate iPhone and iPad app, but it’s reasonable not to just give them away. You don’t need Bento on the Mac to use it on iOS. It’s a perfectly capable form and database manager with the Mac counterpart.

If you do have the Mac, it’s going to be a much better experience. iPhone Bento

iPhone Browsing iPhone Browsing

Syncing

iOS Bento can only sync with Bento on the Mac. That’s not a problem for me since I’ve invested in the entire suite. However, if I wanted to just keep Bento in sync from iPad to iPhone, I would be out of luck.

Syncing to the Mac is simple, as I have come to expect with Bento. There is nothing more than pairing Bento on iOS with Bento on the Mac. Bento must be running on the Mac to initiate a Sync from iOS. Syncing can only be done over a WiFi network and must be manually initiated on the iOS device.

There are few options for syncing. I can choose to never sync a specific library, but I can not selectively sync one set of libraries to one device and another set to another device.

Syncing Syncing

Lists

Only the Mac version of Bento can create Smart Lists. However, the iPhone version can create manual lists. Their not as useful for me as Smart Lists but at least it’s possible. You can use smart lists that are were created on the Mac and they work great. I can whip out my iPhone while I’m at some beer shop and quickly see what I need to buy. No need to tap in a new search. I just select the Smart List I have for shopping.

Smart Lists are dynamically updated on iOS. If I happen to purchase something I needed and change the quantity to something greater than zero, then the item is removed from the smart list immediately.

Search is very slow on iOS, which is unfortunate since it’s necessary for a large library. It is also limited to global text searches. I say limited, because that’s the worst possible search for a large organized library. It would be more efficient and helpful to provide a search by record properties. I almost never search my library on iOS. I use the Smart Lists and the sorting functions.

Searching on iPhone Searching on iPhone

Sorting and Viewing

iOS Bento offers good options for sorting and displaying the record list. I can set primary and secondary display fields, as well as sort by any field. In a small way, this makes up for the lack luster search. As long as my list is sorted in a logic way, I can find what I’m looking for.

Sorting Sorting

Editing

Editing on iPhone is much more difficult, but that’s usually true of any multi-platform application. The screen space is so much smaller that it’s difficult to display and edit everything at once. Bento has tried hard to make the process simple, if not easy. The process is much like any iPhone app from 2008. It uses the standard view controllers and elements that require multiple taps to enter and back out of. It was fine a couple of years ago, but the bar for design on iOS is much higher now and Bento fails in the data input area.

Editing Editing

One area the iOS does excel, is adding multi-media to a library record. There is full support for the camera and photo library as well as video and audio capture. I like to include photos of the bottle when I inventory. It makes it easier to identify again when I’m at the store, or trying to find it at the back of my beer cabinet.

I haven’t tried to use any other media in my libraries, but I could imagine using the audio recording function to capture quick voice memos and notes, especially on my iPhone. Image Capture

Bento on iPad; $4.99

The iPad version of Bento is easy to use and provides an elegant interface. However, if you put a lot of effort into designing your Mac Bento library, that is all stripped away when using the iPad. There are eight standard templates that are quite nice looking, but no custom design is possible. The customization consists of adding or removing fields from the display and positioning them vertically on the form. iPad Design

Where the app really shines is data entry on the iPad. Bento provides a quick entry form to get data into the app. Combined with the skeuomorphic presentation of the data as a book or clipboard the iPad version of Bento feels comfortable in my hands. iPad Record

Sorting and Viewing

Viewing records on the iPad is very similar to the iPhone, except it’s actually comfortable to view a large library. My beer library works nicely in list view. I can easily find a specific beer and check its rating in just a couple of taps.

iPad List iPad List

In addition to a more useful list view, iPad Bento provides custom input keyboards based on the data type. This is very similar to Numbers for iPad.

iPad Input iPad Input

While there is plenty to love about iPad Bento, there is still room for improvement. I’d love to have the Mac versions split view available. Search also needs to be improved. Seriously improved. I’d also like just a small amount of formatting control. For example, some fields do not need to span the entire page and could easily be placed side-by-side if only the app allowed it.

Data Portability

I’ve already mentioned how easily I can get data out of Bento on my Mac but sometimes I just want to notify a friend of a great beer while I’m away from desk. It happens. Unfortunately the iOS versions of Bento completely fail for data export and sharing. The only way to share a record is to perform a screen capture and mail the image.

It’s hard to comprehend how the 4th version of the iOS app still has no mechanism for sharing data. It’s baffling and frustrating. It’s also why this story does not end here. Bento great on my iPad until I wanted to share my library.

I had an old friend coming to visit for a few days and I wanted to arrange a beer tasting from my private reserves. I had just assumed I could grab my iPad and quickly send a “print out” of my Beer Inventory. Not so fast! I was required to switch to my Mac and export the library to a CSV file. I was then able to import the data in iWork Numbers and paste the list into an email. So while the data is portable on the Mac, it is not easily shared.

Pros and Cons

This review is based on my single use-case: a beer inventory system. Some of the cons may not matter for other use cases but this is my perspective on the Bento experience.

Pros

  • List and Form views
  • Add photos to an entry from the iOS camera
  • Sync with desktop application
  • Well implemented search on Mac
  • Available for Mac, iPad and iPhone

Cons

  • Unusable search
  • Tiny controls on iPhone
  • No options to share an entry on iOS
  • Limited data portability (requires Mac version)
  • Only two devices can sync with Mac at a time
  • Manual sync required from each iOS device
  • Sync over WiFi only
  • Manual multi-step sync
  • No auto-suggest text from previous entries

27
Sep 11

Scratch File – Add to Top

I modified my scratch file script. The new version appends the clipboard to the top of the file rather than the bottom. That way the scratch file is in chronological order.

WARNING: This script overwrites the contents of a file.

do shell script "pbpaste > '/tmp/qqq_Scratch.txt'
echo >> '/tmp/qqq_Scratch.txt'
cat '/Volumes/Macintosh HD 2/Dropbox/Notes/qqq_Scratch.txt' >> '/tmp/qqq_Scratch.txt'
cat '/tmp/qqq_Scratch.txt' > '/Volumes/Macintosh HD 2/Dropbox/Notes/qqq_Scratch.txt'"

Just as a Unix reminder, the double angle bracket “>>” will append text to the end of another file. The single angle bracket “>” will create a new file or overwrite the existing content.

This new version of the script takes advantage of the hidden tmp directory on OSX to first store the contents of the clipboard. It then adds a new line char with the echo and finally writes the previous contents of the scratch file into the temporary file. It then overwrites the scratch file in my notes directory with the contents of the temporary file.


27
Sep 11

What Layoffs Have Done [LINK]

True of so many industries that rely on expertise. This is completely backwards from where any industry innovator should be headed.

In The Pipeline Blog


26
Sep 11

Scratch File

I keep a scratch file in my NVAlt library. I use it to keep random bits of information that I want to out live the clipboard. It’s not meant to be permanent just a stop-over to some other destination. My clipboard is pretty volatile since I have a number of macros and scripts that temporarily hold bits of information on the clipboard. If it’s something I might need later, then I better get it into something a bit more permanent. A scratch file is perfect for this.

The file is titled “qqq_Scratch.txt” after Merlin’s trick. I don’t have many files that start with “qqq” but a scratch file needs to be available as soon as I open my notes. I also pin the file to the top of my Simplenote list. So, yeah, I use it a lot.

I was pasting a bunch of info back and forth to it the other day and suddenly realized I could quickly make a macro to do the job. It’s really just a shell script:

 

do shell script "echo >>  '/Volumes/Macintosh HD 2/Dropbox/Notes/qqq_Scratch.txt'
pbpaste >> '/Volumes/Macintosh HD 2/Dropbox/Notes/qqq_Scratch.txt'"

The first echo command adds a newline to the end of the file. The second pbpaste command pipes the current clipboard entry to the end of the text file.

The first thing I did was make a new Keyboard Maestro macro out of this. It works perfectly. I also decided to make a LaunchBar action out of the command.

To create the LaunchBar action, I saved the above AppleScript to a folder I keep on Dropbox for LaunchBar scripts. It’s particularly easy to create AppleScripts for LaunchBar if you don’t need to pass parameters. I’ve created a custom list in the LaunchBar index where I manually add the scripts I create.

Screen Shot 20110926 171420

So to use this script from LaunchBar, I copy some text to the clipboard and then CMD-SPACE to access LaunchBar. Start typing the name of the script (Clipboard to Scratch) and hit return. Within a second, the clipboard contents (as long as it’s text) is appended to the end of the scratch file.


26
Sep 11

Command Line Fu [Link]

I’m in heaven… CommandLineFu.com

Some much good stuff. At least an evening worth of fun hacking to be had with this site.


26
Sep 11

Reactions (not what you think)[Link]

This kind of stuff is why I fell in love with Organic Chemistry and spent half my life in school to learn it.

Chemists have favorite reactions. They have favorite reactions not because of what they make, but because of what they feel like. Chemists can imagine things so small and so fast that they can not be directly observed. And they can have a specific affinity to one. I like it when people have favorite intangibles. Beautiful.


26
Sep 11

Marco.org Celebrity[Link]

Just a great post by Marco.

From my former life as a chemist, I can say I have had pleasant social interactions with superstars in the world of Natural Products Synthesis and broke bread with Noble Laureates. None of those experiences have diminished my giddiness when I get an email or DM from someone that I admire on the internet. It just makes me happy to talk to people that do things I like. Especially nice people that make cool stuff.


24
Sep 11

Beer Tracking: The Trilogy

The Trilogy

This is the opening crawl to a trilogy. Like any good trilogy, it will begin with episode 4 and never, ever speak of episodes 1–3.

The trilogy will describe a quest to find the ideal solution for curating my collection of micro-brewery beers. The quest spans several suites of applications: Bento, OmniOutliner and iWork Numbers. I’ve learned a lot about how I can use these tools and I hope someone else gets something out of this series.

 

The Introduction

I really enjoy high quality beer. I am a home brewer and I cellar a great deal of micro-brewery beers. My stock is approaching 200 bottles of all styles.[1] I decided that it would be a good idea to keep an inventory of everything that I have in my collection.

If you think of good beer like a fine bottle of wine, you want to know what’s in your collection for a couple reasons: 1. Ideal pairing with meals 2. Drink it at its prime 3. Compare and contrast vintages 4. Avoid buying duplicates of bad beers 5. Encouraging buying duplicates of good beers

There are a number of programs for wine cellaring but beer cellaring is different enough, I could not just translate my collection to a wine centric system.

 

Ground Rules

Now, most people probably have no need to inventory a beer collection.[2] However, I think my list of requirements is rather generic and could be applied to many other use cases.

 

Ubiquitous Capture

The inventory should be available on my iPad, iPhone and Mac. When I’m at the beer shop, I’ll have my iPhone with me. If I’m at my bar, I’ll have quick access to my iPad. I want to be able to also sit down with a big screen and comfortable keyboard to annotate the collection.

 

Average Intelligence

I wanted an easy way to add new acquisitions and a simple way to search the inventory. The inventory doesn’t need a lot of intelligence, but I should be able to easily determine the total number of items in the inventory and sort by relevant meta data (see below).

 

Social Drinking

Finally, I want to be able to share the list with friends. That’s one of the best parts about collecting and trying beer. It’s nice to quickly send a couple of recommendations to a friend. In return, I often get good recommendations back. An invetory system should make that process easier.

 

Requirements

For this specific use case, I have a few fields that I wanted to capture for each bottle in the inventory. The majority of the information is less than 128 characters. Some are dates, some are numbers and at least one is an image.

  • Name
  • Brewery
  • Quantity
  • Vintage
  • Purchase Date
  • ABV
  • Style
  • Link (to Beeradvocate.com page)
  • Expiration Date
  • Rating
  • Notes
  • An identifying image of the bottle

To Be Continued

In Episode 4 I will highlight Bento from the former Claris group and now an Apple subsidiary. They are more famously known for FileMaker Pro and making Macs awesome in the early 90′s.


  1. I do not collect beers from the large breweries such as Anheiser-Busch. My collection only contains beers that age well and change in complexity and flavor profiles over time. There is no benefit to cellaring a big-brewery beer made to last decades without changing its flavor profile.

  2. I have previously applied a similar model to my software licenses. I think an ideal solution could be used for any relatively flat collection with little hierachical or relational data.


24
Sep 11

Styling OmniOutliner on the Mac

As I have mentioned, my dear wife is now a full time OmniOutliner user. She started on the iPad and eventually migrated to the Mac. One major advantage of using OmniOutliner on the Mac is that you can design templates that automatically handle formatting based on context. The Omni Group provides some tutorials and some specific demos of styles but I decided to whip up a little tutorial for my wife and I am presenting it below. This tutorial covers the basic of making a custom document template and using the text styling tools (Disclaimer: I am not an expert user by any means. I’m a hack. There may be better ways to do some of the things I show. Add them to the comments if you know of any).

  1. Color
  2. Utility Drawer
  3. Styles Selector
  4. Inspector Panel
  5. Formatting a document
  6. Highlighting
  7. Save As Template
  8. The Results

A brand new OmniOutliner document is pretty plain. It’s functional but does not leverage visual elements to communicate additional meaning. title

If your outlines look like that, then you may be missing helpful contextual information that can be provided by styling your text. With only a minor amount of fiddling and tweaking OmniOutliner on the Mac can produce a beautiful and functional template that can be reused ad infinitum.

 

Color

Coloring an outline can be a tricky endeavor for me. While a color can draw my attention, it can also distract it. For example. I prefer soft and mid-tone colors. One of the best color palettes I can choose is the Solarized palette by Ethan Shoonover. It’s well considered, meticulously designed and free. This palette has been adopted by the OmniGroup in OmniOutliner for the iPad. It’s that good.

title

The Right Tools

The best place to begin designing a template is to grab an outline that you would want to apply the template to. OmniOutliner allows text formatting based on its outline properties. For example, I can have every triple-indented row be colored red (just for the example. That would actually be pretty awful). However, to set that up in OmniOutliner I need to have a row that is already indented to that level. It’s just easier to grab an existing outline to begin with.

Utility Drawer

Once I have an outline, I need the utility drawer displayed (ctrl-cmd-T). This drawer gives me access to the outline properties. I also like to turn on the styles view to better understand what outline properties will be changed. To access the styles view, look under the View menu. A plain template to start with

Styles Selector

The Styles Selector appears inline with the outline content. It provides a quick way to select all entries at a specific level. It also gives you a quick way to see what styles are applied. There’s not much to look at if an outline is not using styles, as shown below.

Styles Selector

 

Here’s what a fully formatted outline might look like with the Style Selector turned on. Notice how easy it is to see what formatting to expect. It’s also a quick representation of how many child levels there are for each row. Six boxes mean that there are six different levels below that row. One box means a row does not contain any child rows.

Formatted selector

Select the third box from the left and all elements of the same level are selected at the same time. This is the easiest way to change the formatting for all rows of the same level.

 

The Inspector Panel

I need the inspector window open since that is where I’ll have access to all of the text formatting tools. The inspector items that are the most useful are the “Appearance” section (cmd-1) and the “Style Attributes” section (cmd-5).title

To change the text color, click the text color square. The default color is black, but now that we have the Solarized color scheme palette installed we have a better mix of colors available. The same goes for the text background.

Color picker

The “Style Attribute” Inspector pane displays the formatting for the currently selected rows. You can add and delete formatting for a row from this pane. In the image below I have a row that inherits a number of styles from parent elements. If I decide I want to replace that format I can click the delete icon next to the entry. As I add additional styling, the attributes will appear here.

Screen Shot 20110924 155028

Get It Done

There’s not much to the actual setup. I select an element to format in the utility drawer on the left. I generally start with the document background. Select the Document Background in the utility drawer and then set the background color on the inspector palette (the floating window palette). title

I then work may way through all of the other outline elements. I start with the level one element and work my coloring down through levels three and four. I rarely need an outline more than four levels deep. Especially since OmniOutliner also allows for multiple columns and a notes field.

The Details

Text formatting is an essential tool in good outlining. But to get an attractive outline that I enjoy reading and sharing, there a few more details I consider.

Columns

For a standard outline I do not need multiple columns. Columns can be useful for things like meeting notes, but outlining a paper or book is usually a pretty flat process. In that case, I make sure I do not have extraneous columns included in the document. If they are not in use, why would I want to stare at them all the time? Columns have another piece of baggage that they bring along. They have titles. In a single column outline, the column-title is simply “Title”. That’s not so useful, so I hide the column heading. title

Minor Bits

Here’s a few other things I do for making an outline look tidy:

  • Hide Status Checkboxes unless I need them.
  • Use Bold and Italic sparingly. I want them to stand out. I may also want to manually apply that formating while I’m creating the outline.
  • Use a slightly darker background on the level-one properties. I find that this helps me to quickly distinguish when a section is expanded.
  • I format the “Notes” property as well. They showup in-line for me so I want them to fit right in with the rest of the outline.
  • Display subsections in the utility drawer. It acts as a quick-access bookmark viewer. It’s a handy tool for jumping to sections across a large outline.

Display Subsections Subsections

Highlighting

There’s one last bit of custom formatting I like to do. I like to create my own highlighting colors. These are particularly handy on the Mac (not so useful on the iPad) because they can be associated with an F-key for quick highlighting while editing or reviewing. Highlights can include any formatting elements, including underline, bold and font size. These are where I’ll include some bold colors and formating. If I am highlighting something, it’s because I want it to jump off the screen.

Highlights are assigned an F-key when they are created. Just click the “+” icon to add a new one. To change the F-key just click and drag the Highlight item up or down. F-keys are assigned by their order in the list.

Highlighting Highlighting

Save As Template

So now I’m feeling pretty great about my outline. It looks good and I can add additional items and they are formatted automatically. Great. But what if I want to create an entirely new outline? On the iPad, the process starts with opening an existing outline and deleting all the entries before saving as a new file.

On the Mac, it is much more simple. After configuring all of the formating in an outline, I delete all of the content and choose “File…Save As Template”. Now when I want to start a new outline I can choose “New from Template” and select my swanky template from the drop down menu. I get an empty document that is ready to use with my settings. As I type and indent, I will get styles applied automatically for me.

Here’s a nice trick for OmniOutliner on the iPad. If I Create a new empty document from my styled template, I can send that to my iPad for OmniOutliner on iOS. The document appears to be empty, but obeys the styles as defined in the template. There’s no need for me to delete content in the “template” on iOS. I can just start adding information and the styles are applied automatically for me.

I also get access to the highlights I configured. That means while I type, can hit “F2″ to highlight text. That’s a lot better than typing it all out and then selecting it for highlights.

New from template

Results

The proof is in the pudding. How does the outline look when you’re done? Here’s some before and after. Each outline is using some degree of text formatting and highlighting. The “Before” outline was formatted as it was typed by the author. The new template applies formatting (except highlighting) automatically without the need to fiddle with styles

Before

Before

AfterAfter


23
Sep 11

Upload File Selection Via Transmit

 

In the never-ending pursuit of hard-won laziness, I often develop scripts to do simple tasks. Sometimes the joy is in the problem solving and sometimes it’s in the final product. In this case it was in both.

Yesterday I was working on an as yet to be published post that has a large number of images. My typical workflow is to make an annotation in the text of the image I want to insert. I then transfer the html to MarsEdit and begin the image insertion process. I quickly decided that there had to be a better way to upload a bunch of images and grab their url at that same time.

Here’s what I came up with. It’s an AppleScript that uses Transmit to FTP the current Finder selections to my WordPress content directory for the current year and month and give back the exact url’s to the files. It’s not that pretty or efficient. What I like about it is how it shows just how flexible and powerful AppleScript can be. In one script, there is AppleScript doing most of the integration and basic logic, with a shell script to do some date conversion and finally python to perform the url encoding of the file name.

The following script could be triggered by FastScripts, Keyboard Maestro, LaunchBar or Alfred. That’s the real beauty of scripting on Mac OS.

There are a couple of assumptions for this script to work. First, you must have Transmit from Panic Software. If you need any kind of FTP access, quit messing around and go buy it.

Second, you need to save your ftp location as a favorite in Transmit. Using favorites in Transmit is nice, because you can have all of your login credentials securely handled by Transmit and omit them from an scripts you may publish to some silly blog.

(* This is my WordPress upload root *)
set urlPath to "http://www.macdrifter.com/wp-content/uploads/"

(* This will set the upload path to year/month/ *)
set myMonth to do shell script "date +\"%m\""
set myYear to 1 * (year of (current date))
set clipContents to {}

tell application "Finder"
    set these_items to the selection
    set myFolder to (POSIX path of (target of the front window as alias))
end tell
tell application "Transmit"

    (* Find the favorite for the FTP Site *)
    set myFav to item 1 of (favorites whose name is "Macdrifter_WP")
    tell current tab of (make new document at end)

        (* Connect to the favorite *)
        connect to myFav
        change location of remote browser to path "/wp-content/uploads/" & myYear & "/" & myMonth & "/"
        change location of local browser to path myFolder

        (* Process all of the finder selections *)
        repeat with i from 1 to the count of these_items
            set this_item to (item i of these_items) as alias
            set this_info to info for this_item
            set myPath to (POSIX path of this_item)
            set myFileName to name of this_info as text

            (* If we want to use the files in a blog post we need the URL's. But we need the URL's encoded because we may have spaces in the file names *)
            set myURLFileName to do shell script "/usr/bin/python -c 'import sys, urllib; print urllib.quote(sys.argv[1])' " & quoted form of myFileName
            set myURLFileName to urlPath & myYear & "/" & myMonth & "/" & myURLFileName
            set end of clipContents to "
"
& myURLFileName

            (* Upload the files. Duplicates will require user interaction. That's safer *)
            tell remote browser
                upload item at path myPath to "/wp-content/uploads/" & myYear & "/" & myMonth & "/"
            end tell

            (* Enable if we want the window to close when the deed is done *)
            (* close remote browser *)

        end repeat
    end tell
end tell
(* Convert our list to a single block of text *)
set AppleScript's text item delimiters to "
"

set clipContents to clipContents as string

return clipContents

 


21
Sep 11

Test Your ISP

I have been experiencing some odd behavior with my network performance. Mostly issues associated with HTTP requests hanging. I have not solved the issue yet, but I do have a few tools that come in handy for figuring out if your ISP is up to no good.

The first is Glasnost from the Max Planck Institute. The java applet will check for packet shaping antics as well as throttling from your ISP.

Another handy tool is the Line Quality Ping Test from DSLReports.com. Using something like speedtest.net only tells you your bandwidth. For me, bandwidth is almost never the issue since I pay a premium for 40Mbps service. The ping delay can still kill performance. It’s also nice to know for sure that I am getting what I pay for.


20
Sep 11

Bento 4 Upgrade for $9

This is a really good deal for an upgrade. There are some pretty serious issues with using older version of Bento on Lion and this is a great way to get past that. I’m not a fan of their typical upgrade pricing since I don’t think the iterations have provided much new value.

Unfortunately for me, I already purchased Bento 4 on the MAS because of the bugs with Lion. I have a couple of Bento databases that I use a lot and needed to make sure I would continue to be supported on Lion. I think this discount is a way for them to avoid patching older versions and just get everyone on one code base.

One gotcha though. If you want to upgrade a family pack, you need to purchase 5 upgrades at $9 each. That’s not an oversight either. It’s spelled out on the offer details. That’s actually a pretty poor deal.