I get asked this question a lot. It's a very reasonable question. After all, I have an iPhone app, so why shouldn't there be an Android app?

​As much as I love my smartphone (OK, OK, it's an iPhone), I kind of wish they'd never been invented. And this isn't a new feeling - it actually started more than a decade ago...

Perhaps a little background will help. I'm an optometrist, for anyone who didn't know that. While I was in optometry school a funny thing happened: A little thing called the internet started getting popular. I thought it was fascinating, and I wanted to be part of it. I started reading beginner HTML books, then programming books, database books, whatever I felt would help me make the website I had in my head. 

At the time my wife was working as an OD in a retail setting, and I was working in a clinic. I had a lot of free time on my nights and weekends, and they were all spent developing the first version of EyeDock.

​Eventually I started showing people my little creation, and the feedback I received was very rewarding. However, it wasn't long before I received an email asking "where's the Palm version?" Whoa! Palm version? I'd never considered that, but it sounded cool. However, I didn't have a Palm pilot, didn't know how to program for it, but most importantly, I had so much more I wanted to do on the website.

​As more time past, the question changed. "Are you planning on making a Windows phone version?" "When is the BlackBerry version coming out?"

android.jpg

In 2007 the iPhone came out, and it was amazing. A year later I decided it was time to get my first smartphone, and I decided it was time to make my first iPhone app. I bought a book about programming in Objective-C, read the first four chapters, and . . . was really, really confused. By this time I'd learned Javascript, PHP, Actionscript (Flash), MYSQL, dabbled in Visual BASIC. Objective-C was a whole other animal. I knew I could figure it out. After all, I've learned a lot of difficult concepts in that I initially thought were insurmountable during my collegiate career.

In 2008, my life was starting to change in many ways. Most importantly, we had a son who quickly became the light of my life. Of course, spending my entire evenings and weekend maintaining a website and developing an iPhone app wasn't going to happen anymore. Still, I kept plugging away and, it took me about 18 months, but I finally published my iPhone app in iTunes. I was very proud of it: It was the most difficult programming task I'd undertaken.

While I was working on the iPhone app I started hearing rumors of a Google phone. Android was released, and the initial reviews were that it had potential but was laggy, didn't have the apps, and lacked the fit and finish of the iPhone. We all know what happened from there. Android got better fast. It became the number one mobile platform.

By this time, I was feeling like the time I'd spent on the iPhone app had caused me to neglect the web site for far too long. In addition, the upkeep had drastically increased. I had to maintain a database for the Web site and a slightly different one for the iPhone (some day I'd like to consolidate them - wish I'd figured out a way to do that the first time around). I had support emails because passwords with certain special characters didn't work on the app for some reason. Apple introduced a new version of iOS that totally broke how I was uploading my databases. That one happened around the time my second son was born - talk about stress!

​So, where's the Android app? There really deserves to be one, I know. I'd really love to make one. I think it would be easier to create than the iPhone app: I sorta have this mobile thing figured out now, and if I could learn Objective-C I'm pretty sure I could learn Java. 

So why isn't there one? Well, it's certainly not because I have a prejudice against Android. I'm amazed at the the passion people have for their phones. You're either an iPhone fanboy or a h8ter. I can't think of anything like it. Maybe Ford vs. Chevy trucks? Nah, not even close.

As you might have guessed from the novel that this blog post has become, the issue is time. I spend my life as a father (of three great little boys now). I spend days as an optometrist. At night, after the kids get to bed, I do programming, data entry, and answer support emails. I've also done things with nearly every vacation day I've taken since 2002.

After doing this for so long I've worked out a lot of efficiencies that allow me to make great use of my time. It's helped me keep quite productive as my free time has declined. However, the thought of learning a yet another programming language and developing another app that will only further subdivide my time is, well, very intimidating.

As a consequence, I've spent the last year concentrating on the website. Soon ​I'll be releasing some new features that I'm very excited about. I'm also trying to make it more mobile accessible and have been slowly removing things like Flash. I'm hoping I can make EyeDock very functional on iPhones, Blackberries, Android phones, the new Windows phones, and whatever comes next.

I can't put into words how thankful I've been for our users over the years. EyeDock is my baby, and my #1 goal has always been to make a great resource for eye care professionals. I love building things, especially things for my fellow optometrists. That would have never been possible for all this time without the support of the people using the site.

- Todd

​PS I think there may be one other question that may need to be addressed. Why can't I hire someone to make an Android app?

First of all, I've had some troubles contracting out EyeDock work in the past. As an OD, I know exactly how I want things to work. I've had a really hard time communicating this to non-OD programmers (let's call them eye-muggles). It's usually ended up being a mess, and I've either had to 1) spend an ungodly amount of time explaining how I want things to work or 2) I've just ended up doing it myself anyway.

Secondly, I actually did contact a large company that  does app development. They actually spent a lot of time trying to talk me out of an Android app - too many different screen sizes, too much fragmentation, etc. When I persisted they quoted a fee that I was, to put it mildly, unprepared for. The website does pay its bills, but being an optometrist is primarily how I make my living. EyeDock is my passion, but I have to make practical decisions.

Posted
AuthorTodd Zarwell
2 CommentsPost a comment

If you haven't seen the ​Jonathan Dong's (wahoo ICO!) Thrift Opt Video, you really need to check it out. I haven't done a lot of video editing, but I can recognize talent and hard work when I see it.

We are the optometrists... ...let us look deeply into your eyes... Jonathan Dong, Writing/Direction/Production [ http://jonathandong.com/ ] Featuring Rich Miller and the Illinois College of Optometry c/o 2016 [ http://www.ico.edu/ ] A Student Optometry School Parody based on "Thrift Shop" by Macklemore X Ryan Lewis, dir.

One of the first comments I heard about this video was "that guy has too much time on his hands". I'm a pretty laid back guy but this sort of attitude annoys the [redacted] out of me. 

This was also one of the first comments I received when I started showing off my EyeDock Web site 10+ years ago. My skin admittedly a little thin, but it was crushing to hear a response like this after dedicating a year's worth of free time to my passion.

I think that, if someone creates something great, it should be celebrated. I don't care what it is. I don't even care if you don't like it. That fact that someone poured their heart and soul into their project deserves your respect.

And free time? Some people don't like to watch TV. Some people can't understand how anyone could spend half a day golfing. And other people like to spend their time making things

Some people might say creating a something like EyeDock and producing a hip (do the kids still say that?) music video are totally different. After all, EyeDock generates some income (enough for me to justify spending the last decade working on it, anyway). However, I would disagree. I think developing a skill is always valuable.

Take, for example, Oculus Invaders, my "video game for optometrists".​ It really serves no practical purpose. By the time I finished it I felt it'd taken up way too much of my time and, when I put it on the Web site, I only received one comment - from an angry OD complaining that it was keeping his staff from doing their jobs.  Still, making this game was very helpful for me. I learned the ins and outs of programming in Flash and it allowed me to develop many new features for EyeDock over the years.​

The bottom line is, we all have some free time (except me - I have two jobs and three little kids!)​.  We can use that time to create something of value, even if the value is that it makes someone smile or it just gives you some satisfaction.  Or, we can spend two hours a night watching TV and complain about how other people have too much time on their hands.

. . .Then again, how did he do this while at ICO?​  Why, when I was a student, I studied 23 hours a day!

Posted
AuthorTodd Zarwell

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

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

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

I was very disappointed to hear that Google Reader is being shut down on ​on July 1st of this year. RSS feeds are a great way to keep up with all your favorite blogs and news sources, and Google's product made this really easy. In fact, when I open a browser window, the second thing I open is Reader (the first being Gmail).

Sure, there are other RSS clients, but most of them use Reader as a backbone. This works well because it helps keep your feeds organized and in sync. Fortunately, it sounds like some of these third party apps are preparing for life after Google pulls the plug.

I didin't get fully immersed into RSS until a few years ago, but it sounds like there were some good RSS clients that were pretty much destroyed when Google Reader came along. Hopefully we'll see some innovation now that there's room for these apps again.

I think that, as a rule of thumb, it's good to pay for things you like. Free web services are great, but in the end it only works if companies can sell you to advertisers. In a lot of cases it ends up swashing the competition and then, if it's not profitable enough, it goes away. And consumers are left with nothing.

Posted
AuthorTodd Zarwell
CategoriesTech
Tagstech

A typical conversation with my four year old:

the boy: Daddy, can I have a snack?
me: ​But we just ate dinner. And then you had Jello!
the boy: But that was dessert. I didn't get a snack tonight!

At first I was confused, but I did a little research and learned that growing boys have an  anatomy that's a little different than the rest of us.

iphone-20130303131706-0.jpg

And they're not full unless all​ of their stomachs are full.

Posted
AuthorTodd Zarwell

Well, it's been about 10 years decided to stop reading programming books and actually make​ something. It's been an extremely fun and rewarding journey.

I wrote a little bit more about this on EyeDock.​

eyedock cake.png
Posted
AuthorTodd Zarwell