Skip to main content

Mobomo webinars-now on demand! | learn more.

We are very pleased to announce that Present.ly has been nominated for the seventh annual AlwaysOn and KPMG Global 250 Competition! This truly is an honor as the AO Global 250 Competition nominates only the best and brightest emerging companies in the global marketplace in several categories. Our selection for the competition means that AlwaysOn and KPMG think that we are “demonstrating significant market traction and pursuing game-changing technology.” The winners are announced in July, and our fingers are crossed, but simply being nominated is an honor. Thanks AlwaysOn and KPMG!

Categories
Tags
Author

We are extremely excited to announce that Present.ly has been selected as a CNet WebWare 100 Winner in the Editors’ Choice category. The WebWare 100 is a list of the top 100 web applications of the year, and to be included as an editor’s choice is a great honor. Thanks to everyone who supported us in the voting and to all of our users for helping us get to this prestigious accolade.

This award shows the recognition that Present.ly is gaining as a tool for enterprise collaboration and a new way to collaborate with co-workers. This is going to be a great year for Present.ly and we have lots of big things planned, so stay tuned to this blog for some new announcements in the coming weeks.

As we celebrate our success, we would love to hear feedback from those who use our product to enhance their business communications. If you have suggestions or comments, feel free to send an e-mail to info@presentlyapp.com or just leave a comment on the blog!

Categories
Author

RSpec macros (like those in the fantastic Remarkable library) ease spec writing for repetitive tasks, but is that process more effort than it’s worth? No — it’s actually quite easy to write and include macros for your specs to do some of the standard heavy lifting.

This is a great resource to get started with how to write the actual macros (or custom matchers) themselves.

What tripped me up was how to actually include them in my examples. Monkeypatching is rarely a clean process. And, while the comments on that post mentioned a public API, how to use that API wasn’t immediately obvious (as with many things about RSpec).

In my case, I was looking to define a quick login! macro that would allow me to easily create a before block to log in as a specified user or just as a FactoryGirl generated one in a TwitterAuth based app. Here’s the module I wrote and stuck in my spec_helper.rb:

module LoginMacro   def login!(user=Factory(:user))     before do       @current_user = user       controller.stub!(:current_user).and_return(@current_user)       session[:user_id] = @current_user.id     end   end end

So that was relatively straightforward and now what I wanted to be able to do was call it in my controller specs like this:

describe UsersController do   describe "#create" do     login!          it 'should etc. etc.'   end end

As it turns out, RSpec offers the ability to add macros and matchers via the config.extend and config.include methods on the RSpec configuration object (extend is for class-level macros like the one I wrote here, include is for instance-level matchers). You just have to add this to your spec helper’s configuration portion:

config.extend(LoginMacro)

Voila! Now your specs will be able to use the login! macro to set up a user in no time.

Experienced RSpec users are already familiar with this, but I find that certain things can be hard to come across if you don’t already know how to use them. So I thought I’d blog for the benefit of others like me: this is an easy way to use RSpec macros.

Categories
Author

While on a recent plane ride, I embarked on a self-imposed quickfire challenge to use Adobe Illustrator to design the text “@davidpots” (my Twitter username) in the style of the Washington Capitals logo. I was armed with only 45 minutes and a vector version of the Capitals logo; no internet connection would be at hand for additional assets (such as fonts, etc).

By the end of the plane ride, things worked out great:

Throughout the remainder of the post, I’d like to share an overview of the approach I took and the Illustrator techniques used to make this happen. The result is not merely a tutorial, but rather a broad look at some Illustrator skills any user might find helpful in such a situation.

Start With What You’ve Got

First step when resources are short? Make the most of what you’ve already got. While in a perfect world I’d have access to the font on which the Capitals logo is based, in this case I’d have to make due with the letters (or rather, shapes) that make up the source logo I was starting with.

Fortunately, “Capitals” and “@davidpots” have quite a few letters in common. My first move was to ungroup the shapes in the “Capitals” logo and move all letters that matched into their proper placement in their “@davidpots” counterpart.

After this first step alone, about half of the letters are already in place. What's left? Creating the @, d, v, and o. Onward we go.

This Shape + That Shape

To create the remaining letters, I would have to create custom shapes based on the contours of existing elements. This would ensure the overall look & feel of the logo remained consistent.

Starting with the d, I saw that the base contours I'd need already existed in the c and the l. Through combining these two objects, the resulting d would retain the general shape of these other letters.

So far so good. While the remaining letters wouldn't necesarily be as simple to create, the basic premise & approach would be the same.

Take This, Tweak That, and Drop the Rest

Next up is the letter v. After a moment's investigation, it seemed the best way to recreate the bottom point of the v (with existing elements of Capitals) is through the upper-right corner of the letter p.

Unlike the creation of the d, this would require a bit more work. Instead of simply combining two separate letters to create a third, I would instead be transforming & tweaking part of a letter and then getting rid of the rest. I did it like this:

First, rotate the p 180 degrees…

Second, use the direct select tool to increase the height of the left arm

Third, use the Pathfinder's divide function to get rid of excess shape at the top

And that's it! The v is ready to be inserted into its namesake.

The exact same approach was used to create the o. Starting with the already-existant p, (1) the shape is divided, as to get rid of the unnecessary bottom stem. (2) Next, the remaining corner is duplicated & rotated 180 degrees. (3) Finally, the two remaining pieces are moved into place to form the o. Voila!

Round the Corner(s) & Tie Up Loose Ends

The final and most challenging letter to create was the @, which would require the most alchemy of the bunch. In summary, my plan would be to first (1) create the interior shape of the symbol, and second (2) use an external stroke to create the wrap around shape of the symbol — this would ensure the curves were 100% right-on. Here's how I made it happen:

Creating the inner shape
The first step was creating the inner shape of the @. Locating all I would need in the base of the d contour, I simply created a dividing line and used the Pathfinder's divide tool to make a clean cut:

Rounding the Corners, Part 1
So far so good — but I realized that I would need to round out the corners on the right-hand side of the shape I created (lest the sharp/jagged run wild and free). To make this happen, I first (1) spotted an existing corner curve in the p, (2) used the Pathfinder's divide tool to isolate this corner, (3) and finally shifted this over into the contour of my original shape.

Rounding the Corners, Part 2
The previous round the corner approach was used one more time for the upper-right corner of the shape. This time I used an existing corner from the a to make it happen. Same basic steps:

Creating the Outer Wrapper
In order to create an outter wrapper for the @, I decided to use the object's stroke. This would ensure the curves remained consistent in both contour and width. To make this happen, I first (1) gave an exterior stroke to my original object. Next, (2) an additional stroke of then wrapped around the shape again. Finally, (3) after expanding the strokes into proper shapes (Object > Expand), I used the Pathfinder's divide tool to get rid of the undesired middle red section.

Finishing Touches
The very last step involves tweaking the lower-right section of the shape to complete the @ transition. This involved (1) using the Pathfinder's divide tool to once again get rid of the undesired portion of the outer wrapper. (2) Next, I created a small curved shape to join the two shapes, which was (3) moved into place and combined with both shapes to complete the task.

And We're All Done!

And there you have it! All shapes have now been created. I needed only to align the items as desired and save my final product (which I now proudly wear as my Twitter profile pic in support of the team).

Could this have been arrived at quicker if I had the original Capitals font to work with? Of course! But that is removed from the point: this was instead about the challenge of a self-imposed quickfire task which forced me to think quickly & make the most of the resources at hand.

In closing, I must of course bestow the Caps with all the good luck I can muster for game 7 against Pittsburgh. It has been a truly epic series so far, and I trust Washington is going to bring it home to DC with their best performance of the series. Let's go Caps!

Categories
Author

And I’m back from RailsConf 2009! I had a great time and enjoyed meeting and speaking with a number of Rubyists who had previously only been @-names on Twitter. I also had a great time giving my talk, Twitter on Rails. Thanks to everyone who had a chance to make the session and especially everyone who made it to the Twitter BoF on Wednesday night. I got some great feedback and interesting ideas for future work.

I recorded my entire session as a screencast (a last-minute idea that I’m very glad to have had; with 30+ minutes of livecode the slides are only so useful), and I have also posted the slides (also embedded below) and the completed livecode. I’m happy to answer any questions about Twitter app development, TwitterAuth, or anything else since I didn’t have a chance to take questions during the session.

Thanks to everyone at RailsConf for making it a great conference, and hopefully I’ll see many of you at another Ruby event soon!

Categories
Author

I am honored to be named one of DC's Top 100 Techies in the May '09 issue of Washingtonian magazine. This list included some friends like Phillip Merrick, Chris McGill, Haroon Mokhtarzada, Hooman Radfar, Shashi Bellamkonda, Peter Corbett, Jill Foster, Sid Banerjee, Sean Greene, and Mike Lincoln. All the members of the group bring technology and innovation to the area.

The definite highlight was meeting Ted Leonsis at the photo shoot. Ted is just an incredibly nice guy. I look forward to making further contributions to the Tech scene in the coming years with my new endeavors.

Categories
Tags
Author

The iPhone platform and the Apple App Store radically changed the way we work, live, and play. The massive iPhone success has resulted in other mobile vendors launching similar stores for their devices. In addition, the new generation of Software Development Kits (SDK) is making it much easier for developers to build and deploy applications and services for the mobile workforce. These mobile applications provide rich user experience by leveraging advanced device features such as multi-touch screens, GPS, compass, accelerometers, cameras, and other sensors.

At Mobomo, we are committed to building smart applications (simple, useful, interactive and beautiful) on these emerging platforms. Our applications will help the consumers to obtain real-time data, save money on shopping, and entertain you when you have some down time. So stay tuned for more details.

We would love to hear your thoughts; feel free to send us a note at: hello@mobomo.com

Categories
Author

On this Earth Day, we are happy to highlight our most Earth-friendly client, Earth Aid. We've been working with Earth Aid to build an innovative new service designed to help consumers reduce energy consumption and then reward them for their savings. This is the first service to bring carbon offset trading down to the individual level — previously carbon offsets had only been tracked and traded at the big business level.

Hear it first-hand from Earth Aid CEO, Ben Bixby:

"Households have a big role to play in the fight against global warming, but they've been left out of the $100 billion carbon market system that allows big business to earn rewards when they save. Earth Aid's service is the first tool that can measure and verify your energy savings, 'bundle' them with savings from other households, and then sell them on carbon markets, in the same way as big business."

From the day we started, we knew there would be significant technology hurdles to overcome, along with a tightly compressed development schedule. Earth Aid chose Intridea as their technology and design partner because of our reputation as an innovative company that excels under pressure.

Our team loves a challenge, and were able to get through even the thorniest problems that came up throughout development. Using our proven agile methodologies, we worked closely with Earth Aid to deliver feature-rich iterations that brought them closer to their launch point every week. Working in tandem, our design and development teams built a great looking user interface that was full of function and easy to understand.

Ben and the crew at Earth Aid are a pleasure to work with. Their enthusiasm for making the world a greener place is contagious, and our team voluntarily put in extra hours to help ensure a successful beta launch. We're looking forward to expanding the Earth Aid feature set and providing additional ways for individuals to reduce their footprint and earn money at the same time.

Please check EarthAid.net out and sign up today - not only will you do the planet some good, but you'll get paid for it, too!

Categories
Author

Twitter recently implemented Sign in with Twitter, a convenience layer on top of their OAuth solution that provides a better user experience for those making use of OAuth as a sign-in strategy for their applications. I have just added support for this new feature to TwitterAuth. This is available immediately to new applications made with TwitterAuth as the default implementation.

If you already have a TwitterAuth application that you would like to utilize the new sign in method all you need to do is add one line to each of your twitter_auth.yml environments:

authorize_path: "/oauth/authenticate"

You don’t need to reset any user data or make any other changes, and when you restart your server people should be able to take advantage of the new experience. Enjoy!

Categories
Author
Subscribe to