Double Shot #73
There's plenty going on in the Rails community (and other corners of non-Microsoft software development). Here are a few more shiny things that have caught my eye lately.
- Rails performance tip - using YSlow - Worth a look if you need to speed up page load times.
- Mingle is live - ThoughtWorks has their agile project management tool ready to go.
- acts_as_taggable_on_steroids - A plugin that adds tag clouds and other goodies to the standard acts_as_taggable.
Double Shot #72
I fear I let things pile up a bit last week. Time to clear out some of these open browser windows and hope that the news isn't too stale.
- A 'DHH Approved' Logo? - There's been a fair amount of discussion the last week over the fact that DHH wants to keep the Rails logo locked down as far as book cover usage goes. While I understand the trademark law argument, there's some clash with open source principles here. And handing out a copy of the logo in every generated Rails app may have already fatally weakened the protection anyhow - though IANAL.
- Editing Multiple Models in One Form - I needed UI to edit all the records in a model on one web form in Rails; this proved to be easy to set up once I knew how, and hard to figure out. This tutorial pointed me in the right direction.
- Apache Lucene - Query Parser Syntax - Since Solr builds on Lucene, trying to figure out how to write queries for acts_as_solr will eventually lead to this page.
- redMine - Rails Based Open Source Project Management Application - Review of another competitor to Trac/BaseCamp/et al. Looks worth digging into.
- OpenID Sample Application Updated - Ben Curtis has revved his OpenID reference app for Rails.
- GeoKit - Rails plugin for geocoding. I'm gonna need this soon.
Double Shot #71
The bookmarks have piled up a bit again. Time to clean them out to start the week.
- Capistrano 2.0 - The release of a significant new version. I guess I finally have to stop putting off learning about the new features and changes now.
- In-Place Editing: The Summer 2007 Rewrite - And speaking of new features, there's been a significant bit of code thrash over at script.aculo.us.
- pure class - Discussion of the best way to define a user.reviews.good (or analogous) method, something that I need to do soon for the current app I'm working on.
Double Shot #70
Posting is going to be irregular for a while, I expect: here's why
- pure class - I'm going to need to use one of these techniques for tracking down things through ActiveRecord extensions soon, I think.
- Twitter4R 0.2.0: Twitter API for Ruby - There are now two different Ruby libraries for accessing the Twitter API. Some people would say that is two too many.
- Connector and Slingshot Open-sourced and Free - The Joyent guys are giving away a big ol' gob of code.
Double Shot #69
We're trying to prep our house to put it on the market. This sucks down a great deal of time, and explains why posting may be spottier than usual for a little bit.
- How to Create Many to Many Relationships in Ruby on Rails - One of the basic skills, but it does point out creating the join table, which is easy to miss the first time you set up such a relationship. (via dzone)
- Haml 1.7 has been released! - Alternative markup language for Rails views. Lots of perf work in the last few releases, so it's becoming a more viable alternative, at that.
- Using Omnigraffle to visualise Rails model associations - I could have used this about a week before I found it, since I spent a big chunk of that week drawing ERDs to understand a pile of existing Rails models. This one uses code to reflect over the models and build ERDs automatically.
- Warehouse Subversion Browser Released! - This is the SVN browser in Rails from the ActiveReload folks. Now available for a one-time $30 fee.
- Replacing Ant With Rake - Here's how you can call all your ant tasks as if they were rake tasks, and so switch to rake for ongoing maintenance of your ant files.
Double Shot #68
A few random links for the Fourth of July.
- Information Card Ruby - Yes, you can now make InfoCard play with Rails, if you must. This will be a good thing for those trying to smuggle Rails into Microsoft shops.
- Mingle is Now Available - That would be the new agile project management tool from ThoughtWorks, now in an Early Access release.
- Comatose - Micro-CMS implemented as a Rails plugin, to handle editing of those few semi-static pages that pile up in every application.
Progress Report
Here I am, half a year into my experiment with cutting loose from Microsoft, and I think I can pronounce it a success:
- I now have two Rails consulting jobs running, and I'm as busy on that front as I want to be from now until about the end of August, which is about as far out as my consulting time has ever been assured. This doesn't mean that I'm not looking for more, but it means that I'm feeling a comfortable cushion, and a confidence that I'll find more work to keep the pipeline full. My Rails rate is nowhere near what my top C# rate was (or for that matter, what my top Netware rate was many years ago), but that's OK.
- I've got a couple of leads on actual US-dollar paying Second Life work, which I am actively pursuing.
- I still don't feel like I've reached the "expert" level with Rails yet, but at least I can get it to mostly do what I want with minimal fuss. The times when I go off the clock to research something are getting fewer and taking less time.
- My .NET skills are rapidly deteriorating; I haven't written a line of C# or VB code in months.
- I'm moved almost entirely to the Mac for my day-to-day work, with the exception of maintaining the Larkware site.
Double Shot #67
I'm getting to the point where I'm finding more interesting links for my new blog than for my old one. This is a good sign of transition, I think.
- Condition Builder 1.1 - Helper to easily generate SQL WHERE conditions for Rails. (via Same Shirt Every Day)
- UserEngine - Roles and permissions for Rails. Bookmarked 'cause I've got a customer who wants to use this. Only they don't want to use an engine. Hmm.
- Capistrano 2.0 Preview 4 - One more iteration of the next Capistrano release.
Double Shot #66
Time to repost another few links for my own reference and yours.
- I’m on Rails: Coding Statistics. - I ended up swiping pieces of this to do outbound link tracking in an application I'm working on.
- rails plugin list - More plugins than you can shake a stick at, along with where to grab them from. You have to guess their use from their names, though.
- Installing Xen on Ubuntu Feisty Fawn - the complete newbie’s guide - I hope not to have to tackle this any time soon, but if I do, this looks like a good unified guide.
Double Shot #65
There are always about a million little fiddly bits to do to get an application out the door, aren't there?
- Backing Up Your Mac - Recently-revised article from MacZealots listing some easy alternatives. Doesn't answer all of my questions but it's a good starting point.
- mirRoR Placement - A pure Rails job shop. It's another sign of the rapid growth of the Rails ecosystem that we're seeing firms like this pop up.
- Announcing Multisite Plugin for Rails - Serve multiple domains from a single Rails application by giving each a distinct set of views.
Double Shot #64
Woo, starting another consulting job today, without a speck of MS stuff in sight. I feel all vindicated and stuff.
- iStat Menus - There are about a million different Mac system monitors out there. This one is free and doesn't take up screen real estate when you don't want it to.
- VSS to SVN: Part 3 - This tutorial for source code control switchers continues.
- Ruby on Rails EC2 'Appliance' - Practically turnkey Rails deployment to the Amazon server cloud. (via Ruby Insie)
- Sake Bomb - Sake is system-wide Rake. Looks like it still has some warts, but is already useful
Double Shot #63
With a second Rails contract about to be signed, I guess I really am a Rails consultant now. How about that?
- file_column plugin and Capistrano - By default the file_column plugin saves under /public, which doesn't play well with Capistrano. Fortunately the fix is simple.
- Rails Hackfests - The Hackfests, recognizing contributions to the Rails source code, have gone monthly.
- Installing Ruby on Rails and PostgreSQL on OS X, Second Edition - Revision to a popular and useful how-to article.
Double Shot #62
It's Monday, it's time for some new links
- Starting Ruby on Rails: What I Wish I Knew - Some pointers for getting started. (via dzone)
- Versions - Subversion GUI for OS X, now going into private beta.
- Capistrano 2.0 Preview 3 - Apparently getting close to release.
Double Shot #61
Looks like I may not starve to death this year after all. That would be welcome evidence that the universe is listening to me.
- Script.aculo.us - Offline Docs: - The contents of the Script.aculo.us wiki reformatted as CHM and PDF. (via Thomas Fuchs)
- Ruby In Steel 1.1 Now Available! - An upgrade for folks working with Rails in the Visual Studio shell on Windows.
- Google Analytics Plugin - A simple way to hook up Analytics to a Rails application.
Production Rails Setup at RimuHosting
I've finished getting my first production Rails server up and running at RimuHosting . I kept reasonably careful notes along the way, and now I'm going to brain-dump them here, in part because I might need them again in the future, and in part because they might help someone else. Of course, there are so many variables that your setup very likely will not be a precise match for my setup, so use with appropriate caution.
We started with a MiroVPS3 (224MB) host with Debian Etch, the Webmin control panel, and RimuHosting's own basic Rails stack preinstalled. That's probably overkill for this little app, but the client wanted to be sure of plenty of breathing room. I'm targeting Apache + Mongrel for serving pages because that's what I've been using in development and staging; production is not the time to experiment with a new-to-me server.
We started with a MiroVPS3 (224MB) host with Debian Etch, the Webmin control panel, and RimuHosting's own basic Rails stack preinstalled. That's probably overkill for this little app, but the client wanted to be sure of plenty of breathing room. I'm targeting Apache + Mongrel for serving pages because that's what I've been using in development and staging; production is not the time to experiment with a new-to-me server.
- ssh root@nn.nn.nn.nn
- adduser mike
- logout
- ssh mike@nn.nn.nn.nn
- started mysql via Webmin control panel
- changed mysql root user password to DBPassword via Webmin control panel
- set up mike as a full admin using sudo by using visudo
- sudo adduser appuser
- mysql -u root -p
- CREATE DATABASE appproduction;</li>
- GRANT ALL PRIVILEGES ON appproduction.* TO 'appuser'@'localhost' IDENTIFIED BY 'apppassword' WITH GRANT OPTION;</li>
- quit; get out of mysql
- used Webmin to set mysql to listen on any
- sudo apt-get install libopenssl-ruby1.8 Without this step, recent Rails won't run properly on Ubuntu or Debian
- mkdir /Library
- cd /Library
- sudo mkdir Rails -p -m 777 I like to keep my Rails apps in /Library/Rails. Your mileage may vary.
- changed server info in deploy.rb to point to the production server
- (on development machine) cap setup
- sudo gem install:include-dependencies mongrel_cluster
- (on development machine) cap deploy
- cd /Library/Rails/app/current
- rake db:migrate RAILS_ENV=production
- cd /etc/apache2/sites-enabled
- sudo nano 000-default edited this to basically match my staging version
- sudo a2enmod proxy_balancer
- sudo a2enmod proxy_http
- sudo a2enmod rewrite
- sudo /etc/init.d/apache2 force-reload
- sudo /etc/init.d/apache2 restart
- used Webmin control panel to set mysql to start at boot
- sudo ln -s /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-0.2.1/resources/mongrel_cluster /etc/init.d/mongrel_cluster
- sudo chmod +x /etc/init.d/mongrel_cluster
- sudo mkdir /etc/mongrel_cluster
- sudo ln -s /Libray/Rails/app/current/config/mongrel_cluster.yml /etc/mongrel_cluster/nrafh.yml
- used Webmin to set mongrel_cluster to start at boot time
Double Shot #60
First client Rails app successfully up and running at RimuHosting. I'll be writing up my notes for future reference soon. Meanwhile, a few links.
- SimpleLog - A Rails weblog application I hadn't run across before. By the way, I know my RSS feed for this one is still goofy; I'll take a look when I've got spare cycles. Thanks for your forbearance. (via Same Shirt Every Day)
- Scripting Second Life with Rational Application Developer- - IBM continues to take Second Life seriously. There are also a bunch of crossover events from this week's IBM/Rational conference being held in Second Life.
- JRuby 1.0 - The JRuby team announces full Ruby compatibility. I don't personally have a whole lot of interest in JRuby (my ambition is to never work in an "enterprise" again), but it's a nice validation point for the community.
- Rails Business: Weekly Review #1 - Roundup from one of the mailing lists spawned by this year's RailsConf.
What is the Deal with Second Life?
People tend to look askance at me when I tell them that I'm looking at two main avenues of revenue for replacing the .NET stuff that I'm giving the boot: Rails and Second Life. Rails they understand, but the thought that any adult might take Second Life seriously is still apparently a silly one to many people. So, time for a few words of explanation so that I can stop repeating myself.
Second Life is of interest to me on several levels. It has some game-like aspects, of course, and one can't neglect that it's fun (without having any particular goal) to hang out with online friends, just as IRC can be fun. And I do agree with those who think that some form of the 3D internet will take off over the next decade. While Second Life may not end up being the winning horse in that race (Linden Labs has plenty of opportunities to fail), it's one of the contenders and a good place to get some idea of what might work.
But from a business point of view, right now, it's also a place where real people make real incomes in real money. There are two distinct ways that this happens. First, there are around 100,000 paying customers (never mind the nearly 7 million signups; many of those don't stick around) putting hard currency into the Second Life economy. Linden Labs does manage to take a house rake on every transaction that involves converting real currency into Linden dollars or back, but much of that money comes back out again. The paying population is the size of a medium-sized real life city, and that's plenty big enough for some people to be making a living selling virtual stuff. Thanks to my wife's jewelry business, our membership costs are already covered, and we're on our way to being cashflow positive (not quite there yet, because we've invested in virtual land, but we'll be there well before year end and making extra income as well).
Second, there are consulting companies - "sherpa firms" - who make money by billing real money directly to first life companies who have come to the conclusion "Hey, we need some of that Second Life stuff" and who have no idea how to go about it. Creating a place in the world for the company down the street is the equivalent of building web sites a decade ago, and we're seeing a similar land rush just starting up. Right now most of this activity is big firms paying big dollars, but I expect we're going to see some commoditization over the next year or two. It's possible that one could make a decent living doing four-figure (US dollar) Second Life setups for small and medium businesses.
Anyhow, that's the basics. If you want to poke around, you can try out Second Life for free. If you do get in-world, you can find me by searching for MikeG1 Schumann and I'll be happy to chat with you there.
Second Life is of interest to me on several levels. It has some game-like aspects, of course, and one can't neglect that it's fun (without having any particular goal) to hang out with online friends, just as IRC can be fun. And I do agree with those who think that some form of the 3D internet will take off over the next decade. While Second Life may not end up being the winning horse in that race (Linden Labs has plenty of opportunities to fail), it's one of the contenders and a good place to get some idea of what might work.
But from a business point of view, right now, it's also a place where real people make real incomes in real money. There are two distinct ways that this happens. First, there are around 100,000 paying customers (never mind the nearly 7 million signups; many of those don't stick around) putting hard currency into the Second Life economy. Linden Labs does manage to take a house rake on every transaction that involves converting real currency into Linden dollars or back, but much of that money comes back out again. The paying population is the size of a medium-sized real life city, and that's plenty big enough for some people to be making a living selling virtual stuff. Thanks to my wife's jewelry business, our membership costs are already covered, and we're on our way to being cashflow positive (not quite there yet, because we've invested in virtual land, but we'll be there well before year end and making extra income as well).
Second, there are consulting companies - "sherpa firms" - who make money by billing real money directly to first life companies who have come to the conclusion "Hey, we need some of that Second Life stuff" and who have no idea how to go about it. Creating a place in the world for the company down the street is the equivalent of building web sites a decade ago, and we're seeing a similar land rush just starting up. Right now most of this activity is big firms paying big dollars, but I expect we're going to see some commoditization over the next year or two. It's possible that one could make a decent living doing four-figure (US dollar) Second Life setups for small and medium businesses.
Anyhow, that's the basics. If you want to poke around, you can try out Second Life for free. If you do get in-world, you can find me by searching for MikeG1 Schumann and I'll be happy to chat with you there.
Double Shot #59
Today I get to dig in and set up my first production Rails host. I'm hoping this is not exciting at all.
- Logging Rails to SysLog with SyslogLogger - This could come in handy.
- Hidden gem - error_message_on - A more condensed way to display Rails error messages on a form.
Double Shot #58
You know, I was worried about "slippery slope" censorship issues 20 years ago in zinedom, and here I am worrying about them again in Second Life. Some things just never change.
- New Noobkit is up! - This online Rails/Ruby documentation site has new APIs, comments, and other improvements.
- FiveRuns: First Production Rails Management Suite - Basic overview and interview at InfoQ. (via dzone)
- A conversation on 'Keeping Second Life Safe, Together' - Some of the "slippery slope" news, though it may not mean much if you haven't been following Second Life closely.
Double Shot #57
Ah, a new work week is always full of such promise, isn't it?
- Setting Up Ruby (and Rails) For Ruby In Steel – From Scratch: - Step-by-step guide to one easy way to get going with Rails on Windows.
- There can be only one, a tale about Ruby, IronRuby, MS and whatnot - There's a lot of discussion in the Ruby community these days about the potential impact of Microsoft's forthcoming IronRuby implementation. This is one of the best summaries I've seen.
subscribe via RSS