-
Get a monthly update on best practices for delivering successful software.

I have come to the conclusion that doing rails development native in windows is not worth the cost. Things may seem to run smooth initially, but over time problems inevitably come up, and they have become enough of a pain point that i'm moving to a linux virtualization. This for me makes particular sense as most of the full time ruby guys in my shop are using macs and are no help when it comes to figuring out windows only issues.
The first lesson usually learned by rails developers using windows is to use cygwin. I didn't initially, until i need to use capistrano for deployment, and guess what, windows doesn't support ssh from the command line, so time for a second rails installation using cygwin for this support. In general, dealing with any type of issue is more frustrating when using windows because most help on the web is not windows focused. A common disclaimer seen when searching boards for help with RoR issues on windows is, "Well, I'm not that familiar with installing xxx on Windows, but" . It's just going to be much easier to install, say gems for instance, if you can build them in the environment for which they were developed. In fact, awkward native gem compatibility it probably the single biggest reason not to stay on windows.
Then there are issues that don't have to do with trying to fix something that's broken. Performance for one. As seen here, certain tasks on windows are much slower than if virtualized, even if the virtualization has inferior resources. Also, developing on windows makes for a poor example when it comes to deployment and dealing with production issues as Rails apps are rarely run on windows. If you're not used to a linux OS, you're going to be completely useless when it comes to working on these machines.
What it boils down to is that Rails and everything around Rails is targeted towards linux. The web services, heavy use of git, the framework itself. Sure, becoming familiar with Linux with have its own set of frustrations and headaches, but those will be useful lessons that will bring you closer to Rails and its community, rather than farther away. So until i get my mac and can virtualize my windows enviroment (um, hello Dietrich), rails is going virtual.
Related Services: Ruby on Rails Development, Custom Software Development
Topics: rails, Ruby on Rails, Windows, windows development
The knowledge and skill of a software developer are often the the most expensive, and therefor most valuable, part of a new development effort. As a professional, it's our duty to try to maximize our programming efforts to give the client a good return on their investment. Unfortunately, our job entails much more that just that writing software. Going to meetings, answering email, working with vendors, participating in a code review and many other things come part and parcel. In this blog, I'd like to share a couple ways I like to increase my productivity and efficiency when I get to do what I enjoy the most; code.Recently I've been reading quite a bit of Anthony Bourdain, chef and host the Travel Channel's "No Reservations". In discussing what it takes to be a profession chef, one that is going to crank out several hundred orders a night at a high level of quality in concert with a team of other chefs, he constantly comes back to a couple of important points. Central is the concept of mise en place, translated to roughly "everything in place", as in set up and ready for business. All common ingredients are measured out, washed, chopped and placed in individual bowls. All utensils are washed and within easy reach. Its allows the chef to be able to accomplish things quickly and efficiently, and feel things are in orderly despite the chaotic atmosphere. For him, there is a religious quality about it.
I've just completed a project where I was the Rails developer for a site that was integrating a Flex application that needed to pull from a database. A primary consideration is how to transport the data. Rails supports xml and json natively, and is very easy to set up by adding a single line to a controller's respond_to method. Sasha, the Flex developer on the project, suggested that we go with AMF if possible as it's native to Flex and is deserialized straight into custom typed objects.
After reading a bit about some performance considerations it looks like AMF and JSON are going to get roughly similar performance in most cases, so it becomes a matter of ease of development and taste. Sasha definitely preferred working with AMF, so i started checking out Rails implementations.