AppCloud Naming Changes »
Created at: 17.12.2010 21:41, source: Engine Yard Blog, tagged: Uncategorized appcloud
There is a well known aphorism among developers; there are only two hard problems in Computer Science: naming, cache invalidation and off-by-one errors. We will leave cache invalidation and off-by-one errors for another discussion. As part of our desire for clarity and consistency, we have started reworking how we refer to objects and activities in AppCloud. We want to give everyone a heads up since name changes can be a potential source of confusion. The names may be new, but we haven't changed any behavior. 'Rebuild' is now 'Update Instances': apply any pending software updates and configuration changes to all instances in your environment 'Ship It!' is now 'Deploy': deploy your application with Engine Yard CLI or the Legacy Web Deploy Let us know what you think and keep an eye on the blog for future updates.
more »
R(*)TFM »
Created at: 17.12.2010 04:11, source: Engine Yard Blog, tagged: Uncategorized books RTFM
Ruby. For a developer, the very word describes a world where art and code fall from your fingers like magic from the staff of Gandalf. Rails. An elegant framework for taming the wilds of the interwebs. Unbounded power and productivity await you from the command line all for the low low price of free; well that and typing rails. Typing rails at the command line creates new online universes. It is limitless power. It is the katana of the new digital samurai.... it makes all things online possible. Rails bakes 30 minute brownies in 20 minutes and ensures that you posses the fastest car in existence.
It also attracts a metric tonne of people who don't know what they're doing. A framework that's so easy "A Cave Man Could Do It" (tm) is bound to attract more than it's fair share of - well cavemen... and a few Force.com developers. These are people who have not RTFM and in some instances, never will. Infidels who soil the temple of Ruby, Rails and Sinatra with "eval" statements, unseemly for loops and Cargo Culted code.
Considering that the Ruby Community is a group of "doers" - bitching without proposing a solution is weak sauce. So, here at Engine Yard we put on our thinking caps and tried to figure out a way to give back a little somethin-somethin to the community. Here's what we came up with: If there are people out there that don't know the right incantations to get the most out of Ruby and Rails, it's our job to help them get all that information. It should not be our job to point and laugh at them.... well at least not until after we try to help them.
If you're new to the Ruby community it's not always easy to figure out where to go for good information about how to get off on the right foot. So, today we're inaugurating a grand experiment: Ruby RTFM. We want to make it easy for everyone to write better Ruby, so we're partnering with authors, publishers, blog editors and anyone who can assemble a technically accurate, marginally coherent, sentence to offer books and information for free when we can, and as close to free as the publishers will let us.
Our first foray into this brave new world comes from two well known names in the Ruby Community, Chad Pytel (Founder, ThoughtBot) and Tammer Saleh (Ex ThoughtBot, current Engine Yarder), authors of _Rails AntiPatterns_. We couldn't think of a better way to improve the Ruby and Rails code that we see (and cry about) on a daily basis than by giving people an exhaustive set of examples of what not to do. And before you see this for the shameless promotion of a friends book that this is, realize that Tammer owes me money for a bar tab and I'm afraid that the 35% discount that Engine Yard is sponsoring for his book is going to leave him owing me money, and my boss wondering how I managed to buy a few thousand PDFs on my expense report... but that's neither here nor there.
Grab the book here and use the 35% off discount code ANTIPATTERNS for as long as my credit card works. Enter the code in all caps at checkout. It's good for the print book, or ebook.
Likewise, don't forget to join our new discount books and screencast email list. We'll only use your email to notify you about new Ruby and Cloud informational resources available on the cheap. Or you can follow @engineyard on Twitter, find us on Facebook, or join our Engine Yard Community Group on LinkedIn. We'll be linking to the discount codes and content as fast as we can.
If nothing else check out the Cloud Out Loud Podcast, and experience our shameless support for people who write books for our community. This week the podcast features none other than the Runner Up for the sexiest man in Open Source Software, Tammer Saleh (heh heh, if you don't believe me listen to the podcast and search the google cache).
As far as we're concerned, this is a community effort. If you're writing a book that can help the community write better Ruby applications, get in touch with us at RTFM@engineyard.com. We want to figure out how to get that information into the hands of as many Rubyists as possible. If you have an idea for writing a book, then read Jeremy McAnally's book on how to write an e-book and drop us a line when you have a draft. We want books for Rubyists by Rubyists on all the stuff that Ruby people need to know. And even though he doesn't know it yet, Danish Khan just volunteered to keep a running list of the best resources for getting started with Ruby on Rails. If all this seems too "elementary" for your advanced Rails Brain - then check out José Valim's Crafting Rails Applications - even Carlhuda could learn something here.
At its best, building software is about the judicious mixture of art and information. At its worst, software is a quagmire of terrible ideas expressed in even worse code. Our mission is ensuring no Ruby developer writes bad code because he couldn't afford the PDF, or the bar tab at a GitHub drink up that would have gained her the insight into how to write Ruby the right way. One of the strongest assets in the Ruby world is our community and culture of sharing. Share what you know about Ruby and the Cloud with anyone and everyone who will listen. Inside every .Net developer is a metaprogramming guru waiting to be born. (Behind every .NET developer is a soulless IT shop that loves mind numbing control, but I digress...)
As always, let us know what you think - good or bad.
-- Randall "RTFM" Thomas
*(The R == Ruby, the rest they won't let me type)
more »
How to Host Hudson CI on AppCloud »
Created at: 14.12.2010 18:33, source: Engine Yard Blog, tagged: Uncategorized appcloud Continuous Integration Hudson
*Continuous Integration (CI) must be easy, easier to do, than not to.* It should reduce the pain of development. However, for many developers and their companies, the idea of running a CI server garners a meek "yeah, I should, but..." or "we did have a CI server running but it died one day and no one fixed it."
In this post I hope to convince you why you absolutely need a full time CI solution for your your team or company.
In a coming post I'll show you how easy it is to run your continuous integration test suite in an environment that matches your production environment. For "Engine Yard AppCloud":http://www.engineyard.com/products/appcloud customers this means you will have a one step solution for setting up and running your applications' CI test suites against AppCloud.
In just two steps that we'll break into two blog articles, you'll have a zero-effort CI solution, one as simple as using Engine Yard AppCloud itself.
h2. Which CI?
I'm going to do this in reverse. You are going to install a CI server and then I'll discuss which one you ought to choose. I know it's weird, but trust me.
h2. Demo Video
Take nine minutes to watch a quick demo of Hudson CI. The short demo will walk you through the two steps to get it hosted on Engine Yard AppCloud, and how to setup Post-Commit hooks from "GitHub":https://github.com
Host Hudson CI on Engine Yard AppCloud from Engine Yard on Vimeo.
h2. Hosted CI on Engine Yard AppCloud Follow these three steps to get setup with a hosted CI server. A summary video is included too. 1. "Create":https://login.engineyard.com/signup an Engine Yard AppCloud account. 2. Using the Quick Start wizard, create an application for @git://github.com/engineyard/hudson_server.git@ with default settings, and boot a single instance. 3. On your local computer:gem install engineyard-hudson ey-hudson install_serverWhen this is complete, you've got yourself a running CI server. h2. Take 2 - Which CI? I highly recommend using the "Hudson CI":http://hudson-ci.org/ as your CI server. Why Hudson? One simple reason. As demonstrated, it is very easy to set up. If you have Java installed on your local machine, you can also launch it by "clicking here":https://hudson.dev.java.net/hudson.jnlp. Or you can set up a Ruby-flavored Hudson server using the "Hudson.rb":https://github.com/cowboyd/hudson.rb project:
gem install hudson hudson server open http://localhost:3001It can be completely configured via its Web UI (see Manage Hudson on the sidebar), and also from a CLI (the "Hudson.rb":https://github.com/cowboyd/hudson.rb project). To add an OSS Ruby project into Hudson and automatically begin running its test suites:
git clone git://github.com/engineyard/engineyard-hudson.git cd engineyard-hudson hudson create . --type ruby # or hudson create . --type ruby --scm git://github.com/engineyard/engineyard-hudson.gitUse @hudson help create@ to see the list of options for the @create@ task. Hudson CI is a rock solid, open source CI server. It is widely used by many developer communities and is quickly gaining wider adoption within the Ruby/Rails community. One of the champion features I love about Hudson CI is that it can be configured to run test suites on alternate target computers. That is, Hudson can run the unit and integrate my Rails application tests within an Engine Yard AppCloud environment - exactly the same environment as my production application. This means ZERO setup time for configuring my CI system. A new project can have its tests executed by your CI system within minutes of creating a new Rails application. I want that. h2. Running CI Test Suites on AppCloud Stay tuned. Coming soon. The core functionality is working. There is a bit of clean up to make the "getting started" experience ultra-simple. To stay on top of announcements, you can check out our "Engine Yard Ruby on Rails blog":http://www.engineyard.com/blog/, the "@engineyard Twitter account":http://twitter.com/engineyard, our monthly "Engine Yard Newsletter":http://www.engineyard.com/newsletter, or our new "Cloud Out Loud podcast series":http://www.engineyard.com/podcasts. h2. "Is my Hudson CI supported by Engine Yard?" Currently Engine Yard is not offering any Support for Hudson CI. If you have issues with these instructions, please use the "Issues tracker":https://github.com/engineyard/engineyard-hudson/issues for the @engineyard-hudson@ project. For issues with the @hudson@ CLI tool use the "Hudson.rb issue tracker":https://github.com/cowboyd/hudson.rb/issues. h2. Hudson is Ugly. Please Help. Some people with very attuned aesthetic senses might argue that the Hudson CI dashboard isn't 100% good looking. If you are a designer who uses Hudson CI, and have some ideas about how to fix the Hudson UX predicament, and how to improve the look'n'feel, please "email me":mailto:drnic@engineyard.com. Together, with your help, we can help everyone have a better CI experience.
more »
Announcing the Engine Yard Cloud Out Loud Podcast »
Created at: 11.12.2010 01:16, source: Engine Yard Blog, tagged: Uncategorized podcast Ruby on Rails
Interview with Dr.Nic
Enjoy!more »
Engine Yard Lucky 13 Contest »
Created at: 10.12.2010 04:50, source: Engine Yard Blog, tagged: Uncategorized contest java ruby
UPDATE: The contest is closed. We will be sending shirts to everyone who tweeted before this update was added 12/11/2010 @14:00 PST. You will be notified via Twitter. Thanks so much!
Attention Java and Ruby engineers: A box of snazzy new Engine Yard t-shirts just arrived at our San Francisco office. Want one? Read on puzzlers!
The *Lucky 13* blog post spawned some gambling gossip. Earlier this week, eye-witness accounts reported that Charles Nutter was playing roulette with reckless abandon. Charles placed bet after bet on his lucky number *13*, ignoring the odds, and his friends' advice.
Here's where you come in. It's your job to explain Charlie's payout in code. In Java, write a method that takes an argument for the size of his bet. Call the Engine Yard Roulette Wheel, which returns the winning number (okay, it's actually a string). Return Charlie's payout based on a winning *Lucky 13*. Use as few lines of code as you can.
Ruby readers: same problem. Ruby. Go!
To qualify for a snazzy new Engine Yard shirt, you must:
- Post your code using http://gist.github.com.
- Send a Tweet with two items: A) Your gist, B) #engineyard
more »
