Visual Enhancements to the Dashboard »
Created at: 07.02.2012 03:43, source: Engine Yard Blog, tagged: Customers Engine Yard Cloud Technology
We have three new layout changes on Engine Yard Cloud coming out soon, and we’d like to tell you about them.
These layout upgrades make the Dashboard easier to use and visually clearer, but they don’t affect functionality or your established workflows. Most importantly, the new column dimensions will help us deliver other features and user experience enhancements over time.
1. Tools are up top.
2. Fix it quicker.
3. I’ll take my messages on the side.
Alert and notification messages are now on the right side of the page, making them more readable and preventing them from pushing everything else far down the page when they stack up.
Next up.
Holla at us!
We would love to hear your feedback regarding these changes! Please email ux@engineyard.com with your comments or suggestions.
more »
PostgreSQL 9.1 is now in Beta »
Created at: 02.02.2012 03:23, source: Engine Yard Blog, tagged: Technology
Hello again from the Data team! We are excited to start 2012 with a new Beta release: PostgreSQL 9.1 is now in Beta and available in every new environment.
Features
Here is a short summary of the exciting features of PostgreSQL 9.1; for more information, please refer to the official PostgreSQL documentation.
- Synchronous Replication: Synchronous replication ensures that transactions have been confirmed by a standby server in addition to the master, greatly preventing the possibility of data loss. PostgreSQL also supports transaction-level synchronous replication, which allows users to choose between response time and data safety on a per transaction basis.
- Common Table Expressions (CTE): Ensures the relational integrity of your data by allowing you to update multiple related records in a single statement. By using the results of one query to execute another query, you can update records recursively, hierarchically, or across foreign keys.
- Per-Column Collations: Adds support for linguistically-correct sorting per database, table, or column. This permits true multilingual databases where text columns can have different languages and the database correctly indexes and sorts values
- K-Nearest Neighbor Indexes: Supports incredibly fast search for things that are "near" a particular object. KNN enhances PostgreSQL's query capabilities by using mathematical "distance" for indexing and searching. These indexes can be used to enhance common text searches, similarity searches, geospatial location comparisons, and other queries.
- Foreign Data Wrappers (FDW): FDWs allow users to create "drivers" and attach external data sources, which can be used as read-only tables. FDWs are a powerful tool for enterprise-data integration and they make data migration easier.
Extensions
PostgreSQL 9.1 has simplified the installation and management of contribs (modules that allow you to incorporate additional features to your database server). Extensions replace the old contrib system and allow you to expand the functionality of your database in a much more straightforward way. Each extension has a companion sql file and PostgreSQL has a catalog of what's installed and available right from the database console.
You can list your available extensions by executing the following command from your psql prompt:
myapp_production=# select * from pg_available_extensions;
In order to use an extension module in a database you only need to run the CREATE EXTENSION command to install the module’s features into that database. (Note: this command must be run by a database superuser). For example, if you want to support the multidimensional-cube datatype, you can extend your database enabling the cube module:
myapp_production=# CREATE EXTENSION cube;
Using Extensions on Engine Yard Cloud
We are updating all PostgreSQL 9.0 contribs to the new extension format and making both versions available via the postgres9_extension custom recipe. This recipe allows you to enable PostgreSQL extensions packages on Engine Yard Cloud. Just edit the main/recipes/default.rb file with your database name and comment out the line that contains the extension you want.
Please make sure to let us know if you want us to add a specific extension. We’re actively working on this recipe so expect it to change often. Also, make sure that you review the instructions, because extensions may be available for different versions of PostgreSQL.
We hope you are as excited as we are about this release.
Here are more resources for PostgreSQL extensions:
more »
RVM Stable and More »
Created at: 24.01.2012 22:13, source: Engine Yard Blog, tagged: ruby Technology
Stable RVM has been available for some time now. Many of you may know what goes on in RVM, but there is still a story to tell.
RVM is now using git flow, following the model outlined here, which makes a diametrical change in the release model of RVM. We will no longer make small releases using the master branch. We will have rare larger releases (called latest). Even so, we will maintain a stable branch which gets only fixes and important updates like ruby version updates. This new release model will allow for development of new features in head whilst keeping a stable version of RVM available for production use.
To install stable RVM:
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
To update stable rvm:
$ rvm get stable # the same as: $ rvm get branch wayneeseguin/stable
It is also possible to use your own fixes for rvm, which is especially useful for contributors. They can test their work or ask someone else to test their work before sending a pull request. Simply fork the project, add your changes, commit, push and then anyone can install / update to your fork:
$ rvm get branch mpapis/master
RVM now provides information about the age of the installation, in order to see exactly how old the installation is, we can run:
$ rvm info rvm rvm: version: "rvm 1.10.0 by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.beginrescueend.com/]" updated: "2 hours 52 minutes 49 seconds ago"
Significant changes to the output formatting of RVM should be noted—especially the installation and get / notes actions. RVM now displays less information and more readable output when it is installed and updated. The command rvm notes displays all of the important notes that were previously displayed in installation / update process. Updating rvm will now display only the newest updates for notes, so it is not required to run rvm notes after every installation:
$ rvm get head ... Upgrade Notes: * If you see the following error message: Unknown alias name: 'default' re-set your default ruby, this is due to a change in how default works. ...
If we run it again directly afterwards, we will see that there are no new notes:
$ rvm get head ... Upgrade Notes: * No new notes to display. ...
Another recent but useful change is the automatic execution of rvm reload after rvm get ...:
$ rvm get head ... RVM reloaded!
Important Changes
The practice of use-ing rubies from binary has confused a lot of new and experienced users alike. When RVM is loaded as a shell function and calls a binary script instead of a function, the ruby does not become active. This is because external commands or ‘binaries’ cannot affect the environment in which they are called. Currently when rvm is called as a binary (not a function) it will print a warning:
$ command rvm use 1.9.3 RVM is not a function, selecting rubies with 'rvm use ...' will not work. $ rvm use 1.9.3 Using /home/mpapis/.rvm/gems/ruby-1.9.3-p0
It was often useful in scripts to call the binary with the --default switch to make a given ruby the default. The new way to accomplish this is to explicitly create the default alias (which is what was done in background for the --default flag):
$ rvm alias create default <version>
RVM will no longer install a new ruby if it is already present:
$ rvm install 1.9.3
To make a clean re-install we must now use the reinstall action:
$ rvm reinstall 1.9.3
The old behavior of installation directly over top (not cleaning the sources beforehand) is still available with the --force flag:
$ rvm install 1.9.3 --force
As there were a lot of fixes in rvm, some changes require updating your system files. To update these files, use the --auto switch. This is very handy, especially for multi-user installations—also called ‘root’ or ‘system’ installations—as it will update the files in /etc to provide the latest settings from RVM:
$ rvm get head --auto
Another important change is added third installation type for rvm - mixed mode, now every user can decide to use his private rubies/gemsets:
$ rvm user [gemsets/all]
On Linux, it is also now possible for sysadmins to define rvm configuration by default for all new users that will be created with the --skel flag (which updates /etc/skel):
$ sudo rvm user [gemsets/all] --skel
--18 and --19flags:
$ rvm install rbx --19 # will install Rubunius with default mode set to 1.9 $ rvm install jruby --18 # will install JRuby with default mode set to 1.8
For compiling 32 bit mode ruby on OS X we have --32, --64 and --universal flags:
$ rvm install 1.9.3 --universal # to build fat binary including both 32 and 64 bit binaries $ rvm install 1.8.7 --32 # to build only 32 bit ruby $ rvm install 1.8.7 --with-arch=i386 # is equivalent to the 32 bit one, but is available only via RVM, ruby 1.8.7 sources do not support it.
For named rubies there is additional validation to help avoid naming issues; only valid names will be allowed for installation:
$ rvm install 1.8.7 --32 -n 32 # will fail $ rvm install 1.8.7 --32 -n n32 # will work $ rvm install 1.8.7-n32 --32 # equivalent of the above
Last but not least, RVM has reworked display-color management. RVM by default will now show colored outputs on the console and disables colors when there is no terminal attached. Colors can be also disabled with an environment variable or command line switch:
$ rvm list # will show the colored list by default in terminal $ rvm --color=force list | less -R # will show the colored list in less $ rvm_pretty_print_flag=auto rvm list | tee my-rubies.list # will automatically disable colors $ rvm --color=no list # will always disable colors
But wait! There’s More! Act now and you OS X users can have a shiny new tool! The official RVM GUI JewelryBox, version 1.2, has been released! It now supports all of the RVM changes we have mentioned above!
more »
Bridging the Gap Between Development and Design »
Created at: 19.01.2012 23:49, source: Engine Yard Blog, tagged: Technology Tips & Tricks
At a recent conference, I had the privilege of attending a talk entitled “Developers Can’t Design (and other completely untrue design myths)” by the incomparable Jen Myers. Jen is one of those rare individuals who effortlessly flows between design and development, having a formal education in computer science, but also a passion for design. I am not one of those people.
At least, not yet. For, you see, I have traditionally considered myself in the “graphically challenged developer” camp. There was no hope of bridging that gap. I know my limitations and embrace them. But Jen said something that caught my attention.
“Design is teachable.”
What’s that, you say? But what if I don’t have the eye for it? What if I don't have the natural talent? Doesn’t matter, she says.
“There are rules to be followed. It’s about solving problems, not just personal preference, or what you think looks good.”
Hmm, I like rules. I can follow rules. There are a lot of rules to development as well. Maybe she’s on to something.
“It’s not magic.”
Jen then went on to describe basic design principles (such as balance, proximity, emphasis, unity, repetition) and a few design concepts (such as positive/negative space, color theory, contrast, typography, ratios). As well, she says that there should not be “design” or “development” silos, but the two should be fully collaborative, and work as one team from start to finish. Jen says she's hard on designers who have no interest in learning any code, as well. Being able to speak the language of the other person can make all the difference.
One of the biggest takeaways I got from Jen was the encouragement for developers to just break out of our comfort zone.
“Find a UX group. Go to a UX conference. We won’t bite, I promise. In fact, we’ll be thrilled to see you there.”
Good advice, indeed. Really, that’s what it comes down to. Us breaking out of our comfort zone and being open to learning something new. The “I can’t design” fallacy is really just that. Instead, we should s/can't/haven't taken the time to.
Coincidentally, the awesome @rands also recently posted a fabulous article on his blog, A Design Primer for Engineers. He goes through the different types of design, and gives us all food for thought.
“Engineers are uncomfortable with ignorance, but worse, we’re bad at asking for help outside of our domain of expertise.”
I don’t know that this applies to everyone, but in general, yes. Perhaps that’s the case. He also provides some books to check up on, one of which being “The Design of Everyday Things.” Jen also mentioned this book in her talk, and I can personally vouch for its awesomeness. Believe it or not, it’s fascinating.
Probably the best words of advice in his post mirrors what Jen had to say.
“Party. More. Together.”
Bringing our communities together seems to be the best answer to bridging the gap between development and design. So what are we waiting for? It’s not magic.
- Find a design or UX Meetup near you
- Go to a design or UX conference
- Read The Design of Everyday Things , the Non-Designers Design Book (or any design book by Robin Williams)
Have you already bridged the gap? Do you know of other resources that will help others do the same? We'd love to hear them!
more »
Introducing the New Feature Request Forum »
Created at: 17.01.2012 20:30, source: Engine Yard Blog, tagged: Technology Tips & Tricks training
Here at Engine Yard we are committed to making you, our customer, successful. Today we are happy to share with you a new Feature Request Forum available to you within our support ticketing system. The Forum is a place for you to communicate directly with us and with other users. We hope you’ll use it to exchange ideas with the community, and discuss ways we can continue to improve our platform and services to better meet your needs.
This is the first of many community topic forums we will be opening up in the near future. Your opinions and ideas are very important to us, and we want to ensure that you have the platform to share them, not only with us, but with the rest of the community.
All you have to do is log into your Engine Yard Support account and you will see the "Forums" tab on your home page.
Please check out our new Feature Request Forum and share your thoughts on what enhancements you would like to see in our products and services. We are looking forward to hearing what you think!
more »

