Acts_as_conference Wrap Up
Ruby on Rails developers in Orlando had a treat this past weekend with Acts_as_conference taking place right in our own backyard. Aside from Bar Camp Orlando, we’ve been light on the large-scale, on the cheap conferences. Acts_as_conference was a well deserved $100, for which attendees got 2 days of presentations, snacks, breakfast and a rare opportunity to see the Orlando Ruby community gathered together with notable names from around the Ruby world. Still being a newcomer to the Rails world, most the names might not have stood out as much before, but it was great hearing them in action.
Day 1: Friday
The first half of Friday started with a pair of charity sessions on Merb and Rubinus — both projects I hadn’t even looked into prior to the talks. For those as clueless as me — Merb is another web application framework for Ruby that is strikingly fast (compared to Rails). It has no ORM built into it, but one can be used as needed of course. One thing that stood out to me was how controller actions were handled. Take a register action for a user in most frameworks; it would be a controller that doesn’t take anything in, but grabs all data it needs for the params hash. Merb (from what I understand) can work differently. Your controller itself would actually take in the user; and it would be grabbed from the form. There is also the idea of a Parts, which can be called from Controllers to delegate repetitive work. In Rails it seems like The Rails Way is to move as much as possible into the models to ease the controllers, but Merb can move some of this into Parts.
The last talk of the day was a very simple one. Well, it wasn’t a simple talk, but it was on Simplicity in design. Dan Benjamin gave a great talk that wandered from super tuesday to the super bowl to Einstein. We shouldn’t make things hard for the user, or they won’t love our software. If they don’t love our software they won’t use it and talk about it. If we make the user our number one priority and concentrate on giving them what they need to accomplish a very small set of goals extremely well, people will remember and spread the word. Dan went on to show how this approach worked beautifully with Cork’d which, dispite not advertising, was able to ramp up to 5,000 users in the first month alone.
Make everything as simple as possible, but not simpler. - Albert Einstein
Day 2: Saturday
After a free breakfast and a brief entertaining advertising spiel by the sponsors Engine Yard and Sun, the presentations started with a much anticipated one on JRuby. Brian is working on our first JRuby on Rails site at work, which could lead to bigger and more fun projects along the way. The JRuby benchmarks were very impressive, and on par with Ruby 1.9. Development gets a speed boast by being able to develop on regular ruby as well before moving to war (warble) for deployment.
Day 2 continued on with Bryan Liles on TDD/Testing, which we all agreed was one of the highlights of the con. It was a funny, witty presentation, that kept everyone entertained while still educating. The talk wasn’t about a specific testing framework or style, but more about brushing away misconceptions about testing and the differences between BDD and TDD (namely that they’re the same thing). The emphesis was on writing good tests, repeating this behavior until it becomes second nature and being sure to do it before you code. Sounds like a simple enough route towards testing utopia.
Obie Fernandez ended the conference with an extended analogy about our craft. There are better write ups about this presentation, but I’ll agree it was inspiring. Both the keynotes shared a very similar tone and emotional impact, leading me to a day of programming afterwards.
For more write ups, check out Roop Says, or Max’s or Marios writeup. Very fun local conference. Look forward to attending again next year!
Local Chain Recycling
Last month I was looking around for some places to get rid of old computer parts and was having trouble finding a good website that listed places to recycle. On my home today there was an episode of NPR Marketplace where this exact question was posed. The site mentioned was Gcycle, which despite it’s very unique interface, was able to find places to recycle just about all my old electronics. As it turns out, Staples and Best Buy are able to handle most of these. I can’t say I’ve seen many people lugging old PCs, TVs or original Nintendos in to recycle though, so I’ll have to test this theory out. Anyone tried recycling at a local chain without any weird looks?
Google Quietly Adds support for Multiple Email Addresses
For those of you pained with having multiple Google Accounts, you might be able to associate some of them now! From any Google account you can now add any non-Gmail email address you want to your account. By default your account might have a gmail account associated with it already — but now you can add emails from your own domains, or even your work email. You were previously able to do this — but only with a single external email account — and only if you signed up for a Google Account before you signed up for a gmail account.
It’s important to differentiate this with Gmail accounts. This isn’t a solution for actually receiving your emails (for that check out Google Apps). This allows you to log into your global Google Account with this newly added email address. Think of it more as an alias for your account than anything else. If you go to manage your account and edit your personal information you should see the form for this. You’ll be sent an email you must click on to activate the association.
So why would you want this? If someone sends a Google Calendar invite to you@yourcompany.com and it’s associated with your email it’ll show up in your Google accounts calendar. I’ve received a number of these at times and its always annoying trying to keep up multiple accounts. Also, if someone adds you to Google Groups with a non-Google email, that address can now be used. Anyone have any other uses for this?
There are still a few places where Google is stepping on it’s own toes, but this is a great step. If you add you account as mentioned and use Google Apps with Calendar enabled and someone sends an invite to yourname@yourGoogleAppsDoman.com, where will it go? Well actually your Google Account won’t see it at all — only your Google Apps account will see it. For the time-being it looks like these will need to be two separate, but Google seems to acknowledge the problem. Perhaps we’ll see more integration between the two this year?
New Office Setup!
The number one thing I wanted to get done in January was change up my office setup. I wasn’t using it enough and always felt a little cramped or unable to concentrated, so much of the month was spent taking trips to Ikea to pickup furniture and supplies for a new office.
It turned out better than expected. I went with a large corner that office some deskspace for a laptop on one side, a little workspace on the other. The Galant series of desks at Ikea filled this need better than any other alternative and for a decent price. One of the best parts about them though is that the legs are spaced far apart and no in the way like many desks. I can actully extend my legs and swing around without even hitting them!
I haven’t done much in the way of decorating yet, but but I did pickup a few plants and some cheap stones at their base. We’ve since added something like this to our bathroom and it adds a nice splash of color. I have a few ideas for some wall art, but there’s no rush on getting that.
Workspace is the same 3 monitors I’ve been using for a while now. My previous employer had a deal with dell and offered us all some 17″ flatscreen for a price we couldn’t pass up. The center monitor is a 20″ widescreen gateway. I wouldn’t recommend the Gateway though. It’s currently working, but went through a phase where it was taking up to a minute to start. If I leave it on for too long it also gets moody and starts flickering. Don’t think I’ll be buying a Gateway monitor again the future.
The main workstation is normal enough. I’ve been trying to minimize clutter and keep my desk clean (maybe I’ve been reading too much Zen Habits) so only the essentials are on the desk. I’d like to later on come up with a better place for blank CDs and get some nicer speakers. You can’t tell from the pictures but there’s a soft light being my monitors controlled with a switch right out there. The monitors are on an Ergotron LCD stand Marilyn got me, which keeps the monitors level with each other and helps with space issues by not having three stands up there.
If you’re interested in anymore shots, check out the My Home Office photoset on Flickr which has more in depth comments on the photos. Next step in Feburary will be doing a little cable management under the hood.
Using Google as Your Jabber Server
Although my experience with Google Apps didn’t start off all that spectacular, I’m still using it after two months. As an independent product in the Google line I’d say it would be a great product, but it’s synergy with the rest of the Google domain is still sorely lacking at this time. Google Apps still only offers Email, Calendar, Talk, Docs, Start Page and Web Pages — meaning that if you want to use Google Reader, Analytics, Picasa, Groups or anything else you need to a Google Account and a Google Apps account — and the two are completely separate.
Talk is one service that doesn’t matter much where it is though. Dreamhost offers Jabber service as part of their setup, but delegating that service to Google for free seems like a more reliable solution. Luckily Google Apps offers an easy solution for this. Also, with Dreamhost you have the ability to edit any DNS settings you want, giving you both the ability to screw yourself over, and try out services without having to contact support. For Dreamhost, it’s just a matter of adding 10 Service (SRV) record DNS entries. One gotcha is that you must enter the full text of the entry into the Dreamhost Control Panel — 5 0 5269 xmpp-server.l.google.com. (including the period). It’s the same concept for all the entries. Within 10 minutes of getting the DNS entries added, I was online adding other Jabber users.
Although Google Apps may have it’s problems, as a free email server it’s hard to beat. With Google Talk, and the great logging ability for outgoing emails it may just be time to look into it.
Reactor Presentation Next Tuesday
If you’re in the Orlando next tuesday, Feburary 5th, and want to listen to a talk about Reactor, check out Adogo’s February meeting. Joe Zack and I will both be giving a presentation on a ColdFusion ORM, with him doing the also-popular Transfer. I’ll be interested in seeing how the two compare and the discussion that will probably ensue.
Tools Make the Difference
How much difference do the tools you use affect your productivity? That’s nearly an impossible question to answer. Books like Joel on Software or his bible Peopleware are more about how to be productive than how to write good code (for that try Code Complete). Although some of these tips can’t translate to a normal office (such as giving each programmer their own enclosed office), most suggestions are more easily palatable to management like multiple monitors or slightly improved workspaces. For instance, about 8 months ago our team at Westgate had experienced some much needed growth and needed to be split up into 3 rooms for developers instead of 2 interconnected ones. Although this meant we weren’t as close, and we no longer knew what everyone did the previous weekend, everyone I talked noted huge productivity gains in the days that followed. Quieter workspaces is on the Programmers Bill of Rights after all, so it’s probably no surprise. That’s not bad for just rearranging people but are gains like this possible from any tools or initiatives?
Multiple monitors seem like a no brainer for increasing productivity. Although 20%-30% sound high, I don’t doubt it. Assuming you’re not just working in your IDE, not having to tab around just to see everything will save you time. Multiple monitors are great, but what I’ve never quite understood is how people can use a single huge monitor effectively without some kind of software for splitting up screen real estate. With many of the Mac setups I see, for instance, there’s often a huge 24″ or 31″ monitor looming over the developer. Although this might work when a designer might need to see a large portion of an illustration, I don’t see how a single huge monitor could be better than two smaller monitors for most developers. With the smaller ones, you’ll need to spend time dragging from one to the other to get setup, but for the most part all applications will remain maximized and out of the way. With single monitors it seems lots of time is wasted repositioning everything. Also it’s more distracting looking at a monitor that has multiple apps on parts of the page rather than one maximized. For my home setup I went with multiple monitors of course, and can’t imagine trading them in for a single large display. What do you prefer, a huge monitor (24″+) or multiple smaller ones?
What programs make the most difference will be heavily skewed from one person to another. Little things like using TortoiseSVN rather than Eclipse’s much slower Subversion tools might not seem like much, but some people notice the difference and save a little time. Using a different text editor or web browser can make that difference as well. Since just about every developer uses Firefox, it becomes more an issue of finding the right extensions. As web developers though, most our time is spent in our editors, some shell, a web browser and a database tool — why not use the best of each?
I’d agree with many of the sentiments in the previous replies though — the tools we use are important. On more than one occasion Hal Helms compared the software and hardware we use as developers to the tools he used as a craftsman constructing chairs (7 - Tools We Use). You wouldn’t use a dull knife, why use a dull program?
A Question for Apple Users
A talk with a co-worker of mine left me wondering just what it is about Apple Computers that drives people to love them so much. I’ve always wondered this actually, and since the usual response isn’t too helpful for someone as clueless with macs as me, I’m wondering if anyone can help me figure this out.
I wouldn’t consider myself emotionally attached to my operating system. I use Windows Vista on two computers at home — my desktop runs Vista Ultimate and streams videos and DVDs to my Xbox 360 via MyMovies and my 3 year old laptop runs Home Premium very well, although I don’t do anything to intensive on it. That being said I haven’t stuck with Windows out of necessity or any devotion to Microsoft, but because it had the major features I was looking for — namely a media center server and an OS with decent development tools available for it. Although I’m not looking for a new computer at this time, when my laptop does eventually die I’ll be looking for the best laptop for my needs rather than the best operating system laptop for my needs.
So what it is that makes Mac OS X Leopard more of a draw than Microsoft Windows Vista and keeps people coming back over and over? I’ve heard that the interface on Vista is more cartoony and less uniform than Leopard, which from what I’ve seen I’ll have to agree with, although I go like the look of Vista more than XP. Another difference people note is the helpfulness of keyboard shortcuts on Leopard. This might be a little hard to understand for those of us not using them, but what shortcuts directly in the OS are so effective? Or is this a program specific advantage? As far as Mac only programs, the only one that stands out to me is Textmate. Although I would love to have Textmate on Vista, E Text Editor seems about the same, and even uses Textmate shortcuts and themes. I’m sure there are differences of course, but I’ll have to dig deeper to get there. What else draws you to Macs? Low viruses? Unix based? A default setup that works? The small product line means stronger individual products?
As someone who hasn’t spent any serious amount of time on Mac, is there any way to figure this out without just using one for a few weeks?
Pownce and Adobe Air?
Pownce made it’s public debut tonight after quite a few months in beta and heavy speculation. Despite all the talk those of us without beta invites (or the immediate need to get one) were left wondering exactly what the deal was. Pownce is a way to keep in touch with people and share stuff with them. That, to me, is too general a definition.
What is Pownce though? I’d call a landing page for your web 2.0 online presence with a dash of Twitter. You have the ability to post text posts without the 150 character twitter limits, post links (which is just the same as a text post, but with a button at the bottom), send files and post events. If a lot of this information sounds like it could be marked up in familiar forms, you’re right. If you have the Firefox Tails Plugin installed, you’ll see a few microformats on there including vevent, vcard and more.
As for technology, Pownce is extremely open about those used which makes things fun. Even though the main site is in Django, which I’ve heard great things about but haven’t had a chance to look into, they’re using a load of other familiar ones. After the Flex 3/Air Tour in Orlando last night, it was great timing to see a nice looking Air app while still fresh in my mind. The desktop client for Pownce does just about the same stuff as the website, but a little quicker since it’s just talking to the Pownce API rather than reloading pages. It also automatically checks for updates. It’s actually a lot like the Twitter app I did for the November Adogo Meeting, except, well, pretty and with more features.
Do you see yourself using Pounce? Or more do you think of it as a passing fad? I’m certainly not convinced that it’ll keep my attention, but for Twittering I would prefer to use Pounce instead. It has more beautiful and customizable interface, and is the kind of implementation people dream of when they have ideas for websites. For a “place to keep in touch with people” I don’t see how it stands out from other social networks though, aside from the fact that you can import friends from other services you use and it’ll try to find Pounce accounts for them. To me it feels more like a Tumbleblog with some links on it that’s perfectly executed.
Rails Plugins Recommendations
One of the niceties about working with Rails is how most plugins just work. Since plugins are tied to the framework, and just about everyone that works for web development uses Ruby, it gives a huge base of helpers and code to get you started unlike anything I’ve seen — outside of Java. ColdFusion has a very strong community, with many projects at RIAForge and many more added every week, but what makes Rails stand out is the common ground under which they’re implemented and integrated. All ColdFusion frameworks have their own ways of creating helpers/plugins/services/whatever like this, but there’s no one “ColdFusion Way”. There are a few Rails plugins that evem me, a Rails novice, have been able to implement and reap the benefits in a relatively small time frame. What plugins am I using so far?
ActionMailer TLS - Have you ever gotten annoyed needing to install a local email server to do your testing? With this plugin you can use Gmail for all your outgoing mail. There’s a 500 email limit or so, but for testing purposes it makes it easy to get setup — especially if you’re alternating between multiple computers. Another option would be to set this up to use Dreamhost or something of course. The advantage of using Google though is it’ll save all your outgoing mail as well, so you’ll be able to see exactly what was sent during testing without digging into logs.
GeoKit - Google Maps plugin for Rails. This one has a lot to it. You can create entire maps without knowing the Google Maps API, with overlays of map popups and all that, run calculations on distance between points and geocode addresses (physical or IP) into latitude/longitude very easily. It answers questions like “Get all restaurants within 15 miles of the logged in user” with simple code like Restaurant.find(:all, :origin => @user_address, :within => 15). Imagine that returning a query with a “distance” column which has the distance in miles between the two.
Acts As Rateable - If you have locations you’ll need to rate them right? Chances are there’s other things on your site that need rating as well, so this cleans up some of the code for this. It’s something that could be done without a plugin, sure, but adding “acts_as_rateable” to a model is all you need to get going.
ResourceController - I only recently found this out, but it’s cleared up the repetitive code in some of my controllers. The idea is that it’ll setup all the boilerplate code in RESTful controllers, making it that much easier to get started. If you have nested resources in particular this cleans up the code for it quite a bit by providing helper functions for where in the execution chain of nested controllers the current call is at.
Restful Authentication - This seems to have to replaced ActsAsAuthenticated as the most used authentication plugin. Today I was going though a Restful tutorial to expand on my current restful authentication setup. In not too long I had a nice roll based authentication system with email driven activation, reset and change password sections. Not bad for an afternoon.
Will_Paginate - Easy Pagination! What makes this pagination plugin great is the ease of use. If you’re returning an array of activerecord objects, like with Model.find(:all), then you won’t have to change anything in your view to keep things working. Will Paginate also returns that same array — well sort of. The array that it returns can be looped over in the same way, but is also contains the pagination data, such as current page and results per page. Add this into a will_paginate @games which generates those all too familiar numbered pages and you have pagination. The only thing that needs to be done is changing the find(:all) call to use the new paginate method.
Any common Rails Plugins you can recommend?



