Friday, August 31, 2007

OpenID Accounts For QuickDeck

We recently rolled out a new account signup process based on OpenID. OpenID is a relatively new technology that has a lot of features and I want to talk about it from two different sides.

Why OpenID Rocks For Our Users

One of the most compelling features of OpenID is truly portable username/password management. I am constantly frustrated when registering with a new website and my username is already taken or their password requirements are different than my standard password. It doesn’t take long before you have a half dozen different username/password combinations floating around the internet. Talk about a maintenance nightmare!

Now, with OpenID, you no longer have to come up with a different usernames/passwords for every website you use. The same OpenID account can be used for any OpenID website.

There are a number of free OpenID services out there that you can sign up with, or you can run your own personal OpenID service if you’re so inclined.

Why OpenID Rocks For QuickDeck

When investigating how to implement security for QuickDeck, OpenID was a no brainer for us. The alternative to OpenID was basically to roll our own authentication system, and let’s face it, dealing with sensitive information is something we’d rather avoid. Instead of spending precious time building security features into QuickDeck, we were able to invest that energy into improving QuickDeck and rolling out new features (like OpenID!).

OpenID is also an Open Standard that has experienced a lot of adoption from the development community. Community support ensures that new features will hit the market quicker than some proprietary solution. Since OpenID is not owned by any corporations, we don’t need to worry about expensive licensing costs either.

There are a number of websites implementing OpenID security to complement their existing username/password system. We’ve decided to go whole hog and use OpenID as our only security solution. We want to hear your feedback to know if this is a good thing for our users, or if this is a major annoyance!


Wednesday, July 4, 2007

Use Your Favorite Ruby Library in Java

For QuickDeck we wanted to support Textile style editing, but we weren't able to find a great Java library to do it. I've been using RedCloth for my Ruby work - why not use that? Along comes Spring's built-in JRuby support to rock my world.
Here's the entirety of the process for integrating:

Add the JRuby jar


We're using Maven 2, so this just means adding a dependency like so:

<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby</artifactId>
<version>1.0</version>
</dependency>

Define the interface to implement



public interface TextileEngine {
String textileToHtml(String textile);
}

Create a JRuby script to integrate


This is a little singleton that adapts the RedCloth library to my interface.

require 'redcloth'

class RedClothTextileEngine
def textileToHtml(textile)
RedCloth.new(textile).to_html.to_s
end
end
RedClothTextileEngine.new

Put it in your Spring file



<lang:jruby id="textileEngine" script-interfaces="TextileEngine">
<lang:inline-script>
require 'redcloth'

class RedClothTextileEngine
def textileToHtml(textile)
RedCloth.new(textile).to_html.to_s
end
end
RedClothTextileEngine.new
</lang:inline-script>
</lang:jruby>

I decided to inline it because it's so short, you can also do something like this:

<lang:jruby id="textileEngine" script-source="classpath:redcloth_integration.rb" script-interfaces="TextileEngine"/&qt;

Use it!


We're using wicket-spring-annot, so just throw something like this in our Wicket components:

@SpringBean
private transient TextileEngine formatter;

And we've got Textile formatting courtesy of RedCloth and JRuby. Snap!

Footnote - the sort of ugly underbelly


The one ugly part of this was that I had to copy the redcloth.rb file into my project. It would have been a lot nicer to do something like this in my ruby script:

require 'rubygems'
gem 'RedCloth'
require 'redcloth'

but I don't want to require a separate JRuby install with rubygems, etc. Feel free to enlighten me on how to do this better!

Friday, June 1, 2007

The Friends and Family Release

Dear Friends & Family-

You have the dubious distinction of being the nearest and dearest of the authors of a new on-line Presentation Sharing application. How new you might ask? So new that you are the first to have the privilege of clicking around in it and sending us your feedback. Sounds like work you say? Ok, that’s basically what we’re asking you to do, but we’re worth it, right?

We’re targeting this application at relatively techy folks, the kind of people who might have slides from a tech conference that they want to share. Despite going afer a geeky audience we still want to make an application that’s fun and easy to use.

So please go in and try it for yourself. Please look for a couple of things:

  • Things that are blatantly broken
  • Things that are confusing, if you say “huh” we want to know
  • Things that would be cool to do later, give us your best shot

Thanks for all your help and your loving support,

Ryan & Lars
The QuickDeck Team


Tuesday, March 20, 2007

Getting Real Things Done

Starting your own pet software project is exciting when you're sick of your day job. But, unfortunately, you have to actually deal with your own gripes about software process. My partner and I have been experimenting with this since we started working on QuickDeck, a small webapp that's still "super secret" (as in nobody would really want to use it yet).

Our recent revelation was regarding the structure of our tasks lists. After a while, it's easy for our bug / feature lists to degenerate into a pile of the stuff we weren't sure about or needed to make a call about including it in the project.

Taking a page from Getting Things Done we changed the way we structure our task list - instead of a list of features, we have a list of next actions. As per the mantra of Getting Things Done this inspires us to act, and helps us to do more in the time between our weekly discussions.



This helped us to work more independently and embrace our constraint of only being able to meet up once a week. Now when I've got a minute to kill I can just crank on stuff - like drafting a blog post.

Monday, March 19, 2007

Tips and Tricks - Keyboard Shortcuts

QuickDeck is all about creating presentations as quickly as possible right? One mantra I try to live by is Work Smarter, Not Harder. Sure, you could use your mouse to navigate around sites and click here or there, but there are times when keyboard navigation is much more efficient.

(I personally cringe every time I see someone editing a Microsoft Word document that manually clicks on the Save button instead of using Ctrl+S shortcuts.)

Browser support for keyboard shortcuts varies. Each browser uses it's own key combination to trigger the shortcuts. Folks running Apple computers may have a slightly different configuration as well. Here's a quick breakdown of the different browser key modifiers used to trigger keyboard shortcuts:

  • Firefox - Alt+Shift

  • Opera - Shift+Esc

  • Internet Explorer - Alt



In order to accommodate those savvy users out there that prefer keyboard navigation we've been hard at work to ensure that QuickDeck supports keyboard shortcuts. For example, to add a new slide to your presentation using Firefox you can press Alt+Shift+N instead of clicking on the New Slide button.



Make sure to scan around the application for other actions that have keyboard shortcuts. You should be able to identify them by the special underlined character styling.

google analytics tracking