2
Why your password can’t have symbols—or be longer than 16 characters | Ars Technica
Why your password can’t have symbols—or be longer than 16 characters | Ars Technica: “The password creation process on different websites can be a bit like visiting foreign countries with unfamiliar social customs.”
(Via. @lars on App.net)
When I was young, I remembered everything. Now I am old, and I remember nothing. And I’ve surrendered to password madness. I’ve stored all my passwords in safe since 2007, with my encrypted data file in Dropbox, so I can access it from any machine that runs Ruby. This way, I have to remember only one password, which is long and complex and just onerous enough to type that I feel safe without feeling overburdened.
Unfortunately, neither my iPhone nor my iPad can run safe, so I bought 1Password and supplement my safe usage with that. I even use the same onerous password for 1Password that I use for safe, but for some inexplicable reason I used a different password on my iPhone that I no longer remember, so it’s useless to me. I should delete everything and reload, but I’m ashamed to admit I did that once before.
For the website I work on for my employment, we have several different environments with different user IDs and passwords that expire more rapidly than I can type, so I just reset them everytime I log in and mash the keyboard like a Whack-A-Mole for my new passwords that I’ll never remember.
Our new lunchroom food system got smart, though–the automated checkout system eschews passwords for thumb scans. No passwords stand between me and Coke Zero!
17
How Steve Ballmer Predicted the Downfall of Mac OS X
Back in the year 2000, Steve Ballmer danced, as they say, like a Monkey Boy, chanting, “Developers! Developers! Developers!” in an infinite loop. Sweating like an offensive tackle in August two-a-days, he hopped and pranced and bellowed his devotion to developers. He may have his struggles running a business, but Ballmer understands how important developers are to a platform, and that devotion, along with the ever-excellent Visual Studio (yes, I said that without sarcasm), keeps the Windows developer stable stocked with thoroughbreds.
Switch gears. The reasons for Apple’s rebirth are often recounted as:
- Steve Jobs’s genius
- The iPod
- The iPad
- Jony Ive’s brilliant design
- Apple’s insistence on simplicity
These reasons have all played a part, no doubt, in Apple’s ridiculous ascent, but absent from this list are Ruby on Rails and TextMate, which either run best (Ruby on Rails) or only (TextMate) on Mac OS X. Apple owes more to Rails and TextMate than anyone lets on. Why? Back up a few years, to around 2005. Just as enterprise developers everywhere began to tire of XML and WSDLs and EJBs and SOAP incompatibilities and JSP syntax and all the other stuff that Java Enterprise Edition uses to yank data from a database and show it on a web page, Rails poked its head out of 37signals and started a cult. People called it magic and mind-reading and crowed about its convention over configuration. Oh, it was so easy to create web apps with, and then oh, it was so easy to write them in TextMate! This fledging cult pushed its dogma until developers everywhere dumped Windows and Dell and even Linux and started tucking MacBook Pros into their backpacks. Speakers at developer conferences soon delivered their talks to a sea of shining silver rectangles sporting glowing Apple logos. Developers had moved to Mac OS X.
All these Rails developers on MacBook Pros needed tools, and discovered they could build them. Xcode was a download away, and you could write shiny apps, so why not? Then the iPhone came and the iPhone SDK that changed its name to the iOS SDK when it married the iPad, and the Xcode acolytes stuffed the iOS App Store full of apps. Some people prospered, most got by, but consumers bought iPhones and iPads faster than Apple could produce them because they could always find “an app for that.” After all, people don’t run OSes; they run apps, and Apple has a bunch of ‘em.
Switch gears again. TUAW reports today that hotkey programs have until month’s end to enter the Mac App Store. After that, it seems that Apple will graciously allow grandfathered apps to have their bugs fixed, but can’t accrete any new features (hotkey-related or otherwise). The reports are a little fuzzy, and may pan out to be inaccurate, but they’re alarming. Why? Because developers love keyboards. They love automation. They drift to the mouse as little as they can get away with, express undying love for their keyboards, and never perform manual tasks that they can write a script for. And Apple is telling them they care more about protecting people that don’t know how to protect themselves from random downloads and phishing scams and trojan links. And someday soon they may rip Alfred from us and make us gesture our way to Launchpad and click on apps to launch them and then we’ll really have some gestures for Apple.
Note to Apple: don’t do this. Where developers go, consumers eventually follow. Right now you have the developers. Don’t push us away. And don’t think we wouldn’t dream of going elsewhere. As long as we have bash, vim, and a compiler, we’re pretty mobile. And we hate the mouse–and your mice suck anyway.
1
Great time to be a developer–quick code solutions
I am in awe of the free tools available to software developers today. It is amazing how fast, and cheaply, you can turn an idea into productive code. I was so pumped by a recent experience, I decided to share.
(Via Los Techies)
Interesting view into how geeks solve problems. Many people would just drive the route one morning beforehand. Most people would just guess and rely on “new guy” forgiveness for any tardiness. And most people have no ability to solve the problem the way Joshua Flanagan did–in hours, weeks, months, or a lifetime.
8
Using OmniAuth 0.3.0.rc1 with Rails 3.1
I’m posting this so others can avoid the frustration I felt yesterday trying to use OmniAuth in a Rails 3.1 application. After adding this to my Gemfile:
gem "omniauth", :git => "git://github.com/intridea/omniauth.git"
and running:
bundle install
I got this gem installed:
* omniauth (1.0.0.alpha ba4bd3e)
When I tried running anything, however, such as rails generate . . . or rake spec, I’d get a stack trace complaining about:
uninitialized constant OmniAuth::Builder
I googled and tried various things, coming to understand that I really wanted omniauth 0.3.0.rc1 but realizing I had no clue how to get it until I found this: http://collectiveidea.com/blog/archives/2010/09/28/gemfiles-and-branches/. So I added this to my Gemfile:
gem "omniauth", ">= 0.3.0.rc1", :git => "git://github.com/intridea/omniauth.git", :branch => "0-3-stable"
and everything worked.
25
Red Dirt Ruby Conf and Using Core Data with MacRuby
I just got back from Red Dirt Ruby Conf in Norman, OK. The accommodations were terrific — The Embassy Suites in Norman looks new, and they served us free omelets-to-order every morning. The food was good, the Wi-Fi was blazing, and every table in every conference room had power outlets for every chair. The swag table had plenty for all, and I scored a black Stack Overflow T and a Red Dirt Ruby Conf Macbook Pro cover from Sticker Mule that dresses up my work laptop nicely:

I had submitted a proposal to speak at this conference on Core Data and MacRuby that wasn’t selected. Last Sunday, however, one of the presenters had to drop out, so I received an email asking if I’d be willing to speak after all. I quickly accepted, then got to work preparing a presentation. I decided to help ease the transition of Rails developers to desktop development using Core Data and MacRuby by drawing parallels between Rails/ActiveRecord and Core Data. I had seen the frustration of a coworker who was well-versed in Rails, trying to work with Core Data. The parallels I drew were:
- database.yml = persistent store coordinator
- migrations = managed object model
- ActiveRecord = managed object context
The presentation (Keynote format) and sample project are available on github at http://github.com/hoop33/CoreDataWithMacRuby.
At Red Dirt, I also snagged some new stickers for my personal laptop, which looks more like a college student’s steamer trunk every day:

I renewed some friendships, met some new folks, learned about CoffeeScript and JRuby and Rubinius and DataMapper and Fat Models and OmniAuth — lots of things to follow up on. I love the single-track format, which I guess appeases loss avoidance, and the day-of-speakers plus day-of-training format worked well. Looking forward to Red Dirt Ruby Conf the Third!
17
Distance of Time in Words for Objective-C
Rails developers have the coolest tools, from migrations RVM to Bundler to Pow. One cool Rails tool lets you explain approximately how long ago something happened in words, with phrases such as:
- Less than 20 seconds ago
- About 3 minutes ago
- Over 3 years ago
You find this magic in date_helper.rb, in the distance_of_time_in_words method. I’m working on an iOS app that synchronizes with a Rails app that uses distance_of_time_in_words to describe how long ago certain events occurred, and I needed to mimic the web app’s description of how long ago things happened. I could have added the description to the JSON that the Rails app returns, but not only did that seem silly, but also it meant that iOS users would have to re-sync to get updated descriptions of how long ago things happened. Better to implement a “distance of time in words” capability for iOS.
After Google didn’t net me what I wanted, I decided to implement this in Objective-C, translating from the Ruby code. I opted to make this a category on NSDate, so you could get the distance of time in words using something like this:
NSDate *myDate; ... // Code that fills myDate ... NSString *words = [myDate distanceOfTimeInWords];
Along the way, I learned that Objective-C (and C) support ranges in switch statements, so I can do things like the Ruby code does, like this:
case 2 ... 44: number = minutes; measure = Minutes; break;
Notice the three dots between 2 and 44.
The result? A category called NSDate+Formatting, available on github at:
https://github.com/hoop33/DistanceOfTimeInWords
That repository includes not only the NSDate+Formatting category, but also a sample project that uses it. The sample project shows a date picker and a label. Spin the date picker to select a date, and the label shows the distance of time in words between now and the selected date. You can also toggle the date picker among Time, Date, and Date & Time modes. Finally, you click a button to reset the date picker to now. Here are some screenshots:



The code uses localized strings, so should be simple to localize into any language. It currently has both english and Spanish translations. I left Chile over 20 years ago, so feel free to correct my Spanish!
I’ve released this project under the Apache 2.0 license, which I think means that you can use it in your personal and commercial projects, and don’t have to put my name in the About box or strew petals in my path. Someone correct me if I’m wrong.
9
10 Must-Install Mac Applications
I’m a software developer, so bear in mind that my Mac is for working and coding (mostly Objective-C, Java, and Ruby). You won’t find apps for ripping DVDs, viewing videos, or playing Canasta. These are the apps I use over and over to get my job done. Note that I assume a Mac OS X installation, so I didn’t include Safari or Xcode — you’d better have those already installed.
- Visor
Because it’s all about the command line. Having a terminal window a keystroke away, in a predictable screen location, makes the world a better place. - MacVim
The programming world, it seems, is rediscovering the power of vi — and vim really does improve on vi. - Git
If it ain’t in source control, it doesn’t exist. - DropBox
Perfect for backup and for synchronizing files across machines. My dot files, e-books, and documents are always available, whichever machine I’m on. - Alfred
The new kid on the launcher block is my favorite. Be sure to check out the Powerpack as well — worth the money, and I like where they’re going. - Evernote
Best junk-drawer note-taking app keeps it all in the cloud so I get my notes on all my devices. - Kiwi
I get most of my tech news from Twitter, and Kiwi works great. Clean UI, themeable, supports multiple accounts . . . now, if they would just make mouse-less tweeting a reality, it would be perfect. - TotalFinder
The second app from binaryage; no, I don’t know these people. A much-improved finder that gives you tabs, dual windows, folders on top, hidden files. Excellent. - Pixelmator
If I were a graphic artist or a true designer, I’m sure I’d be neck-deep in Adobe’s suite. I’m not, so I’m not. I can get all my graphics needs done in Pixelmator. I dropped GIMP for this. - Eclipse
Java pays my bills. You can’t propose any good reason to develop in a compiled language outside an IDE that compiles on save. Eclipse is still king.
I had to leave off some good stuff (Chrome? Balsamiq Mockups? Transmit? Hyperspaces?) to narrow the list to 10, and I’m sure you’re shocked that I left Tool X or App Y off the list. Get outraged, and let me know in the comments.
1
How to Set Up a New MacBook Pro for Development
I recently purchased a MacBook Pro and got a new MacBook Pro at work, so I had two machines to set up. Here are the steps I went through to make these machines tuned for developing iOS applications as well as doing Java, Ruby, and Groovy development. I’d love to hear feedback on things I missed, things you don’t agree with, or things that didn’t work for you.
Special thanks to Rogelio Samour, aka Ro, (@therubymug) and the rest of the folks at Hashrocket for sharing their setup steps for setting up a MacBook Pro for Rails development.
Starting Out — Basic Configuration
These are the basic items that, regardless of the languages you plan to develop in, you should do.
- Boot the machine, create your user, and use Software Update to download and install all updates.
- Go to System Preferences –> Keyboard, and on the Keyboard tab slide Key Repeat Rate all the way to the right. Check the box for “Use all F1, F2 . . . .” Click the Modifier Keys button and change Caps Lock Key to Control. Select the Keyboard Shortcuts tab and select “All controls” for Full Keyboard Access.
- In System Preferences –> Expose & Spaces –> Spaces, check Enable Spaces and Show Spaces in menu bar. Reconfigure for 1 row, 4 columns.
- Install TextExpander. Launch it and go to File –> Add Predefined Group and choose CSS Snippets, HTML snippets, and TIDBITS Autocorrect Dictionary.
- Drag everything you can out of the Dock, make it really small, auto-hide it, and put it on the left side.
Launcher
You need a launcher. I used to use QuickSilver, and I always read that you can do so many powerful things with it beyond simply launching applications. I always meant to learn what those things are, but I never have and realize that I never will. I’ve been tempted to buy LaunchBar or F10 Launch Studio, but I fear I’d never learn the extra features and just use these apps to launch applications, and I can do that for free with Namely. Install it and go into its settings to map it to Ctrl+J.
Terminal
I used to use iTerm for its tabbed windows, but OS X’s Terminal finally got tabs. You want a terminal window at your fingertips at all times, though, so install Visor, which is a dropdown, Quake-style terminal. Follow the installation instructions, installing SIMBL first then dropping the Visor bundle in the appropriate directory, and then map Visor to Ctrl+L and select its “Copy on Select” checkbox. Launch System Preferences –> Accounts –> (Your Account) –> Login Items and add Namely and Terminal. (Note: Namely has a preference to Open on Login, but that didn’t work for me).
File Backup and Sharing
Install Dropbox and either log in or register for an account. Be sure to enable Growl notifications during the installation.
Window Management
The Rocketeers at Hashrocket use SizeUp to manage windows via the keyboard, and the same company offers a mouse-driven version called Cinch. I like Divvy, though. Install it, map it to Ctrl+K, and select to start at login. Create 4 shortcuts: Left 50% (A), Right 50% (S), Top 50% (D), and Bottom 50% (F).
General Development + iOS and Mac Development
- Create a directory in your home folder called Development. This is where all your development projects will live.
- Go to Finder and drag the Development and Downloads folders to the left side under Places.
- Install the latest Xcode. As of this writing, that’s Xcode 3, and Xcode 4 is available as a Developer Preview. Install both. Note: you must install Xcode, even if you don’t plan to write iOS or Mac apps, so that you can compile things like rubygems.
- Install Accessorizer and configure it according to its quick-start guide.
Text Editor
No direction here will spark more controversy than this one, so install the editor you like best. If you’re smart, though, you’ll install MacVim, and not just because it’s free (I’ve bought licenses to and used BBEdit and TextMate). Wait to configure MacVim in the Ruby + Dotfiles section.
Ruby + Dotfiles (Don’t Skip!)
Rogelio Samour from Hashrocket has written an excellent blog post on how to set up a Ruby and Rails development environment at http://blog.therubymug.com/blog/2010/05/20/the-install-osx.html. The instructions include steps specific to ruby and rails, but also steps for setting up your editor and dotfiles. Follow his instructions and ignore the ruby stuff if you don’t do ruby (though you should!). Note: here are my deviations from that page:
- Didn’t install SizeUp (I like Divvy better) or Teleport (I’m not pair programming in a shared-computer environment).
- Didn’t use Homebrew to install MacVim, but instead downloaded and installed from http://code.google.com/p/macvim/. I put the MacVim bundle in /Applications and the mvim command line in /usr/local/bin.
- Didn’t install RubyCocoa–I don’t use Rspactor, and I read that the latest version doesn’t require it anyway.
- Didn’t install Growl–Dropbox already did.
- Unless Ro has fixed it, he has a line that says to type
rvm gemset use 1.8.7@global. That gives you an error. Instead, typervm use 1.8.7@global. Thanks to Big Tiger (@jremsikjr) and Sandro (@sandrot) for figuring this out for me!
After you finish Ro’s instructions, do the following:
- Run this: echo ‘:colorscheme vividchalk’ > ~/.gvimrc
- Put this in ~/.vimrc.local:
set tabstop=2 set smarttab set shiftwidth=2 set autoindent set expandtab set number set directory=/tmp set laststatus=2 set scrolloff=3 set guioptions-=r set guioptions-=T
Some of these are redundant with the Hashrocket settings, but in case they change theirs . . . .
- Put this in ~/.gitconfig:
[push] default = current [user] name = (Your Name) email = (Your Email Address) [color] diff = auto status = auto branch = auto interactive = auto [core] excludesfile = /Users/(Your User ID)/.gitignore
Replace the parenthetical expressions appropriately
- Put this in ~/.gitignore:
.DS_Store *.swp
Java
Install Eclipse Helios from http://eclipse.org. It’s still the best Java IDE out there.
Groovy/Grails
Follow these steps to install Groovy and Grails development tools:
export GROOVY_HOME=/opt/groovy export GRAILS_HOME=/opt/grails export PATH=$PATH:$GROOVY_HOME/bin
Browsers
If you followed Ro’s instructions above, you’ve already installed Chrome and Firefox. If not, install them now. Launch Firefox and install the following extensions:
- Firebug
- Live HTTP headers
- Omnibar
- View Source Chart
- Web Developer
Open Safari preferences, go to the Tabs tab, and for “Open pages in tabs instead of windows” select Automatically.
Notes
I’ve used Soho Notes and DEVONthink, but Evernote works across platforms, including iPhone and iPad, and keeps all the notes in sync. You can also access your notes from a browser. Anywhere you go, you can take and access your notes.
I tried not to use TweetDeck so I wouldn’t have to install Adobe AIR, but Balsamiq Mockups (below) requires AIR and I can’t find a Twitter client I like better than TweetDeck anyway. After you install TweetDeck, though, go into its preferences and turn off notifications (both detail and summary). You have work to do.
Instant Messaging
I used to use Adium, but iChat is already installed on your Mac and supports Google Talk, Facebook (through Jabber), and any other Jabber services. Configure iChat but be sure to turn off the sounds for buddies logging on or off.
Finder Replacement
I know of no reasonable competition to Path Finder. Install it and turn on its dual panes.
FTP
Cyberduck is free, as is Fugu, but Transmit is worth the money.
Graphics
If you’re a designer, you’ll purchase and install the Adobe Creative Suite. If not, you probably shouldn’t spend the money. Go with GIMP and Inkscape.
Mockups
Install Balsamiq Mockups for doing mockups of web pages, client apps, iPhone apps, iOS apps, or whatever you need to mock up. Money well spent.
Screen Captures
Mac OS X comes with built-in screen capture capability, but Snapz Pro X does so much more, including video capture.
Blogging
I like to use a desktop client for blogging — it makes me feel safer, as I’ve lost plenty of text in my time to fickle web pages. I really can’t tell a difference between MarsEdit and ecto, at least the way I use them, so I went with ecto because it’s cheaper.
Office
I’m sure OpenOffice is sufficient for most developers, but I have to use certain Word templates for work and writing, and create PowerPoint presentations for external consumption, that it’s not worth fighting any inconsistencies. Besides, I need Entourage for work. The work computer got MS Office Professional and my personal computer got MS Office Home. For the personal computer, I also had iWork pre-installed. Consider it my mini-protest. I’ll probably end up installing OpenOffice as well, in case someone sends me any .odt files (I don’t think Word can read those yet), but I’m holding off for awhile.
Utility
Install AppZapper so you don’t litter your disk with unused .plist files.
Passwords
I’ve used several password managers, but I figured out some time ago that I want a command line tool so I wrote one in Ruby. To install, press Ctrl+L to drop down Visor and type:
- rvm use 1.8.7@global
- gem install safe
- echo ‘export SAFE_DIR=~/Dropbox’ >> ~/.bashrc.local
Note: when I ran this on one machine, gem install complained that it couldn’t find the crypt gem. I ran gem install crypt and then gem install safe. On the other machine, gem install safe worked fine. YMMV.
You can read about safe, including how to use it, at http://grailbox.com/safe/. It’s beta software, use at your own risk, etc. I’ve been using it since 2007, though. Note that putting your safe file on Dropbox lets you run safe from all your machines, and it backs up (and versions) your safe file.
Web Site Development
I’ve looked at Coda, and I got a license to Espresso through one of the MacHeist deals, but I really haven’t figured out when I’ll use these. I want to, though, so my one concession to installing software on these machines that I don’t really use was Espresso. I’m going to make myself use it, and maybe then I’ll see the value.
What Did I Leave Out?
I’m such a software junkie that I install far more software than I use, so I disciplined myself to install only software that I’m currently using. Some software just barely missed the cut:
Conclusion
I’m still on week 1 of using these machines, and I’m sure I’ve missed plenty. These setup instructions, however, provide a rock-solid working environment. You may disagree with some of my choices — in fact, I hope you do, so I can find more software that other people are using to solve real problems. Don’t bother, though, to try to talk me into Emacs
Update: 9/4/2010
I’ve added the following software this past week:
- Hyperspaces, which allows you to label and put different pictures on each of your spaces.
- OmniGraffle Professional for diagramming and interoperability with Visio.
- git-flow, the plugin to help with using Vincent Driessen’s git branching model.
- git-flow-completion — bash completion for git-flow.
- The NERD tree for vim. To install:
cd ~/.vimbundles git clone git://github.com/scrooloose/nerdtree.git
Thanks to Adam Lowe’s vim setup post (@adam_lowe).
Update: 9/6/2010
I’ve added some more software:
- I had some EPS files that I needed to resize and export to PNG. Inkscape, GIMP, and Preview proved inadequate, so I installed Pixelmator, which worked perfectly.
- I remembered DiffMerge from SourceGear. I always pay attention to what Eric Sink is up to, because he’s both bright and funny, so I installed that as well.
Update: 9/21/2010
After reading this post on vim configuration, I can’t believe I’ve been navigating split windows with
App.net
Recent Tweets
- Once people get your point, shut up.
- RT @rbazinet: This is awesome -You call yourself a programmer? Well then, use a REAL programmer's keyboard: t.co/YO5OsgYP8B (via @an…
- RT @qrush: My guess is 2 years for Tumblr to get shuttered. One year to get renamed into Yahoo! Tumbles
Follow @hoop33 on twitter.
What I’m Writing
Blogroll
Archives
- May 2013 (3)
- April 2013 (6)
- February 2013 (1)
- January 2013 (1)
- November 2012 (6)
- September 2012 (1)
- August 2012 (6)
- July 2012 (10)
- June 2012 (4)
- May 2012 (7)
- April 2012 (4)
- March 2012 (8)
- February 2012 (7)
- January 2012 (7)
- December 2011 (1)
- November 2011 (1)
- September 2011 (4)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (4)
- April 2011 (2)
- February 2011 (1)
- January 2011 (1)
- December 2010 (3)
- November 2010 (3)
- October 2010 (4)
- September 2010 (6)
- August 2010 (96)


