Open Source Projects
Apr '10
05

Notes on brand positioning statements

posted by delano

A comment from Alistair Croll today made me realize I didn't have a brand positioning statement for one of the projects I'm working on. While creating one, I put some notes together and thought I would post them in case they're helpful for someone. If you don't have a brand positioning statement or you want to understand them better, definitely take a look at the links below too!

Definition

A brand positioning statement describes the "mental space" a brand should occupy in the minds of a target audience. It serves as an internal document which guides most of a company's marketing communications strategies, programs and tactics. The brand positioning statement focuses on the elements and associations which meaningfully set a brand apart from the competition. It is typically constructed in the following format: "To (target market), Brand X is the brand of (frame of reference) that (point of difference) because (reasons).
via Venture Republic

Process

  1. Describe your customers (so you know what's important to them)
  2. Define yourself in terms of your competition (to help you explain your product)
  3. Explain your greatest benefit (the one thing that's most important to your most important customers)
  4. Put it together to create your Brand Positioning Statement
via Dan Wilson - Web Marketing Today

Templates

FOR ,
OFFERS
THAT PROVIDES .
via Dan Wilson - Web Marketing Today

OUR
IS THE ONLY
THAT .
via the Small Business Marketing Guide

FOR
IS A
WHICH PROVIDES
UNLIKE
WHICH PROVIDES .
via the Small Business Marketing Guide

FOR THAT ,
WE OFFER .
UNLIKE , PROVIDES THAT .
adapted from a comment by Thomas Ptacek

Feb '10
25

Automate SSH key authorization with Rye

posted by delano

I got annoyed with manually authorizing my public keys to ~/.ssh/authorized_keys and ~/.ssh/authorized_keys2 so I added a feature to rye to automate the process.

$ rye authorize user@example.com

The expected output looks something like this:

$ rye authorize user@example.com
Authorizing user@example.com
Passwordless login failed for user
Password: ************
Added public keys for: 
/home/user/.ssh/id_dsa
/home/user/.ssh/id_rsa
Now try: ssh user@example.com

Installation

$ gem install -V rye

You can generate an SSH keypair with the following command iff you don’t already have one (by default they’re installed to ~/.ssh/id_rsa or ~/.ssh/id_dsa):

$ ssh-keygen -t rsa
Sep '09
22

The Secret of Object#to_s

posted by delano

There’s something about Ruby that I’ve wanted to know for a long time: where does the hexadecimal value in #<Object:0x000001009e60f8> come from? Today I finally went looking for the answer.

When in doubt, look at the code

The documentation for Object#to_s tells us that the value is based on the object id: “Returns a string representing obj. The default to_s prints the object‘s class and an encoding of the object id.”

Looking at the source code for to_s, we can see that it’s using sprintf to create the hexadecimal value. From object.c:

/* Ruby 1.9 */
rb_sprintf("#<%s:%p>", cname, (void*)obj);

/* Ruby 1.8 */
snprintf(RSTRING(str)->ptr, len+1, "#<%s:0x%lx>", cname, obj);
You can find this code in the Ruby source code in the file ruby-VERSION/object.c

Now, Ruby’s sprintf doesn’t support %p or %lx but it does support %x. However, there’s obviously more to the story because the values still don’t match up:

obj = Object.new
"#<%s:0x%x>" % [obj.class, obj.object_id]        # => #<Object:0x80813ff4>
obj.to_s                                         # => #<Object:0x101027fe8>

So what do we need to do to the object id to get the real hexadecimal value?

A tiny calculation

If we take a look at the hexadecimal values in plain-old decimal, the answer becomes obvious. Can you see it?

"0x80813ff4".hex                                 # => 2155954164
"0x101027fe8".hex                                # => 4311908328

All we have to do is double it!

And the answer is…

"#<%s:0x%x>" % [obj.class, obj.object_id.abs*2]  # => #<Object:0x101027fe8>

Note: I’ve created a tiny project called Hexoid to handle the minor formatting difference between Ruby 1.8 and 1.9.

See the archive for more

Solutious is a software company based in Montréal. We build testing and development tools that are both powerful and pleasant to use. All of our software is on GitHub.

This is our blog about performance, development, and getting stuff done.

-       Solutious

I'm Delano Mandelbaum, the founder of Solutious Inc. I've worked for companies large and small and now I'm putting everything I've learned into building great tools.

You can also find me on:

-       Delano (@solutious.com)