5 Simple Ways To Keep Up With The Rails Community

Update: There are some great suggestions in the comments as well.

There’s a lot going on in the world of Rails these days.  This is great for developers, but sometimes it can be difficult to keep up with all latest happenings in the community.  In addition to changes in Ruby 1.9 and Edge Rails, there’s a constant stream of news with regards to well-known Rails projects, emerging plugins and development/coding strategies.

Below are a few resources I use to stay up-to-date without experiencing information overload:

  1. RubyFlow.com - This relatively new site is a great way to quickly see daily Rails news.  It was built by Peter Cooper (author of Beginning Ruby and the blog Ruby Inside).  Anyone from the community can post links on the site, or comment on posts.  I find myself visiting here multiple times per day to get a quick sense of what’s happening and to make sure I haven’t missed any important news.
  2. GitHub - In addition to being a public git repository, GitHub has become a developer social network of sorts.  By following projects that interest you (including Rails itself), you end up with a single place to view all the commits that have happened on your projects.
  3. Twitter – For the twitter users out there, there are a few options.  First, there’s a user called rornews that you can follow, which posts links to Rails blog and job postings across the web.  You can also follow a number of members of the Rails community who are on twitter, including Obie FernandezGeoffrey Grosenbach, Ryan Bates, and why the lucky stiff (side note: anyone is welcome to follow me on twitter as well!).  Finally, you can consider using the tracking feature on twitter to follow “rails” or “ruby on rails”.  This will give you a lot of updates, but if you’re willing to sift through it you’ll probably learn about news almost as soon as it happens.
  4. Shared Feeds – I really like shared feeds (also called link blogs) as a way to see the best content filtered through a trusted source.  A few feeds to check out include Obie FernandezGeoffrey Grosenbach, and what appears to be “Matz” himself.  Or rather than following a single person, you try tracking searches for “rails” on FriendFeed or RSSmeme.
  5. Blog Suggestions – There are a whole bunch of great Rails blogs out there, but if I had to choose the top 3 they would be the official Ruby on Rails blog, The Rails Way, and Ryan’s Scraps (I find the “What’s New in Edge Rails” posts to be invaluable).

If anyone has any other suggestions, please post them in the comments!

12 Notes on Setting up Gmail IMAP with Apple Mail

Just like Ryan, I’ve been in the process of moving to Gmail to handle all my email, now that they provide IMAP access. In no particular order, here are some notes and thoughts on the process of setting up Gmail IMAP with Apple’s Mail.app:

  1. Rather than restate all the steps I took, I’ll link to this post that I found useful. In particular, configuring Gmail’s Drafts, Junk, Trash and Sent folders to match those in Mail is nice.
  2. The way Gmail implements IMAP wasn’t very intuitive to me and took some getting used to. For example, deleting a message from a mailbox doesn’t really delete it, it just removes that label (or at least that’s how it’s supposed to work; more on that later). I found this page helpful in getting used to how IMAP functions match Gmail actions.
  3. I know this has probably been discussed ad nauseum, but I wish Gmail would loose the “labels” concept and move to “folders”. While I’ve eventually gotten used to it within Gmail, the problem is only made worse with IMAP. For example, if a message has two labels, you’ll see it in two folders, which means it’ll show as two unread messages.
  4. I figured as long as I was setting all this up, I’d use Gmail to backup all my old messages, as described by Ryan. This meant copying over my old mbox files, importing them to Mail, and moving them into the appropriate folders in Gmail. It’s definitely a slow process, but you can view the progress from the Activity window (under Window -> Activity). There were a few times when the moving failed: I believe it was due to cases where messages had very large bodies. Although it failed partway through, I was able to start over without having any duplicate messages, so it looks like Gmail is smart enough not to add an exact duplicate.
  5. To help speed the process a bit, I’d recommend turning off caching while doing any importing or moving of messages. This is done under “Keep messages for offline viewing” in the Advanced tab of the Gmail Account preferences. Once everything is set how you like it, you can turn cacheing back on. For a large number of messages the caching process can also take a while.
  6. It took me a while to find a setup for my outgoing messages that works for me. In the past, I’ve had my email client set to automatically BCC myself on any emails I send. This way my messages get categorized properly, and my emails will be in the same mailbox as the rest of a thread. With Gmail, my sent messages were getting put into the Sent Mail folder in Gmail, which means I never got a chance to filter them into any labels. BCCing myself didn’t help, since Gmail already had a copy of the message in Sent Items. What I’ve done now is to remove Gmail’s Sent folder as Mail’s Sent mailbox, which means the only copy that Gmail receives is the one that gets BCCed, which means I can have it filtered however I like. Update: Turns out I was wrong on this.  Any email sent through Gmail’s SMTP will be added to “Sent Mail”, so BCCing won’t help.
  7. An unfortunate annoyance with Gmail IMAP is that unless you have a message filtered to automatically archive (in Gmail context this means moving it to “All Mail”), it’ll show up twice in Mail: once in the Inbox, and once in “All Mail”. So far I haven’t found a way to avoid this.
  8. The filters in Gmail are rather basic and limited, especially compared to Mail. For example, I don’t think there’s any way to match messages whose subjects start with a string, instead of just containing the string.
  9. Rather than set up a complex set of filters for all the email I get, I got an idea from Ryan to only create filters for less important messages, like automated log messages. Anything important will to go my inbox, and then I can choose how to label it or to delete it. This also has the benefit that on my iPhone, I can just check my Inbox and have important new emails in one place.
  10. Although Google Help says that deleting a message will just remove its label, it won’t necessarily work this way in Mail. Although deleting a message will remove the label (or if it’s in the Inbox, archive it), moving it to the Trash will actually put it in the Trash, which puts it in line for deletion. I think you could prevent this by not having Mail’s Trash mailbox be Gmail’s Trash, but the whole “deleting a message to remove the label” feature isn’t something I really need to use.
  11. I love the new Todos in Mail, but getting them working in Gmail also required some changes. From what I can tell, you can have Mail store the Todos locally or on Gmail (although there doesn’t seem to be a simple Preferences change for this). If it’s on the server, each Todo is stored as an email, and if you want to specify a Calendar for an item, it means defining a new set of Calendars in iCal. If you store the items on the server, each corresponding message shows up in a nice human readable format, but unfortunately on the iPhone all you see is a Mime attachment. Hopefully in the future Apple will provide a simple way to access Todos on the iPhone.
  12. Reading back on these notes, I see how complicated Gmail IMAP can be! I don’t think it’s quite ready for average users yet. That said, it’s nice to know that 1) I now have all my email accounts coming to one place, 2) my old emails are backed up online, and 3) I can access all my email from my computer, my phone, or a browser.

Switching to Gmail

gmailOne of the things I had been meaning to do for some time was to switch all of my email over to my Gmail account. The idea is simple: I have a lot of different email accounts, and it’d be great to keep them all in one place, backed up, and always accessible. So, setting up Gmail to access each of my different email accounts (well, five of the most important, and the rest just forward to my gmail address) was trivial. The hard part, however, was getting all my previous messages into Gmail.

Here’s a quick overview of how to get all of your old emails into Gmail as painlessly as possible (and one way that preserves dates!).

[Read more...]

Google to Offer Personal File Storage Service

I just came across an article from the Wall Street Journal about Google’s plan to offer consumers a service to store their personal data files.  I’m pretty excited about this, and so should you, for several reasons.

First, mass data storage is getting cheaper and cheaper, but to really push prices down, it takes the economies of scale a company like Google or Amazon can get by combining thousands of users’ storage needs into a single service.  Providing a service like this will decrease the total cost per gigabyte to even lower levels, which theoretically could make it cheaper to sign up and pay for a service like this than to go out and buy a hard drive.

Second, Google usually does services right (not always, but usually).  It looks like they have an eye towards consumers, rather than businesses (like Amazon’s S3 service), which will, hopefully, mean good integration with your desktop.  I sincerely hope to see a tightly integrated OS setup where users can treat their Google storage service as “just another hard drive” on their computer.  I’d really rather not see some cumbersome client software you have to download, but rather a network share on your computer.

Third, and most important (to me at least), is the freedom from worrying about backups, redundancy, and scaling.  More and more, I’m watching movies and TV shows on my computer or home entertainment system via iTunes and similar services, and my storage requirements are expanding rapidly.  There will be a time in the very near future where I’ll need a terabyte or multiple terabytes to store my movies and TV shows for access, rather than as DVDs.  And I’m not alone: many people are doing just this, as everything becomes digitized and always available.

Anyway, it’s all still very early to get too excited about this service, but I really hope Google does this one right.  Keep it simple, no client software, cross-platform, and as cheap as possible is the way to win consumers here; and I know that now – and in the future – people’s storage requirements are just going to increase.

Happy Thanksgiving

Sorry for the lack of posts lately – we’ve been pretty busy. We hired another software developer, and we’ve been working to expand our consulting business a bit. Unfortunately, the blog suffers for this, but it’s not for a lack of interesting stuff! Over the last few days, we’ve had the fortunate experience to work with memcache and a number of other performance-related tools to help fine-tune a very large PHP codebase.

In addition, we’ve been putting efforts into invotrak (our invoice-tracking tool) along with other projects we’re pretty excited about. We should have some details on at least one new site being launched soon, so stay tuned!

Updating Rubygems in Leopard (Mac OS 10.5)

After updating my Mac to Leopard (MacOS X 10.5), I noticed I had a couple issues when updating Rubygems. For instance, when running “gem update mongrel_cluster”, I would constantly get build errors. After doing some digging, I found that you need to set ARCHFLAGS to your system type. Here’s how you would update all your rubygems on Leopard:

sudo su
[Enter your password]
bash
export ARCHFLAGS="-arch i386"
gem update

Note that you’ll want to change the i386 to the actual architecture you have (my MacBook, for instance, is an Intel processor, while you would want to use “ppc” for non-Intel Macs).

Once I had updated my gems, things started working fine again. For instance, mongrel_cluster was having issues configuring a new project, but after updating the gem using this method, it seemed to be working fine. Hope you find this useful!

Time for iPhone To-Do Lists!

I’ve had my iPhone for a few weeks now (and yes, I got my $100 rebate), and I have to say that my biggest gripe is the lack of a good to-do list application. Of course, this is a fairly small gripe in the grand scheme of things (Apple got a lot right with this device), but it’s still important to me. One of the major ways I work on a day-to-day basis is to set lots of small, achievable tasks using my to-do list, then check them off as I get things done.

There are several to-do list iPhone web apps out there (notably, 37signal’s Ta-Da Lists), though it’s just not quite what I’m looking for. I really like the built-in to-do list in iCal, so having an actual iPhone application (not just an app via Safari) that can sync to my pre-existing iCal to-do items would be ideal. Hopefully Apple will be forthcoming with one (especially since it seems to-do items will play a bigger role with the Mail client in Leopard).

Java through the ages

I wanted to point out a great article on ReadWriteWeb today, by Alex Iskold, about the history of Java and the missed opportunities the language has had over the years.  Even if you’re not a software developer, it’s still a great overview of a language that is both elegant and powerful, and the drama of free market competition.

Of course, don’t get the impression that Java is dead!  It’s anything but: kiosks and embedded devices run it, along with consumer-facing websites and plenty of enterprise software.  Many other technologies have been eating away at it over the years, and will continue to do so, unfortunately, for many of the reasons in the article.

Like Alex, I think the biggest issue Java faced (and got wrong) was with the web.  Before there was web 2.0 (and web 1.0 was still being explored), Java applets were the way to integrate interactivity inside web pages.  But applets were horribly slow, limited in their abilities, and complicated.  I think if Sun were able to do it all over again, they shouldn’t have focused on placing Java applets inside web pages, but focused more closely on making Java the core of web development.  Like Alex states, imagine how great it would be if we could manipulate the DOM using Java, say if it were an integrated part of the browser.

But, alas, that didn’t happen.  There’s still time to reinvent how Java and the web co-exist, but for the time being, it’s being edged out in favor of new technologies and languages.  So here’s to you, Java!

Take us with you!

Cool news for you iPhone and iPod Touch owners: this blog is now specially formatted to look great on those devices!  I just checked it out on my iPhone, and readability is greatly improved.  Meanwhile, nothing will change for existing PC-based readers.  It’s the best of both worlds!

Implementation was about as simple as it can get.  An easy-to-use plugin and theme by ContentRobot did all the grunt work for us.  So if you have a WordPress blog of your own, check out iWPhone.

Are Traditional Blogs On Their Way Out? Not For Me.

With the recent release of the TechMeme Leaderboard, it’s been noted that most of the top 100 sources wouldn’t fall under the general definition of a blog. And if you consider a blog to be the thoughts of a single person (as opposed to multiple writers or an editorial staff), the count is even smaller.

Some consider this to be a sign of disinterest in “traditional” blogs, but for me, the opposite is true. I’ve found that lately I’m much more interested in the blogs of a single person, who gives their opinion and take on current events.

When I first started reading blogs, my main goal was basically “don’t miss anything”. I felt that there was so much news out there that it was important to be able to keep up on everything that was going on. I spent most of my time reading blogs like TechCrunch or link aggregators like Reddit.

But now I find that simply getting the headlines is pretty easy. Usually skimming through TechMeme is enough to update me on the days events in the tech world. After that, I want to go beyond the headlines and read the opinions and views of bloggers based on their personal experience and expertise — people like Robert Scoble, Fred Wilson, Allen Stern, or Dave Winer.

And I think this is where the blogosphere provides value beyond traditional media. Blogs allow influencers and insiders are able to share their views in a way they couldn’t before. So while news sources like the New York Times and the Wall Street Journal will always be around, I don’t think traditional blogs will be going anywhere.