Vim University

Friday, 17 February 2012

I just stumbled across a fairly new site called Vim University. Like Vimcasts it looks like a good resource for Vim tips and tricks.

What I don’t necessarily like is the old-standard Learning Vim is going to be horrible for a while but you’ve just got to grin and bear it advice given in the Surviving Your First Week In Vim post:

The first hundred vim commands you execute will be your most painful, so get through them as quickly as possible. Don’t leave vim except in for major emergencies.

And:

After just three weeks, most people are significantly faster than they were in their old editor. Don’t put off learning this awesome tool any longer.

Like Yehuda Katz this type of advice is exactly why I could never jump into Vim. In the real world, you need to get stuff done and three weeks is a really long time to be fighting with a new tool. Inevitably I’d give up, frustrated and discouraged, and swear to never try learning Vim again.

Eventually I did learn Vim, but for me the sticking point was when I started using Janus which essentially makes Vim look and act like TextMate out-of-the-box. Eventually I started exploring more of the power that Vim has to offer, but I was able to get comfortable using Vim as my everyday editor quickly and grow into using more powerful features as time went on.


Fountain: Markdown for Screenwriting

Friday, 17 February 2012

Fountain:

Fountain is a simple markup syntax for writing, editing and sharing screenplays in plain, human-readable text. Fountain allows you to work on your screenplay anywhere, on any computer or tablet, using any software that edits text files.

Taking its cues from John Gruber’s Markdown, Fountain files are eminently readable. When special syntax is required, it is straightforward and intuitive.

Though I’m no screenwriter, I could have used something like this while working on a script for a friend’s Kickstarter campaign video.


Understanding the Git Workflow

Friday, 17 February 2012

I’ve used several version control systems over the years: SVN, Mercurial, Bazaar and even Perforce. (Shudder.) Usually I’d have to learn whatever system was already in place before I was brought into a project. For the most part I would only learn what was necessary to get work done with the tool. More recently though, I’ve been using and really digging into Git.

I came across Benjamin Sandofsky’s article Understanding Git Workflow and it blew my mind a lil’ bit:

In a perfect world, every change in your revision history is succinct and stable. There are no checkpoint commits that create line noise. There are no giant, 10,000 line commits. A clean history makes it easy to revert changes or cherry-pick them between branches. A clean history is easy to later inspect and analyze. However, maintaining a clean history would mean waiting to check in changes until they’re perfect.

[…]

Git is revolutionary because it gives you the best of both worlds. You can regularly check in changes while prototyping a solution but deliver a clean history when you’re finished. When this is your goal, Git’s defaults make a lot more sense.

I was intrigued because he very accurately describes the Git workflow I use (and worse yet, the one I’m used to) and explains all its warts. He then explains the new-to-me intended workflow:

  1. Create a private branch off a public branch.
  2. Regularly commit your work to this private branch.
  3. Once your code is perfect, clean up its history.
  4. Merge the cleaned-up branch back into the public branch.

It’s step 3 that I was missing. I guess coming from an SVN background, rewriting history seems a bit taboo to me. He shows some great, practical examples in the “Guidelines and Examples” section including how to use Git’s powerful interactive rebase mode.


Making Rounded Rectangles Look Great

Friday, 17 February 2012

Mike Rundle on designing rounded rectangles:

If you really think about it, most interfaces (especially for iOS apps) use tons of rounded rectangles in different shapes and sizes. Long and skinny ones with lots of shine. Squarer, flatter ones with some texture. Smaller, slightly inset ones with photos inside. The list just keeps on going.

He lists some great tips and even has some example Photoshop documents to download and check out.


iMessage Comes to the Mac

Thursday, 16 February 2012

Along with the announcement of the next version of OS X (dubbed Mountain Lion) Apple has posted a beta of the new Messages app that will replace iChat:

  • Send unlimited iMessages to any Mac, iPad, iPhone, or iPod touch.

  • Start an iMessage conversation on your Mac and continue it on your iPad, iPhone, or iPod touch.

  • Send photos, videos, attachments, contacts, locations, and more.

  • Launch a FaceTime video call and bring the conversation face-to-face.

  • Messages supports iMessage, AIM, Yahoo!, Google Talk, and Jabber accounts.

I’ve been looking forward to this type of integration with the Mac since iMessage was first announced.


Zach Holman: Scaling GitHub

Wednesday, 01 February 2012

Zach Holman on Scaling GitHub:

A month after launching, GitHub hosted one thousand repositories. Three years later, we host over three million. In the same time we’ve gone from one thousand users to over a million.

An interesting look at the technical and organizational practices that GitHub uses to keep their team lean, happy and productive.


Magnus: Ten One Design's New iPad Stand

Wednesday, 01 February 2012

Magnus iPad Stand

I love the minimalist design of Ten One Design’s new Magnus iPad stand:

Magnus is first machine-crafted from pure aluminum and then hand-finished using the latest manufacturing techniques. After that, customized magnets are installed into the base, and rubberized feet are fitted to the bottom surface.

Unfortunately it only supports landscape mode since it leverages the iPad’s own built-in magnets.


How To Work From Home Like You Mean It

Friday, 13 January 2012

Kevin Purdy:

Dressing for work and “arriving” on time, eating lunch on a rigid schedule, shaving, brushing, and so on seems pointless at first. But not doing these basic preparations is the start of a steep, Teflon-coated slope to all kinds of other transgressions. If you’re not dressed well enough to greet the UPS delivery person, you’re giving yourself license to hide. If you’re hiding, then you imagine nobody can see Netflix open on your second monitor.

Telecommuting sometimes feels like it’s equal parts blessing and curse. On one hand you have total freedom. On the other hand, you have total freedom.

I had been working for myself for many years before taking an actual office job. (You know, the kind you have to get up and drive to.) The lack of freedom was a big shock at first but it taught me that often productivity and structure go hand-in-hand. After leaving that job and going back to working for myself I found that I craved a structured schedule. Yes, it helps me be productive during work hours, but another great — even if unanticipated — outcome is that it helps me define boundaries for time I shouldn’t be working.


Learn To Speak Vim

Friday, 30 December 2011

I’m a relatively new convert to Vim having only made the switch from TextMate about six months ago. This post by Yan Pritzker would have likely saved me some trouble in those first frustrating weeks:

Using vim is like talking to your editor in ‘verb modifier object’ sentences, turned into acronyms

  • learn some verbs: v (visual), c (change), d (delete), y (yank/copy). these are the most important. there are others
  • learn some modifiers: i (inside), a (around), t (till..finds a character), f (find..like till except including the char), / (search..find a string/regex)
  • learn some text objects: w (word), s (sentence) p (paragraph) b (block/parentheses), t (tag, works for html/xml) there are others

It’s a great primer if you’re considering making the switch.

Also, be sure to check out Janus if you’re looking to smooth the transition to Vim from another editor (like TextMate). Janus is a Vim distribution that includes some sensible default plugins and key bindings so Vim won’t drive you crazy while you’re trying to get your bearings.


Moving to Jekyll

Thursday, 29 December 2011

After battling with WordPress for years I finally decided to try Jekyll. Like others who’ve made the switch, I grew tired of the poor performance, overly-complicated publishing system and constant need for management of WordPress. I found myself spending more time fiddling than writing.

When the JohnnyA WordPress Hack hit Media Temple a little over a year ago, I tried to do some damage control and repair my blog. I thought I had wiped out the hack, but over the next few months it — or something like it — would continually reappear. Eventually, I realized that I had stopped writing altogether because I was tired of dealing with it. This blog has languished since then.

With the new year approaching I figured I’d start afresh with a new blogging platform. After looking at a few alternatives, I decided on Jekyll. Jekyll bills itself as “a simple, blog aware, static site generator” and it eliminates some of my major pain points with WordPress right out of the box:

  • The generated site is just a bunch of static HTML files so it’s fast and secure.
  • Jekyll doesn’t need to be constantly updated with security patches since it’s not actually running code in production.
  • There’s no “content management” or “publishing system” to get in the way. Everything is stored as simple, editable text files.

Additionally, I had a few requirements of my own that I wanted to meet with the migration to Jekyll:

  • Use Vim (or any standard text editor) to write posts.
  • Use a Git-based workflow for managing posts and updating the blog.
  • Host it on Heroku (for free).
  • Use Compass and SASS for layout.
  • Be able to use syntax highlighting in posts (without javascript).
  • Be able to easily write from anywhere.

Each of these items is a direct result of some pain point I experienced with WordPress. My goal was not just to move off of WordPress, but to really create a better work flow that would reduce friction and in turn encourage me to write more.

I’m still polishing some rough edges, but so far I like my setup. I’m planning some follow up posts that go into more specifics, but for now I’m just enjoying being off of WordPress.