I’ve been following the awesome Rails 3 tutorial by Michael Hartl at http://railstutorial.org/book. I highly recommend anyone wanting to learn Ruby or Rails (even some other languages thrown in as well) to go to this site and you will learn from a thoroughly professional free online gem of a book. I also recommend anyone who can, to purchase the PDF or hardcover that is being offered to show the appreciation for all the hard work put in to this by the author.
Anyway as I was working through Chapter 3 when setting up the initial gem file for bundler to install all the project’s dependencies I kept getting a screen full of errors. After reading the errors I noticed that the gem install was failing while installing the nokogiri package. After Googling as we all do I noticed on the Nokogiri web site that Ubuntu/Debian required two packages to install the nokogiri package. I was hesitant to install them through the normal apt-get packaging tool because I didn’t want the Ruby Version Manager setup to not be able to find the dependencies since the rubies I use through RVM are installed in my /home/me/.rvm directory. Well after installing the two dendencies the classic Debian/Ubuntu way I was pleasantly surprised that all was well and my gem installs were able to finish without a hitch allowing me to continue with the awesome tutorial.
The two packages needed on Ubuntu/Debian can be installed as follows:
sudo apt-get install libxslt-dev libxml2-dev
*the Nokogiri site has details for a fix without running the RVM setup, be careful not to follow as is on the site if you are using the tutorial as directed on the rails tutorial web site.
And as a reminder make sure RVM is setup as Michael instructs in the tutorial.
Just a few words of caution, when following the instructions for the setup at the beginning of the Rails tutorial be very careful to follow them word for word and with this dependency exception on Linux, everything else works as expected.
Update: As the Ruby Inside blog points out maybe Microsoft thinks they need to revert back to their old ideas
Lately as I’ve been learning Ruby I’ve noticed some frustrating hurdles that are becoming all too familiar.
Now I know Microsoft has taken steps to embrace the “other” world of web programmers but as I’ll show, I believe the wrong steps.
As the Ruby and Python web frameworks grew and also the community that insisted on developing web applications in a way that kept them in control of the HTML,CSS etc. Microsoft noticed and responded with the ASP.Net MVC releases. Their also were Windows programmers working on Iron Ruby, Iron Python etc.
This strategy while seemingly plugging the whole in the boat in my opinion is only delaying the inevitable shift developers are making to the “dark side”. Whether Microsoft or anyone else wants to admit it the threat from Mac OS X, Linux, Ruby, Python etc has much more in common then is admitted from the Microsoft camp.
For starters as I’ve said in other blog posts, a great deal of the Mac OS X shift by Windows developers and to be fair even Linux developers has more to do with the tools then it does to do with the pretty beach ball spinny thing ( ie. the pretty things). The Linux shift has more to do with instability at times on the Linux platform but that may be worked out if Ubuntu stays focused on the important things.
Not only do I believe Windows could slow the shift by their current developers but they could also possibly gain some of them back. Rather then try to force everything through the .Net filter they need to do the obvious. Give them what they are looking for.
1.How about a native Bash or Zsh environment. Environment being the key word. There are some applications running natively but far from a complete environment. An even so much of this has to be scraped together from evry corner of the web.
Developers now hanging on by a thread to the Windows platform have to jump through all kinds of hoops to use Windows. There is the Cygwin setup that breaks every time Windows upgrades. Although I must say the Cygwin developers have done a good job keeping things in order. I know Microsoft hates to admit it but .Net and C# isn’t for everyone. Stop thinking everyone wants a .Net implementation of every tool or language there is.
2.Embrace what the developers want to use rather then what Microsoft thinks they should use.
This doesn’t mean Microsoft is giving up on what they see as the future of programming. There are plenty of developers that still use those tools and will continue to stay the .Net path.
3.Embrace the commandline, the classic commandline. There are many developers and sysadmins who have tried to wrap their heads around Poweshell. The object oriented shell isn’t what some want to use. Again there are some who think that way but there are also those who wonder what the hell was Microsoft thinking. When the sysadmins and developers were begging for a better commandline story on Windows I’ll be willing to bet Powershell isn’t what they were thinking. The problem with Microsoft and these technologies is that they spend so much money and time on these technologies before the users get to see them that is more or less stuck with where they’ve gone.
If none of this strikes a note with Microsoft people then maybe we need to just admit that there are droves of developers who just need to keep switching.
There are developers that are holding on by a thread, believing that they can possibly stay on Windows but that thread is getting thin. Try setting up a native Django, or Rails development environment on Windows and see how long before your installing Cygwin, creating symlinks and such to make their environment “feel” native.
I would venture to say with all the free and opensource software that already exists having this happen would be more of pulling these tools together then remaking everything from scratch.
This would give Microsoft a much better story in their competition with Google and web applications in general. How much better off would they be covering much broader of a base of developers then they currently do. Who knows Microsoft could even innovate in this space and shock everyone. I know the resources are there but the will is at this time.
How would they like to see all the old school hackers that even work for Microsoft to stop buying Macs and using Macs to program for Microsoft. When the .Net Emacs project starting getting leaked to the world I truly believed that someone at least got part of the problem. But developers don’t want .Net everything. Microsoft could embrace what developers want even more then Apple and in my opinion shift the tide
P.S. Maybe you’ll listen, maybe you won’t, but at least I tried to articulate a few things that would make Windows seem like a platform I could even think of continuing to use.
As always just my two cents.
Update: I wanted to mention that I have thoroughly overstated the situation as far as Rails apps seemingly being used more by “real sites”. I noticed a Django developer doing some awesome work on some Discovery websites and a few others. I guess it’s just me hoping that it was Python and not me. Well I guess it is me. I ‘ll keep leaning on my noob status until I can hopefully no longer use that crutch. Thanks to Derek the Python/Django guy who made me take a second look.
It amazes me that the most english-like programming language in the world was built by someone who is not a native english speaker. Maybe the simplicity comes from his inability at the time to be overly verbose, using only statements and such that best communicated an idea to someone with a very basic english vocabulary. I think since Matz has become pretty fluent in the english language though.
One other thing I would like to note. I remember a talk that DHH the creator of Rails gave along with Adrian Holavity, one of the Django creators. DHH ekpt saying that he felt some of the architectural decisions behind Django were better suited to we sites where in his mind Rails ‘ architecure was better suited to web apps. At the time I took as a somewhat snide remark, thinking listen to this saying that Django was for building simple web pages and Rails was for building “real” web apps. Well if you take a look on the web now I think the statement rings true, there seems to be many more complicated, detailed Rails apps compared to Django’s hundreds of sites that seem rather simplistic in the app side of the functionality. Just an observation. What do you think?