I decided I wanted a quick easy way to keep track of my EyeDock business expenses. I don't have a lot of expenses, it's mostly just software utilities to help me work more efficiently. Accounting software can do this of course, or I could just keep a spreadsheet. However, I wanted something that would be even faster to add entries and reference, even from my phone.

I decided to just maintain a text folder in Dropbox listing my expenses. The text file could be viewed or appended to in any number of iOS text editors such as Elements or Byword

However, to make things even easier, I once again made use of the Drafts app.  Drafts allows you to quickly enter some text and append it to a Dropbox document, which will work well for our needs today.  I wrote more about the Drafts app a while back so I won't dwell on its other features here.

To make a Dropbox action, click open the app and hit the settings icon (the gear). Scroll down to and click Dropbox Actions, then click the plus sign at the top to create a new action.

 

 

Give the action a name (I called mine EyeDock expenses), tell it the path to your text file. I have an EyeDock folder in Dropbox, and I decided to nest a 2013 folder in there so I can separate my expenses each year. The actual file name is expenses, and it's a text (.txt) file.

Setting up a Dropbox action in Drafts

Now, I can open up Drafts, type the date, the payee, the expense type, and the amount. When I'm through I click the EyeDock expense action I created and my text is appended to the expenses.txt file in Dropbox.

Entering text in Drafts and selecting the EyeDock expense action 

However, this is still too much work for me (I'm lazy). I don't want to have to enter the date - my phone already knows the date, why can't it do it? I only need a few categories, and I don't want to have to type them in. This sounds like the perfect place for Textexpander. If you're unfamiliar with Textexpander, it essentially allows you to create system-wide text macros. So, if you're sick of typing in your address, you can assign a text trigger, such as ".address", and every time you type that it'll insert your address. The macros you make on the Mac can sync (via Dropbox) with your iOS device, which can come in very handy.

Textexpander got even more useful a while back when they added fill-in snippets. They describe fill in snippets like this:

You can add fill-in fields to a snippet to make it easy to create customized boilerplate text at the time you expand an abbreviation.

I made a fill in snippet to automatically enter today's date, a blank field to enter a payee, a list of expense types (software, advertising, hardware), and a blank to enter an amount. I set the trigger to be ".exp", for "expense".

It looks like this, if you're interested:

 %m/%d/%y, %filltext:name=payee%, %fillpopup:name=type:default=software:advertising:hardware: %, $%filltext:name=amount%

So, I open Drafts, type ".exp", and it immediately takes me to the Textexpander fill-in. The date is already there, I type in my payee, select the type, and enter in an amount. I hit Done and return to Drafts. I hit the EyeDock Expense Dropbox action and I'm done.

Using a fill-in form in Textexpander

The output of the Textexpander fill-in snippet in Drafts

Opening the expenses.txt file in Dropbox I can see that the text was appended to the end of my document appropriately. 

The text appended to the expenses.txt file in Dropbox

In this case I'm basically creating a no-frills ledger. I like working with a simple text file because it's easy to open, read, and append to. However, the file is essentially a comma separated volume, which means that I can at any time change the extension to .csv and open it up in a spreadsheet. This might be helpful at the end of the year if I want to quickly SUM the expenses column.

 

Next I'll show you how I enter expenses while using my laptop.

 

 

Posted
AuthorTodd Zarwell
Share

I downloaded the Drafts app to my iPhone quite a while ago, but it took me a while to get into the habit of using it. As time has passed I've started to incorporate it more and more into my workflow.

On the surface Drafts is incredibly simple. When you open the app you're presented with a blank screen that allows you to just start typing. So it's a notetaking app, you ask? Well, it can be, but it's so much more. After you've typed (or, better yet, dictated) your text, you can can take apply a large number of actions to it, such as emailing it, sending it out as a text message, a Facebook post or a Tweet, and a whole slew of other options. 

So why use Drafts as opposed to the email app, text messaging app, the Facebook app, etc.? Well, if you can make using Drafts a habit, it's very fast. When you use the same interface every time you want to enter text you become very efficient. In addition, this app presents you with a cursor and a keyboard a split second after you open it. Contrast that to the Facebook app, where you have to open the program, find the "status" button, then wait for the compose screen to pop up. This actually doesn't take that long, but I find that every app I use is set up a little differently. The "compose" buttons are in different places in my Facebook app, my email app, my text messaging app,  my Twitter client, my blogging app, etc. 

In essence, I feel that Drafts reverses my writing process. In a good way. When I have a brilliant thought, I capture it first, then send it where it needs to go. Without Drafts, I find the place where the thought needs to go, then I compose it.

It doesn't end there, though. The newest versions of Drafts added the ability to pass text on to files in Dropbox and Evernote. With these additions, and the fact that it can be heavily customized, Drafts starts to become an automation tool.  

In my next post I'll write up a little blurb about how I'm using Drafts to keep track of expenses.

Posted
AuthorTodd Zarwell
Share

As I've mentioned in previous posts I've really been trying adopt a paperless lifestyle. My Fujitsu Scansnap scanner and software like Hazel are sure making that easier.

I feel I've become very efficient at dealing with the paper that comes into my house, and whenever I get an email receipt I print to PDF and file it away. 

Many of my financial institutions have asked my if I want to be paperless. I've always said yes and, when I select that option, the stop sending me paper statements. I feel good about saving the trees, but there is a downfall: I don't have copies of these statements for myself. Sure, they're available online, but I've found I'm too lazy to undergo this process:

  1. Go to my bank's Web site
  2. Type in my username and password
  3. Navigate to the "documents" page
  4. Download the statement
  5. Repeat steps 1-4 for every IRA, student loan, college savings plan, mortgage, and car loan

In the end,​ just the process of logging in to all these sites was a chore, and I was finding myself wishing they just came in the mail so I could stick them in the scanner and be done with it.

I wanted to find some way to automate this process, at least simplify the whole ordeal of logging into 6-7 websites. I thought this might be a good job for Keyboard Maestro

​keyboard maestro icon

​Keyboard Maestro is something I'd been aware of for quite a while, but I never had a good understanding of what it actually did. In my limited understanding it was a way to create keyboard shortcuts. While I like keyboard shortcuts, I have a really tough time remembering most of them and the idea of adding more didn't sound very appealing. 

What I didn't understand is that Keyboard Maestro is a tool to create macros. Typing, clicking, opening programs and files, appending text, etc etc. You can string together multiple combinations of these things makes it a very powerful tool to automate repetitive tasks.​

​1Password logo

Of course, it wouldn't be a good idea to display all of my passwords to my financial institutions in a program like Keyboard Maestro, so I thought it would be helpful to add 1Password to the recipe. I've mentioned 1Password before, but, if you're not familiar with it, this is a great utility for managing your passwords. It allows you to use secure passwords (such as yas^hjr$@ds7) and access them with a master password. 

​Alfred icon

The last ingredient is Alfred.​ Alfred is a program launcher and so much more. I feel an app like this, or something comparable (like Launchbar or Quicksilver), is indispensable. 

The cool thing is, Alfred and 1Password work very well together.​ If you're logged into 1Password you can do things like this:

  1. Click the keyboard shortcut to open Alfred - in my case, command-space
  2. Start typing the name of a website, eg) wellsfargo
  3. Select the search result for 1Password: Wells Fargo - ​the one you want is usually the first result and you simply have to hit enter to select it.
  4. Sit back while Alfred and 1Password open your browser window, navigate to the website, enter your username and password, and log into the site.

​So, putting these things together, I created a Keyboard Maestro workflow that looks like this:

​To initiate it, I first make sure I'm logged into 1Password and then I like to open a clean browser window. Then I press the trigger hot key I assigned to this macro, control-option-command-B (B is for bank).

Keyboard Maestro starts with the first step, which is typing the control-space keys. This is my keyboard trigger to open up Alfred. On step two the text "wellsfargo" is pasted into Alfred. It is assumed that the top result will be the 1Password "open up and log into wellsfargo.com" action, so the macro will press the enter key to select it. Then, as described above, 1Password will log me into the wellsfargo.com. 

This may seem like a lot of work to log into a website, but the fact that it scales well becomes very helpful. By simply copy-and-pasting these four steps 6-7 times I can change the text in step two to all of my other financial institutions: "wells fargo dealership services", "prudential.com", "ING Direct", "student loan servicing center", etc., etc,.

I created a little pause in step 4 to give give Alfred / 1Password time to log in. The macro doesn't wait for a page to load before moving on to the next step, so I wanted to make sure it had time to load the site, enter login credentials, and hit "submit" before proceeding.

​So, now I set up a monthly reminder to download my bank statements. When it pops up, I log into 1Password and hit my keyboard trigger, then sit back and watch while I'm logged into six or seven websites. When It's done I click each tab, manually download my statement, and let hazel sort them into their appropriate folders by kind and date.

Is it perfect? No, sometimes a page doesn't load fast enough and I don't get logged in. However, in this case, all I need to do is click the 1Password extension in my browser and it logs me in.

Could this be better? Maybe. I originally created a much more involved macro that was customized for each site. It would search the page for the text, right-click it, choose "save as", navigate the finder to the appropriate folder, etc. It required a lot of precision and it also required the sites to not change their layouts. It was kind of like tumbling dominoes: Everything had to be perfect, and if one thing went wrong everything from that point onward wouldn't work. 

Some might still argue that this is too much work for what you get out of it. However, it's keeping me from putting off the task of downloading bank statements like it used to. Plus, it's nerdy, which is always a good thing.

Posted
AuthorTodd Zarwell
Share

In my last post ​I wrote about how an extremely bloated PHP log file was taking up more than it's fair share of my hard drive. I found it and deleted it, but what's to keep it from happening again? If I were ambitious I could find all the code that's writing to that file and delete it. However, I do sometimes refer to these error messages while debugging my code, and I'd rather not eliminate this information. However, when I do read this log file I'm usually looking at the most recent entries. I don't need a 6 month old records of my mistakes.

I decided to use one of my favorite utilities, Hazel.​ Again, from their home page:

Create rules to automatically keep your files organized. Hazel watches whatever folders you tell it to, automatically organizing your files according to the rules you create.

I usually use Hazel to help automate a paperless workflow, mostly following the rules outlined in David Spark's Paperless book. I think I could write a book about ways to use Hazel (there's so many possibilities!) , but today I'll just show you how I addressed the problem of the swollen log files:

Hazel rule - click for larger image

In other words, I told Hazel to watch the directory with the log files. If any file gets larger than 1GB, move it into the trash.​ Easy-peasy.

Now I can make as many coding errors as I like without worrying about this file growing to occupy 1/5 of my hard drive.​

Posted
AuthorTodd Zarwell
Share

Even though my Macbook Pro is getting a little long in the tooth, I was surprised at how much it was starting to slow down. I won't be using this computer for much longer and didn't want to invest in any hardware, so I've already ruled out increasing the RAM or the hard drive beyond the 4GB/500GB I'd upgraded to a few years back.

Beyond hardware upgrades and assuming you're not part of a botnet, one of the best things you do to improve your computer's performance is to free up some hard drive space. While investigating this I was surprised to see that the majority of my hard drive was full - I don't keep my music and movies on my hard drive and I thought I had at least 100GB free, but it turned out I had much less.

I decided I needed to clear up some space and went looking for unneeded files, preferably big ones.  I could have started browsing through my file ​system, diving into directories seeking items to purge.  However, I thought this would be a good time to fire up DaisyDisk. From their home page:

DaisyDisk scans your disks and presents their content as interactive maps where you can easily spot unusually large files and remove them to get more free space. The map gives you an overview of your data, so you always know what your hard disks are filled with.

​And that's exactly what DaisyDisk did. When I launched the app I almost immediately found a curiously huge file.

An 87 GB PHP log file. What's a PHP log file? Well, when I work on my Web site on my local machine, every time I make a programming error it records the error message in a text file. I make a lot of mistakes. In fact, I probably do 100 things wrong for every one I do right (It's a good thing I'm not writing software for the space shuttle).

Anyway, deleting this and a few movies I hadn't realized were still on my hard drive freed up nearly 100GB of space. Wahoo!​

DaisyDisk screenshot - ​Click for larger image

Posted
AuthorTodd Zarwell
Share

​I wrote about how I was enjoying the Waze GPS app a couple weeks ago.  Now that I've been using it nearly every day since then I've noticed a new feature - it learns your patterns.  There's been a few times where I've jumped in the car in the morning and Waze popped up a message saying "are you going to day care?".  Why yes, I am!  And then, after picking my kids up after work, it asked "are you going home?".  Yes again!

Posted
AuthorTodd Zarwell
TagsApps
Share

I've tried a few GPS apps on my iPhone, but​ I've always come away a little disappointed.  They're always a little more cumbersome to use than my dedicated Garmin GPS, slower to give me directions, and more likely to lose the GPS signal.  Furthermore, I use my iPhone to listen to podcasts and I get annoyed that the GPS app lady talks over what I'm listening to.  Furthermore, I sometimes have to switch apps to change to a new podcast, something I don't want to do when I'm driving.  Lastly, using the GPS is murder on your phone's battery.

The phone GPS apps do have a few advantages.  They're always up-to-date and  do a better job finding new restaurants, new roads, etc.  The user interface is usually better so it's easier to enter addresses or, even better, choose an address from amongst my contacts.  Also, there are ways I can send addresses from my computer to my phone so I don't even have to type anything. However, in my experience, the apps just didn't offer enough additional features to make me abandon my dedicated GPS.

However, a couple new apps have grabbed my attention.  One of them is Waze.  On the surface Waze works like most other GPS app: You search for or enter a location and it shows you a map and gives you visual and spoken directions.  What makes this app interesting s the fact that it uses data from all the other Waze users on the road.  It measures the speed of other cars on your route.  Even better, it allows users to report issues such as heavy traffic, accidents, and even police  (I think the spirit of this feature is to report police cars at accidents or pulled over vehicles but I'm sure people report speed traps too).  

I'd heard about Waze on a number of blogs and podcasts, although I was a little skeptical about how it would work for me.  After all, most the people I read and listent to are in large, tech savvy cities like San Francisco.   Was there going to be enough users in Madison WI to get the advantages of crowdsourcing?  I'm please to say that every time I fire it up it reports at least 45 people in the area using Waze.  That's proven to be very adequate: It's done a very good job of driving conditions on my commute to work.  And, when I encounter something unreported, I've made an effort to contribute to the cause and be the reporter (It's worth mentioning that Waze does a good job making this hands-free).

Here's a few screenshots.  I'd wish I'd gotten one of the alert telling me a stopped train was blocking my drive downtown...

The other app I've been liking is Twist.  It's not really a traditional GPS app.  It does give you an ETA and shows you a map of where you're going, but not in a way that's going to make you choose it over another app or a dedicated GPS.  No, the real purpose of Twist is to let other people know​ when you're going to arrive.  

Consider this : We take my kids to visit grandma and grandpa pretty often.  They only live 45 minutes away, so we make plans to get together on a lot of weekends.  We never set a real concrete time that we're coming over, and our time of departure is unpredictable due to the fact that two and four year olds lack punctuality.  Still, we'd like to give my parents a sense of when we'll arrive.  

That's where Twist comes in.  To "make a new Twist"​, you simply enter your destination (mom's house) and who you want to notify (mom).  Then, when you leave your house the GPS senses you're on the move and sends mom a text message, something like "Todd just left.  His ETA is 10:45 AM".   When you get close to your destination it sends another text message saying "Todd is about to arrive".  If you stop to get the kids some french fries en route and it takes too long another text message will be sent alerting mom of the delay.

Twist seems works best for trips that:

  1. You make on a regular basis
  2. Someone is waiting for you at your destination

I made one like the above example​, and I made one for the days where my wife gets home before me..   That way, when I leave work and pick up the kids from daycare, I can let her know I'm on the way home and when I'll arrive.  That way I know I'll have a hot gourmet meal just waiting for me when I arrive [insert wife's laugh here].

Posted
AuthorTodd Zarwell
CategoriesTech
TagsApps
Share

When my my workday is over and my kids go to bed I try to get a little exercise and then sit down at the kitchen table and start working on my laptop. Most of the time I'm either entering data or programming. Both of these tasks are cumbersome because I need to use a lot of different applications simultaneously. For example, while entering data I usually toggle between:

  • A browser window open to www.eyedock.com
  • A browser tab open to EyeDock's mySQL database admin page
  • A browser tab or a PDF reader open to the data that I'm referring to 
  • An FTP client
  • An image editor
  • A file manager

When programming I'm usually using:

  • Whichever app I'm using to write my code (Flash, Xcode, or Textmate)
  • An image editor 
  • A browser to Google solutions to all the problems I run into
  • The programming language documentation
  • And, sometimes, another program to build my user interface (Interface builder)

I spend WAY too much time switching between tabs and windows. In addition, all the typing is starting to cause me some wrist and hand pain: I think the biggest problem is all the awkward motions on the laptop track pad trying to open, close, and shift windows, files, and palettes around.

DisplayPad iconI've started thinking I'd be much better off with a large second monitor. The problem is I don't really have an office area in my house. I do 95% of my work on the kitchen table, and about 5% in coffee shops. We're trying to buy a bigger house, so maybe I will have an office area at some point, but right now the priority is to give the kids their own rooms. And it's hard to justify buying a large second monitor when there's the uncertainty of how much we'll be spending on our mortgage in the near future.

I came across a very workable alternative after reading a blog post about an iPad app called DisplayPad. This app lets you use your iPad as an external monitor. All you have to do is download the app onto your iPad and put a free program on your Mac (downloaded from their website). In your Mac's System Preferences -> Displays you can tell the computer where the iPad is positioned in relation to you computer so you can easily move your cursor between them.System Preferences - > Displays

It may not seem like a 9.7" iPad screen would make that much difference, but it does. It actually increases my usable desktop area by about 50% (with a 15" MacBook Pro), which is significant.

It's not a perfect solution, though. The resolution isn't quite as sharp as my laptop monitor, and dragging windows or images around isn't very smooth. However, when I reserve my primary tasks for the main computer and delegate the iPad screen as a place to hold more static documents it works in a very satisfactory way.

I spent a big chunk of the day yesterday with my dual monitor system, and I found my workflow to be much smoother and efficient. Plus I only had to spend $2.99, and my second display is small enough that I could even take it with me to a coffee shop or on a trip if I needed to. It's a cheap solution . . . if you happen to have an iPad.

Dual displays in action

Posted
AuthorTodd Zarwell
TagsApps
Share