Blog

We <3 Feedback June 18, 2009

If you're reading our blog, hopefully you're aware by now that we're a different breed of CMS. To add to the list of reasons why is this: we listen to our designers. Vae is an exceptional platform, but we aggressively seek new ways we can make it better, faster, and easier to work with. We've already added several features in response to the needs of our designers (see also: Blog Post Scheduling).

So today, we're reaching out and asking you to tell us what you think about Vae. Is something slowing you down? Is there a problem you're trying to solve and you don't know how? In return, you can expect we'll work with you to find a solution if one exists already (more often than not this is the case), or we'll log it as a feature request and let you know how long you can expect to wait before it's available.

So send us an email, or contact your account manager. We look forward to hearing from you!

An Introduction To Checkboxes June 17, 2009

Vae's Checkbox Structure is a great way to store boolean values. Checkboxes hold a yes-or-no value which you can use with the <v:if> tag to perform conditional statements in your code. As an example, we'll add one to our Action Verb Record store, and perform a basic if-statement with it.

Here we are adding a new Checkbox Structure to our Artists Collection in the Backstage:

Once you've added your Checkbox, you can set it's value under the Content tab. For our example, we'll check the Checkbox under the Collection for 'The Sheets':

Great, now for each Artist we can perform an if statement to see if this Checkbox is checked, and it will only be true for 'The Sheets'. We'll do this on the page where we list our Artists, and we'll modify the Artists listing if they have the 'Has albums on sale' Checkbox checked.

<h3><v:a><v:text path="artist_name"/><v:if path="has_albums_on_sale"> -- Album Sale Going On Now!</v:if></v:a></h3>

Great, now 'The Sheets' appear with the modified title:

...and today's mini-tutorial is complete! Please contact your account manager, or email us, if you'd like to see more examples on how to use the Checkbox Structure.

Video Tuesday: The AJAX Attribute June 16, 2009

Get the Flash Player so you can see an awesome video about Vae.

Vae's AJAX attribute can save you time and make your code more readable. As always, checkout our Documentation and Integration Center for more videos and tutorials.

Subversion and Vae June 15, 2009

Vae recently began including integrated support for Subversion.  This is awesome for our designers who code websites in teams or anyone who wants to keep better track of their source code.

Subversion is a source control tool that makes it possible to rollback your code to previous versions, or branch and merge your code with the code of your fellow designers. We recommend using source control even if you're coding independently; checking your code in often to a source control system enables you to rollback to a previous version if you ever need to. It also serves as a backup in the event that you accidentally make a big change to a file, or delete one altogether.

We do make full filesystem backups of your code automatically every six hours, but you don’t have control over this process like you do with Subversion. Additionally, recovering these backups requires contacting us, whereas rolling back to a previous revision in Subversion takes seconds.

To start using Subversion, make sure it’s installed on your machine. It comes standard on many operating systems, but it’s a free download if you’re without it.  Once you’ve got the software installed, navigate in your Vae site’s Backstage to the FTP/Subversion tab:

Copy the address to your repository. Next, make sure you've created a user under the Users tab in your Backstage with permissions set to allow the use of Subversion. You will use these two pieces of information to checkout our Subversion repository:

By default, all that exists in the repository is a configuration file called '__verb.yml'.  This file is important for the Vae Local Development environment; it provides the Local Development Environment with necessary information about your site.

You need to manually add the files you want to source control. Once you've downloaded them from your FTP server, use the 'svn add' command to mark them as needing to be added to your repository:

Next, it's time to check in:

Your files are now safely within source control! Just repeat the check in process once you've made edits to your files. To make your changes live, you'll need to deploy the latest revision in Subversion to your live site.

There are two ways to do this.  One way is to return to the FTP/Subversion tab of your site's Backstage. Click the 'Deploy Subversion Site to Live Site' button, and click 'Okay' on the dialogue box to push your revisions out to the site:

Alternatively, if you have the Vae Local Development Environment installed, you may simply type 'verb deploy' at the command line.

Use the Subversion manual if you're in need of further reference. We hope to see more of our designers utilizing this powerful service. Our account managers will be more than happy to assist you as you make the transition over to source control.

Seeking Rockstar Developer Interns June 15, 2009

Did the recession cause your internship offer to get pulled?
Didn’t get that YCombinator funding you were hoping for?
Or maybe you were just too busy partying to plan your summer?

Well you’re in luck. We at Action Verb just decided to move to a new office, which means that we now have more desks. Our empty desks are basically begging for interns.

Our internship positions are part-time [20-30 hours per week] and interns never work on Fridays. So read our offer and see if we can convince you to come chill in NYC for the summer. We’d love to have you.

ABOUT ACTION VERB:

Action Verb, LLC is a small, fast-growing NYC-based startup (founded by a Harvard ’08 graduate) that is revolutionizing the way web design firms operate.

Our first and main product, Vae, is a hosted content management platform that totally separates the internal content management interface from the public-facing websites. Designers build a custom backend interface for each site using our graphical tools by selecting what types of data structures are needed for each section of the site. (For example, a Record Label site might have a collection of Artists, each of which has Photos, Videos, Tour Dates, Blog Posts, MP3s and Links.) Their clients can then log in to Vae and add/edit content within the framework created by the designer. This content is made available via a PHP API, and through VaeML, our proprietary content presentation language. Vae also integrates eCommerce, targeted E-Mail Marketing, hosting, and more. See http://vaeplatform.com/ for a bigger picture and a demo video.

Vae is powerful enough that it enables small design teams (even those without programmers) to compete with big design firms for big projects. But it’s also quite addictive — most design firms that use Vae now use it exclusively, even for small sites. Vae is being used on more than 100 websites.

ABOUT THE INTERNSHIP OFFER:

We’re looking for two people to join our team as summer interns working on the Vae platform. You will work on real problems, and write real code that will be used in production.

We will work with you to identify and break off a problem that can be tackled fully while you’re with us. We want you to do something you’re interested in, and we have problems that run the spectrum from intensely algorithmic to frontend CSS work.

Possible intern projecs include:

  • rewrite VaeML parser in C using Ragel
  • optimize VaeQL engine for performance, using the set of queries that are actually being run on our production sites
  • integrate Vae with GitHub to provide one-click deploy from github to a vae site
  • integrate our newsletter analytics with our eCommerce analytics to provide a clearer picture of the sales funnel that originates from newsletter links
  • import/export engines to allow clients to easily migrate from or to other platforms such as WordPress
  • or anything else that you can convince us is useful

Interns work 20-30 hours per week, and our schedule is fairly flexible — so please take time to go enjoy the city. We normally work from 11-7. So a typical schedule for interns would be 11-5, Monday-Thursday. Or you could do 1-7.

Our internships pay $3,000, spread over 10 weeks. If you’re here for less than 10 weeks (and you can be), prorate accordingly. We will also give you an unlimited ride MetroCard, so you can get all over the city.

We will bend over backwards to get you college credit for the internship, as long as you point us in the right direction for your school. If your college requires that it be an unpaid internship to get credit, we’ll see if we can get you that $3,000 some indirect way.

Given that we’re getting a late start, we’d want you to start as soon as you could. Unfortunately, this also means that finding housing in NYC will probably be a pain, and you’ll be on your own for that. Craigslist is your friend.

Ideal candidates will:

  • be rising college sophomores, juniors, or seniors. Exceptions can be made though, so if you’re the next Nathan Weizenbaum, please apply.
  • have a very good working knowledge of XHTML, CSS, Javascript (preferrably jQuery)
  • have solid experience with either Ruby on Rails [preferred] or PHP [we have some code in PHP that you could work on, but it’s hardcore, not fluffy web stuff]

In the vein of 37signals, we’d be very surprised if we hired anyone that doesn’t use a Mac. Let the flames begin.

To apply, please send your:

  • resume
  • cover letter (see http://www.37signals.com/svn/posts/1748 but don’t stress about making it formal, just tell us why you’re interested in us and why we’d be interested in you.)
  • design portfolio (if you have one and are interested in something more frontend oriented. totally optional.)

to [email protected].

No phone calls or recruiters, please.

How Does VaeML Translate to HTML? June 12, 2009

VaeML is Vae’s proprietary presentation language that designers can code right into their HTML and PHP files. Because Vae is a hosted solution, Vae automatically processes your VaeML into HTML readable by any browser.

However, as a web designer, you’re likely interested in exactly how this happens.

To find out how a specific VaeML tag translates into HTML, use our tag library documentation. On each tag’s documentation page, we always make a point to demonstrate how a given tag is rendered.

Our tags that are translated into a single HTML tag also accept any attributes their respective HTML tags can handle. For example, Vae’s <v:img> tag is capable of accepting any attributes that the HTML <img> tag can accept.  Whenever this is the case, we make this clear on the tag's documentation page.

Common VaeML Mistakes June 11, 2009

While we do think VaeML is a pretty simple language to use, mistakes do happen. Today we'll cover a few things that even we stumble over sometimes. We might try to make this a reoccurring series as we notice new trends in our troubleshooting efforts. Remember, anytime you have a problem with your code, your account manager can help you find the culprit.

Remember What Context You're In

A common mistake early on is to try to specify a path to a Structure that doesn't exist, because you're in the wrong context. Say we have a collection called 'Artists' which contains Albums, Artist Bio, Artist Genre. Assuming Albums doesn't contain a Structure that's also called 'Artist Genre', this code won't work:

<v:collection path="Artists" filter_input="query">
Here's the albums by <v:text path="artist" />:
<v:collection path
="albums">
<v:text path="album_name" />
<v:text path="artist_genre" />
</v:collection>
</v:collection>

The problematic code is bolded. Since 'Artist Genre' is a Substructure of Artists and not Albums, this path is incorrect. To fix it, and grab the Artist Genre succesfully, we'd need to go up one level:

<v:text path="../artist_genre" />

Image Sizes Are Case Sensitive

Is the crop you setup in the Backstage not showing up on your site? One thing to check is that you spelled your Image Size correctly, and that you have the correct capitalization. The latter trips up a lot of people. Vae doesn't make Image Sizes all lowercase, nor replace spaces with underlines, as it does with xpaths. Instead, and Image Size called 'Big Square' should be used to like this:

<v:img path="about_us/photo_of_employees" image_size="Big Square" />

Don't Close Shortcut Tags

Shortcut tags aren't like other tags, in that they should not be closed (even self closed!). Here's a piece of code that would cause an error:

<div style="background: url(<v=/styles/background_image,480,360 />);"></div>

Instead, you should remove the self-closing '/':

<div style="background: url(<v=/styles/background_image,480,360>);"></div>

Structures vs. Superstructures June 10, 2009

Here's a question that new designers sometimes ask when they begin using our documentation: what's the difference between a Simple Structure and a Superstructure?

Superstructures

The two Superstructures are the Collection and the Section. The difference between the two is that the Collection can hold multiple entries of data (think multiple rows in a database), while the Section only has one entry (think about a static text file). Superstructures are the only Structures that can exist on the top-level of your website and are used to organize your content. Superstructures can contain other Superstructures.

Simple Structures

Simple Structures are the Structures which actually hold data. Some Simple Structures include Text, Text Area, Checkbox, Date, File, and Video. Simple Structures always exist within a Superstructure.