Software


6
Mar 12

Photo Stream is a Data Sink

I don’t understand the inner workings of iCloud or PhotoStream. What I do understand is that every photo from Aperture (and maybe iPhoto) that is pending sync with PhotoStream is duplicated to a folder in the User Library directory. That means if I, say accidentally, mark 3000 photos for sync to PhotoStream, then I waste 83GB of a 250GB SSD.


Big Data

Of course, this happened on the same day that John Siracusa talked at length about the evils of filling up a boot volume. Guess what I did? Yup. Filled my boot volume with PhotoStream duplicates until the OS made me kill apps. Fun evening.

Luckily, it was also the same day David and Katie talked about Daisy Disk. I’ve often scoffed at disk space analyzers. “I’m a power user. I know where everything is.” Well, I’m here to say Daisy Disk identified this problem much faster than I would have at the command line. When my boot volume is almost full, I don’t want to mess around. Totally worth $10.1


  1. If you buy it, let them know that you heard about by way of Mac Power Users podcast, because you just did. 


6
Mar 12

Hazel Archive Rule

I’m really having fun with the new Hazel 3. Not only does it have a number of new rules and actions, it’s performance is now good enough to work on large collections of files.

Here’s a file archive rule I made that scans all files and folder in my Dropbox account. When I set a file or folder label color to yellow (my archive label) Hazel automatically moves it to my deep freeze archive on my networked Drobo. It works at all directory levels and on entire folders or a single file. It’s also very fast.1


Hazel Rule


  1. I’d be careful how this rule is deployed. I would not deploy it to the top level of a drive. That’s way too much overhead for Hazel to process with every single change. Keep in mind, Hazel is always scanning these files looking for a status change. I am considering copying this rule to specific levels of Dropbox. 


29
Feb 12

NVAlt 2.2 Beta [Link]

Of course, I was going to post about the NVAlt 2.2 Beta. As I said on the Twitters, this free application is the brains of a huge amount of what I do. It is the glue that holds my cardboard fort together.

At the risk of alienating Zachary, Brett and Elastic Threads, I have one request. Please make this a paid product. Please charge for it to ensure its continued growth and support. I don’t care what the price is, I’ll pay it.


24
Jan 12

Banking Automation [Link]

An in-depth look at the pathetic state of banking data exchange. Ok, the post is great and there’s some nice tricks in it. It’s just a shame that so much hacking is required to do banking. It’s my understanding that the least likely way to have your account compromised is by someone directly hacking access through the bank portal. It’s more likely to come from insecure credit card storage by a Sony service.


12
Jan 12

Waiting for OmniPlan

I typically shy away from standard project management tools and mantras. I think most of it is a bunch of marketing gimmicks to sell software and seminars. However, I do get significant value from a WBS (Work Breakdown Structure). A WBS is kind of like a todo list for a large project. A WBS can be as simple as a list of tasks or it can include assignments, timelines, predecessor task assignments, etc. A fully elaborated WBS can be easily transformed into a Gantt chart.

For work, I have to use Microsoft Project to build a reasonable WBS. It’s awful. Every week I eyeball the OmniGroup page for OmniPlan looking for an announcement that it is out for iPad. Every week I’m disappointed. I’d love to move to OmniPlan and I’d pay the high price for an application that actually works the way I do. I’m willing to wait for a great experience. Well, off to reload the OmniPlan page again.


9
Jan 12

Moving Text Editors: Taking BBEdit Seriously

There are plenty of good reasons to be eagerly awaiting a stable release of Textmate 2 but there are also equally valid reasons to avoid it. I’ve used both but I’ve never been an expert at either. I’ve used them for small personal projects but nothing that would exercise all of the features. For web development, I use Coda, for python scripts, I use BBEdit and now CodeRunner. Most of my writing for this site is done between Simplenote, NVAlt and MultiMarkdown Composer. Recently I decided to invest myself in BBEdit so I could leverage some of the power it provides.[1]

What I’ve discovered is that BBEdit is an incredibly complicated and simple tool. It’s a plain text editor on the surface, but it’s highly customizable (like Textmate or even Vim). I’ve been documenting some of my experience and this post describes some of what I like about BBEdit 10.

Customizations

Most BBEdit customizations are available by dropping a plain text or AppleScript file in the application support directory. BBEdit makes it easy to access these locations and there are no secret “default writes” voodoo to add new features to BBEdit. It’s all readable text.

Text Clippings

Text clippings are like TextExpander snippets or Keyboard Maestro hotkeys, but more powerful. They are more like Keybindings in their ability to manipulate and select text.

Text clippings in BBEdit have their own vocabulary for performing text substitution and selection, very much like TextExpander insertions. You’ll want to read the manual for this one, but one important term is the #SELECTIONORINSERTION# keyword. This keyword grabs the current selection. If there is not one then the insertion point will be placed here after expanding the clipping. This is very handy for creating custom text wrapping functions. For example auto-wrapping a selection in braces or parentheses.

Wrapping Text

The markdown wrapping I’ve grown accustomed to in NVAlt is great. Select some text and hit the bracket key to surround the text. Or just auto-pairing brackets and parentheses as I type is a time saver. BBEdit provides options for this and much more.

Here is a basic text clipping for bracketing a selection. If there is text selected already, then the text will be enclosed and the insertion point placed to the right of the last bracket. However, if no text is selected then paired brackets are inserted and the insertion point is placed between the brackets.

Here are some not so fancy clippings for markdown:

  1. Surround with hash Marks (##SELECTIONORINSERTION##)
  2. Surround with spaces ( #SELECTIONORINSERTION# )

I can combine these two clippings to quickly make markdown headers by hitting “#” three times and then hitting shift-space to get “### ###” with the insertion mark waiting in the middle. This is a lightning fast way to create MD headers.

Beyond that, I’ve created several clippings for wrapping text in parentheses, braces brackets, asterisks, quotes and literals.

The real power of these clippings are realized when they are associated with keyboard shortcuts. For example, using the “[” key for wrapping selected text just like in NVAlt or MultiMarkdown Composer. But BBEdit will not allow standard system keys to be overriden for clippings.

Keyboard Maestro Overrides

BBEdit will not allow a text clipping to be set to a hotkey that is used by the system.[2] For example, if I want to wrap a selection in brackets, I can not set the clipping to use the “[” key as default. One trick to override this behavior is to [use a Keyboard Maestro group][gruber inetercept] that is only active in BBEdit. That group then contains macros with hotkeys mapped to their BBEdit counter part. Here’s an example. This macro simulates the difficult to remember BBEdit hotkey of ctrl-opt-[ but the macro is triggered by the “[” key.

Trigger Override

Scripts

BBEdit is probably the most scriptable application I have ever worked with. Nearly every aspect of BBEdit can be controlled through AppleScript. But what’s more important, BBEdit provides a mechanism for tying scripts into text clippings[3] and menus. There’s a nice tutorial over at MacTech.

Selection Control

There are plenty of options in BBEdit for moving around a document and selecting text. BBEdit brings a lot to the table right out of the box. But if that’s not enough, just about everything can be customized with AppleScripts.

BBEdit already hase built in support for hopping through text, stoping at CamelCase characters (ctrl-right arrow). But this too could have been done with an AppleScript.

Mr. Gruber has one of the earliest examples I could find of selecting the word that the insertion point is in.

There’s a script to select the current paragraph text, excluding the leading indent and newline characters.

Scripts are made even more powerful when combined with BBEdit’s Grep searching, also accessible through AppleScript. There’s a short tutorial (albeit rather old) at Anybrowser.org.

Sure, BBEdit is scriptable. So are a lot of applications. I was impressed but not surprised about the scripting support. But then I discovered the menu scripting support. Menu scripting provides the ability to add-to and override the BBEdit menus with custom scripts. For example, instead of using the built-in FTP service, there’s a script to override the menu and launch Transmit instead.

Markdown

It’s only natural that BBEdit is one of the premier Markdown environments, given Gruber’s affinity for BBEdit. BBEdit comes with a number of features that support Markdown, but I also installed the Markdown Extensions by Watts Martin. These additional options for getting MD in and out of BBEdit, as well as adding support for MultiMarkdown.

The Markdown language module provides syntax highlighting for links, headings, block quotes, code and lists. There is support for MultiMarkdown through add-ons but the built-in syntax highlighting does not extend to any other MMD features. Fortunately, I use Marked for MMD preview so very little has changed for my writing workflow. I do miss the MMD highlighting though.

Huge win here for BBEdit. If the text exists, BBEdit will find it. BBEdit supports standard Find and Replace, but as mentioned previously, it also supports grep search and replace. If you’re not familiar with grep, check out this short tutorial. Grep is an advanced search function built into UNIX and BBEdit takes full advantage of it. Grep patterns can be saved and recalled at any time. Let’s say you want to match any pattern that looks like a phone number. Grep’s your solution[4]:

[[:digit:]]{3}[ -]\?[[:digit:]]{4}

BBEdit also supports grep searching through AppleScript. Which means a common search can also be tied to a hotkey trigger. For example, a hotkey to automatically select the current word.

Sure, there are good tools for Textmate, like AckMate, but grep is part of BBEdit’s DNA.

BBEdit also supports a beefed up version of good ’ol “Find”, called “Live Search”. when using Live Search, BBEdit begins highlighting matches in the text, as the search term is entered. It’s impressive to see, partly because it is so darn fast. It’s instantaneous on a 1000 paragraphs of text.

Markers

BBEdit provides quick access to functions through a dropdown document menu. When working in Markdown, the menu displays all of the headings with an integer to indicate the heading level. This is nothing ground breaking but it’s nice.

But BBEdit takes quick access one step further with document markers. Markers are like bookmarks within a document. They are invisible in the document text but BBEdit tracks and displays a list of markers when needed. It’s subtle, but very handy. For example, if I’m not happy with a specific piece of text, I can mark it to review later. Another way I’ve been using this feature is to take a break from one section and work on something else. Before I start a new paragraph, I mark the text that I want to revisit. Later, I browse my list of markers to refresh my memory.

The Bad

So it’s not all milk and honey with BBEdit. While I’ve been able to move to BBEdit full time[5] there are still some rough spots.

AppleScript

AppleScript support in BBEdit is both the best and worst things. Almost every function of BBEdit can be accessed through AS. That seems to come at a price though. Unlike Textmate bundles or Sublime Text[6] which can be written in any language, BBEdit is weighed down by AppleScript, which is not versatile or mature enough to do real work. AppleScript is awkward and poorly defined in comparison to other scripting languages. There are too many non-obvious limitations and options. I never know when I should “Tell text of front text window” or more generally “tell front text window”. These are apparently two different things that are only discovered through trial and error.[7]

There’s a lot of AppleScript legacy with BBEdit and it’s likely to remain part of the application until Apple kills it off. I’d like to see BBEdit support additional scripting languages to work on documents.

Color Schemes

BBEdit supports several text coloring options through their Codeless Language Model and their BBColor color schemes. These are nice, but fairly limited. Since BBEdit supports such great grep processing, it seems like that could be leveraged to provide syntax highlighting that is not bounded by a programming language model. For example, why is the Markdown highlighting defined by keywords, numeric constants, string constants and other terms more appropriate for a programming language? I’d like to see a syntax highlighter based on pattern matches that are more general. I’ve found a number of color schemes around the internet but there is no good single source. The closest to a single source I have found is on Github.

Scripting Documentation

The documentation for scripting BBEdit is just “good enough”. Most of what I learned was through extensive Google searching. Many of the examples are very old. There does not appear to be a single repository of AppleScripts to pull from. For an application with such extensive AppleScripting support, it’s frustrating to not have a single repository of examples. However, the Google group for BBEdit is very good and the responses are quick and helpful.

Conclusion

It was worth the investment. I don’t mean just monetarily. I invested many hours into BBEdit and I’m sure there are many more to come. But it was worth it. I have an environment that I feel productive in. I’ve customized it to my exact needs but I’m still producing plain text and working with my other favorite applications like Marked, Simplenote, Dropbox and NVAlt. For the most part, the environment is portable to another Mac, by copying my BBEdit support directory to the new machine.

Advice

I’ll try to avoid the holy wars of text editors and skip the preaching that is abundantly available on the Internet. But if you came here for some advice, I’m happy to share what I think. BBEdit works for me right now. I trust the developers and the product to stick around and keep up support. BBEdit is not the cool new editor on the block, but it is comfortable, dependable and powerful. It has some nice styling and some thoughtful features. In the end, it’s just a damn text editor, albeit a very good one.


  1. For a discussion of migrating from Textmate to BBEdit, hit the BBEdit Google group.  ↩

  2. This is my test footnote  ↩

  3. Yes, I know. Just like TextExpander. I think this is more powerful than TE’s implementation though. In BBEdit, the script is embedded inside the snippet.  ↩

  4. Awk’s cool too. Please don’t email me.  ↩

  5. By “full time” I mean at my Mac. I don’t use a Mac at my day job and I also do a good bit of work on my iPad and iPhone.  ↩

  6. Yes, I own Sublime Text 2. It’s the best option for Windows.  ↩

  7. See this discussion on the BBEdit groups for example. This was pretty frustrating while trying to discover the proper way to phrase the script.  ↩


7
Jan 12

BBEdit Memory Lane

I’ve been researching some BBEdit scripts and I didn’t want to reinvent the wheel. A logical source to review is Daringfireball. It was fun looking over the old articles and seeing how BBEdit evolved and how much Gruber contributed.

Here’s a canned Google search for anyone that’s interested:

Daringfireball


5
Jan 12

New York Minute Task System

The Escapers (makers of Flux, Stuf and more) have an interesting new task management service called Instruktion. Or maybe it’s called “New York Minute”, it’s not clear to me. It is cross platform and the apps are free. It requires a $20/year membership which sounds like a good price.

It looks very nice on all of the application platforms and works offline too. I’m an OmniFocus user but I’ll keep an eye on how this evolves.


5
Jan 12

PDFPenPro 5 Sale

Looks like MacUpdate is having a sale on PDFPenPro. 50% off makes it a cool $49. It’s a great application and FAR better than Acrobat. If you have any need to edit, OCR or manipulate PDF’s this is the application to get.


10
Dec 11

Fake Is Fun

Fake[1] is so much fun. I expect to do a lot more with this. It really does make me giddy for some reason. Maybe because I’ve been doing some of this with Python scripts and it’s very difficult to do well.

Fake is like Automator for the web. But it’s better than that. It’s graphical programming for the web. It can automatically find and populate forms. It can submit logins and extract content. If you have any interest in throwing together little tricks to extract content from a site, then Fake is worth the price tag.

Here’s an example of automating the process of extracting some lorem Ipsum from Fillerama and putting it on the clipboard. To select an element, I hold down control and drag the mouse from the action in the sidebar to the form I want filled out.

 

 

The widget then provides an option to select the form value to use.

 

The last few actions submit the form and grab the specified content (also a control drag to select) an put it on the clipboard.

Of course, the macros can be as complex as needed, and execute custom JavaScript or XPath. Elements can be identified in a large number of ways and there are actions for looping and performing logical evaluations of content. Over all, Fake is a tool disguised as a toy. Much like Automator.


  1. Affiliate link


5
Dec 11

Productive Mac Bundle [Link]

This new bundle looks great. Some of the best Mac apps out there for $40. Seems like a good deal for developer and buyer.


16
Nov 11

ReshophNotes Updated

I just noticed that ResophNotes, the Simplenote client for Windows, has been updated recently. I had thought it was abandoned-ware after a long delay in patches and feature enhancements. I was wrong. ResophNotes now supports pinned notes and syncs much faster. This is the definitive Simplenote client for those of us suffering on Windows.


2
Nov 11

Against QR Codes

I don’t begrudge people using QR codes but to me, they seem like a poor solution for a real problem. We need a way for a computer to interpret analog information from the real world. QR codes just make the problem worse for me. I see them on bus stops and billboards all the time. I used to see URL’s instead. At least a URL is legible (most of the time). QR Codes are completely obscured from human interpretation. Should I point my browser at any QR code? I would not visit a completely obscured URL without knowing for sure where it would take me. A better solution would be to expand the capabilities of OCR and force our computers to interpret the information that humans are already using: written language.

I now have a number of apps on my iPhone that can effectively interpret written language, like OCRKit and Abbyy TextGrabber. In fact, the free Abbyy LinkGrabber app does a pretty good job reading links from a photo. Why not use that ability? Skip the QR codes, their an inferior crutch. Just demand better OCR apps (and support the ones that exist).


31
Oct 11

Font Sale on MacZOT

I was a big MacZOT buyer several years ago. They offered spectacular sales on good software. I’ve really preferred to stick to the app store lately, but every once in awhile they offer something unique and great. This is one of those times.

 

6200+ royalty free, commercial-use fonts for $50. There are some nice looking fonts in the collection. There’s only 8 hours left on the sale.


14
Oct 11

TieSight

Clever Mac Application to help you properly tie a Tie. $0.99 in the App Store.

I love these clever 3rd party applications.