GitX: a short history
In the beginning there was GitX
I keep meeting developers who still use the old GitX developed by pieter, unaware there’s anything newer. Head’s up: it hasn’t had a new commit for 3 years.
“This fork is no longer active.” (wiki)
And it begat children
Two forks arose in its place. Both added substantial new feature sets, taking slightly different approaches.
One of these, brotherbard’s GitX, has since fallen by the wayside too; its last commit was a year and a half ago.
Whereas the other successor, German Laullon’s GitX(L) remains under very active development. This quarter alone, there have been a couple dozen commits including accepting 10 pull requests from other developers. The GitX(L) homepage currently lists 90 contributors including brotherbard himself.
This is what open source excels at. Someone abandoned a project, and others rolled with it. Consensus built up around one of the forks, and a community has sprung up to keep it thriving.
Upgrade to GitX(L), if you haven’t already. It’s gotten some really nice enhancements along the way.
And one of those begat a child too
The story doesn’t end with GitX(L) either. It’s been forked too, by a new project called GitX(R) which is focusing on
“…working with the latest tools for developing software for current Apple platforms. As such, it only supports 64-bit Intel macs, and currently deploying versions of OS X and Xcode… [W]e are prioritizing moving away from deprecated or unreliable technologies like a dependency on command-line git usage to drive GitX features; and staying up-to-date with Apple and third-party frameworks and libraries that are used.”
In practice only Lion or higher is supported (“Snow Leopard may or may not work”), plus XCode 4.3 is strongly recommended.
Some of the folks I teach or collaborate with are Snow Leopard users. So for the moment I’m sticking with GitX(L) for those brief times when we need to flip over to a GUI. But the ongoing story of GitX is good for everybody.
Pick your favorite poison. If not one of the GitX forks, goodness knows there are plenty of other options.
Keeping it simple
Applies to many things, in life as well as profession:
- Untested code isn’t done.
- Unreleased code isn’t done.
- Undocumented code isn’t done.
- Set many, small, specific goals.
- Simplicity gives you more options than complexity.
- Do something every day. Finish something every week.
- One feature finished is better than ten features planned.
I’ve kept this bit of wisdom for years. Alas, without retaining source info. My apologies to the author. If it’s yours, let me know so you can be properly cited. Thank you!
Specifying constraints will make your data happier, really
In “Five Common Rails Mistakes” Mike Perhaps reminds Rails developers to put data constraints (via migrations) into the database schema. Yes. For excellent detailed discussions of why, see:
- Should you enforce constraints at the database level as well as the application level? at Stack Overflow
- Handling Advanced Database Features with Rails chapter from Advanced Rails
Both are long, and well-worth taking the time to read thoroughly.
A common counter-argument to these is duplication. As the Advanced Rails excerpt notes, database logic and business logic are separate layers. Here are some gems to check out for DRYing up your models and schema:
Control-R to interactively search Bash history
Someone casually mentioned that Control-R impresses a lot of people. Hmm. I do not know this one….
Oh holy heck. Control-R is so bloody useful for searching Bash shell history. Look at all the keystrokes I’ve been wasting with history | bash -i whatever. Not to mention then typing the selected line’s number.
Who cares that it impresses. Productivity!
Git for engineers
Well this is an interesting approach. If you haven’t related to previous tutorials about Git, maybe Git for Engineers is what you’ve needed.
On a tangentially-related note: Cooking for Engineers. At minimum, check out “Bacon, parts 1 and 2“).
Textmate errors using rspec.tmbundle & RVM
Out of the box, rspec.tmbundle doesn’t always interact smoothly with TextMate and RVM. Here’s how to fix a few errors TextMate may generate:
/Users/your-username/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- spec/autorun (LoadError) from /Users/your-username/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /Users/your-username/Library/Application Support/TextMate/Bundles/rspec.tmbundle/Support/lib/rspec/mate.rb:43:in `rescue in ' from /Users/your-username/Library/Application Support/TextMate/Bundles/rspec.tmbundle/Support/lib/rspec/mate.rb:40:in `' from :29:in `require' from :29:in `require' from /tmp/textmate-command-12490.rb:2:in `'
rspec.tmbundle
TextMate’s rspec bundle is looking for a rspec-tm file in the project root directory, specifying which version of Rspec to be using. --rspec-version 2.9.0, for instance.
RVM
RVM needs rvm-auto-ruby, a project .rvmrc, or a wrapper. Set the .rvmrc to something like rvm use 1.9.3@this-projects-gemset, for instance. (MiniTest is fine with me just using rvm-auto-ruby, while Rspec is also needing the .rvmrc for some reason. So if you’re still getting errors, try combining solutions.)
rspec.tmbundle may also need you to set RUBYOPT to “rubygems”.
Appreciations du jour
-
Sometimes when life starts to feel vexing, I do some appreciation journaling. It’s amazing how easily my outlook can be transformed by the simple practice of asking what one thing I appreciate of that day. No matter how crudtastic the events, or how surly I’m feeling about them, there’s always something. Usually, the one cascades into many.
…grateful to have such-and-such person who let me rant about crudtastic X*Y and nodded in all the right places…grateful that it was a sunny warm day when I stepped outside this morning…grateful that someone invented crepes, or sushi, or omigod Trader Joe’s Lemon Curd…grateful to see it turns out there were multiple things today that I can be ever so grateful for…
Heck, those are just samples. Lately I could write far better lists any time of day. Lucky lady; make way.
Grateful to have learned to be more comfortable accepting others’ appreciations, and with sharing openly what I appreciate of them as friend, colleague, client, mentor, student, or educator.
Glad to have taken the plunge of moving to San Francisco. Relieved that it has so thoroughly proved to be the right decision.
Affirmed by finally getting to be among a swirl of peers, including discoveries of what wealth of opportunities arise along with them: collaborations, competitions, lively conversations, tipping each other off to new stuff, the back-and-forth about how to solve problems, etc. Heck, even pillow talk is better; yay for geek-to-geek snuggling.
Appreciative that others have been consciously making space for women — and for other mariginalized groups — to engage in our professions and lead them forward. Inspired to take part, contribute, support, exhort, high-five, keep the momentum growing. Railsbridge, Women Who Code, Black Girls Code, DevChix, CodeChix… God how I’m loving doing the volunteering. Busy busy.
Stoked about getting to poke around inside the startups and major movers that sponsor events for us. Not to mentioning hearing from the engineers who work from them, and seeing announcements that these companies are hiring like crazy.
Energized by what others are doing.
Fascinated by the tools and techniques they keep introducing. (Ahem. Feel free to raise the floodgates some. The onslaught of new-new-new-always-one-more-changeroo is how I hit Professional Overwhelm in the first place.)
Gratified by having met bigger challenges and having made bolder choices.
Joyful every time I enter my lovely new home! (Which counts as a professional gratitude, since that also is where office resides.)
Exhilarated to be bringing my disparate geekitude circles into professional cahoots.
Serene for having taken the time to re-discover what gets me out of bed in the morning. In the fast-moving current of tech life, holding still for a while is a blissful action.
There’s a lot more I could say. But bringing it to the higher-level abstractions has covered a fair amount of that territory.
Today I am also thankful that it did not rain. It counts, totally.
P.S. Belated addition! Grateful for having the most excellent neighbors. Just the kind you’d want. Not work related, you say? Pshaw. If any less awesome, I would be Internet Worker Without Internet Access. Fi-fi-fo-fum.
Apple, Ruby, RVM, and Homebrew: a slick combination, now improved.
Two welcome announcements this week:
- Apple has just released the XCode UNIX tools, including GCC, as a
standalone 171MB package for Lion users. Crucially, it includes the C headers not previously available with Kenneth Reitz’s workaround. Which should solve some problems Homebrew had been having. - As of Ruby 1.9.3-p125, MRI now has LLVM/Clang compilation support
Should I Send This Email?
Fun with useful infographics!
Wait. Company bans email => Company has 20% less email? I think the lesson here is that email volume cannot fall off without mass 3rd-party cooperation. And not feeding trolls cutting off the air to spammers
Word salad
Prepping a presentation. Wordle is so handy.
Ahem. It is also distracting as hell. Congratulations on the Grammys, Adele.
