21 Feb 2013

Finite Keystrokes Before Death : Making the Most of Them

[caption id=“attachment_526” align=“alignleft” width=“300”] By: ericnvntr[/caption] The idea that we possess a finite number of keystrokes to consume before death is an ominous consideration. That’s the concept mentioned in one of RubyFreelancer’s archived shows by Eric Davis (if I remember correctly). I believe he’s quoting another person in the episode when he talks about having a finite number of keystrokes remaining. I’ve been using a text expander, i.e. snippet application, to help manage the repetitive work of typing. Common phrases or sentences that I use are added as re-usable phrases to a handy program called Dash. Dash observes when keystrokes are entered and if a trigger keyword is used, such as ‘iirc’, the program replaces that text with ‘if I recall correctly’. Dash also allows the phrase to have replaceable variables, just like you would expect fom ‘Yasnippet’ or ‘Snipmate’. As a bonus feature, Dash serves the dual purpose of being a ‘Heads Up Display’ style documentation viewer. It’s a great way to lookup STDLIB info from Ruby or CSS info. The only drawback that I’ve found is needing to manually generate Rdocs since my system settings for RVM do not install them. I accomplished this using the following script:   I’ve used the text expansion feature to save thousands of keystrokes in repetitive form entries where other automated solutions are not available. Try it out and let me know what you think in the comments or on Twitter @_ZPH. Oh yeah and map the HUD to something easy to remember like CMD-CTRL-SHIFT D. I keep all of my system-wide shortcuts on the same triple modifier chord so that they’re unlikely to overwrite standard shortcuts :). What other methods do you have for reducing repetition?

17 Feb 2013

The Value of Experienced Developers

I had the pleasure of talking today via Twitter and Skype with Wes Garrison, Founder of Databasically, one of the organizers of Ruby Midwest and all around nice guy. We met back at SteelCityRubyConf during the CodeRetreat and have been in intermittent Twitter contact since.

We talked about a project that I’m finalizing in order to pitch to my company. His feedback on the app, especially in pointing me directly to a solution for highlighting, reminded me that I need to spend more time with experienced developers. In those few minutes he pointed me to the tools that increased the value and utility of my product. Within minutes of getting off of Skype, I added the highlighting feature, tweaked the CSS, and a bit of the underlying Ruby. It’s a big improvement :).

After the Skype conversation ended, the conversation continued on Twitter with Wes pointing out that I should consider using the Decorator pattern in my Rails application. I remembered seeing Draper on Github and an hour later I had a working implementation that abstracted away some complexity from my views. Yet another point related to him having more experience than I.

I’m reminded how much easier it is to learn from people who have already walked a certain path and distilled the necessary knowledge, rather than re-inventing the wheel yourself. This isn’t to say that developers should rely on others for all their answers, but I’ve been 100% self sufficient with my trusty Google-based answers thus far. It’s time for me to better network and share knowledge.

To this end, I need to make time for remote pair programming. I met @JoelByler of LeanDog at a CodeRetreat in Cleveland earlier this year. We discussed remote pair programming for fun, but with household responsibilities, preparing a product to pitch, and longer than normal work hours it’s been tough to schedule.

But tough to schedule is no excuse. I’m getting more diligent about reducing my time consuming blog posts and external information and making a dedicated goal of increasing my productivity. Not hoaky productivity like you see blogged about on Lifehacker.com where you read about a million ways to improve productivity while accomplishing nothing in life. I’m talking serious productivity of cutting out unnecessary fluff time, idle web browsing, and conserving effort for producing things. Some of my current goals in this regard are another couple of web applications related to my industry, a series of webcasts, building a newsletter list of people interested in the theme of the screencasts and providing that set of readers with tailored articles. I’ll have a much easier time of this if my employer sees the value in the product I created and transitions me into a development role. That way the web apps can be developed during work time :) where they will also be consumed by my fellow teammates.

In closing, I’m working on things that I can control and appreciating good advice when I get it.

If you’re reading this in the Kansas City area and need help with tech stuff, Wes Garrison @ Databasically will solve your problems. Give him a ring.

If you’re in the Cleveland area or just want a good group of people to work with for your Rails application, get a hold of LeanDog. Joel Byler, Steve Jackson and the rest of the crew are a good group of folks.

16 Feb 2013

Ignoring All the Things

I found a great talk by Scott Hanselman on Vimeo about information overload and learning to ignore things. In the video he laments that more conversation is taking place in walled gardens (ie Twitter) rather than on the wide open web (ie blogs). He also summarizes what I’ve felt for a few months: * that keeping up with news and the latest things is reducing my ability to produce and innovate *.

It comes back to the concepts in this article: 500 Words before 8am. Start the day as a producer, not a consumer.

In order to work on this, I’ve set myself up with RescueTime and am tracking the amount of time spent on ‘consumptive tasks’ (no relation to romantic portrayals of consumption by Val Kilmer in ‘Tombstone’). I’m receiving pop-up warnings when I exceed a set quantity of time on reading Twitter, reading blogs, etc. I’m also looking to transition more of my consumption time to ‘curated content’ such as ‘ye old books’.

Another point that I took to heart from Scott Hanselman’s talk was about learning to use IFTTT. It’s an SF startup that makes common web tasks automatic. Think of it as a recurrent cron job for the web. Things like : ‘anytime I start a tweet, add the contained links to instapaper’, or ‘anytime I start a vimeo video, post it to twitter’. One filter that I added to help with the Ruby Rogues Parley list is ‘anytime I star a gmail message, copy the content into Evernote’… this should help easily archive good content for later viewing and recall :).

Well, that’s it for this round of production. I spent much of last night working on an internal web application for work that I plan to soon pitch to my company :). I finished the final polish on it (CSS, a little Javascript) and I must say that it feels 100% better. It’s a good reminder for me about how important the UI is for applications.