The Future of Online Presentations – Mixing Video and Slides

I am excited to announce Chicken Wing Software's online multimedia presentation system. The pilot presentation, created by Christine Perfetti of Perfetti Media, is online now. Facilitating a Usability Test is the first in what will be a series of presentations on usability testing techniques gleaned from her ten-plus years of experience in the field.
The system combines video with PowerPoint slides and text, all tied together with Dynamic HTML and JavaScript for a fully interactive experience. You can click on a slide thumbnail to advance the video to that spot in the presentation, and the displayed slide stays in synch with the video.
Even now, with only the first presentation, the system's potential is inspiring, and we are brimming with ideas for new features to add!
If you would be interested in using this technology for your own presentations, please contact us.
» Watch the presentation.
PayPal on Python – a Python interface to PayPal’s NVP API
Help test my new Texas Hold’em poker site
After many months of hard work, I'm proud to announce that my new poker site, Best Texas Hold'em, is now up and ready for a Beta test. You can play now at www.bettorbest.com.
It's still in its early stages, but gameplay is working. You can log in with a Yahoo, MySpace, or Hotmail account, or your email address (Facebook support coming soon).
Since it's brand new, there may not be anybody to play against right away, so you may have to check back, or better yet invite a friend, if there is nobody there. Soon enough there will be artificial intelligence support to fill in when necessary.
For the technically interested, the site is programmed in the Python programming language using the Django web framework, and hosted on a Slicehost server. The front end is pure JavaScript with no downloads or plugins required.
Give it a try if you get a chance, and please let me know if you find any
problems.
Thanks!
OpenID is useless
I've been very busy lately working on my next project: an online Texas Hold'em poker site. It's been a lot of fun, and I have most of the actual gameplay functionality working. Now I'm working on the less-fun but just as necessary part: the authentication and login infrastructure.
Since I'm using Django, I can piggyback on its useful authentication module. That's a nice start, but users still need to choose a username and password before they can use the site, not to mention filling out their name, email address, and date of birth. My goal is to lower the barriers to potential users - both psychologically and in terms of effort. Folks are hesitant to sign up for yet another login and password, and to go through a lengthy registration process
Enter OpenID. OpenID sounds like a very promising standard. Unfortunately, the standard promises more than the implementations deliver. Or rather, the standard doesn't quite promise what it seems to.
(more...)
Making a Facebook app (with Django) – part 3: Python & FBML
Welcome to the third part in my series of posts about creating a
Facebook application. I am using Django as my web development
framework, and this post will focus on some of the backend
techniques I have worked out to make this work easier. This is
not a tutorial, but a set of tools that I have developed. This
is a long post, with a lot of source code; I hope you find at
least some of it useful.
Keep in mind as you read this that the Facebook platform is
still very new, and likely to change. In fact, if you're a FB
user, you are probably aware they recently completed a major
transition to a new profile design. This included many changes
behind the scenes for developers, some of which are still
playing out. I recommend keeping up with
the Facebook
Platform Developer Forum and
the Facebook
Developer Blog.
Also, I will assume you have already read
the API
Documentation and the documentation
for PyFacebook,
and that you know how to create a web app
using Django. If not,
you will want to start there.
(more...)
Making a Facebook app (with Django) – part 2: JavaScript and FBJS
Welcome to the second part in my series of posts about creating
a Facebook application. I am using Django as my web development
framework, but this post doesn't have much to do with Django,
since it deals with the front end. In particular, it talks about
how to write JavaScript that can work both in and out of
Facebook.
As I mentioned last time, Facebook lets developers use a subset
of JavaScript, which they call FBJS. The FBJS is transformed on
the fly into JavaScript as the page is loaded. All variables and
functions you define or reference are prepended with a string
like "a123456789_", including calls
to document.getElementById
and setTimer and the like. This is
done in order to restrict what you can do with DOM elements, to
avoid cross-site-scripting attacks and unwanted user-hostile
behavior. FBJS is fairly well documented, so if you plan to do
some Facebook JavaScript development, you should start there.
The biggest restriction that FBJS imposes is that you can no
longer access the attributes of DOM elements directly, but must
go through an abstraction API consisting of a series of setters
and getters. For example, instead of saying something like
imageEl.src = myImageUrl, you instead need
to call imageEl.setSrc(myImageUrl).
(more...)
Making a Facebook app (with Django) – part 1: The Perils
Facebook made a splash a year or two ago when they opened up their API. Now developers could write applications that integrate with the site. Instantly, users -- many of whom had fled to Facebook from a spam-filled MySpace -- were inundated with Requests to battle ninjas and News Items bearing obscene pictures. To Facebook's credit, they did clamp down and put some restrictions on what apps can do. A few entertaining or useful applications have risen to the top, and the potential of the API is ready to be exploited. It's not an easy task for a developer, however.
In the next few Chicken Scratches posts, I'll talk about my experience developing two Facebook apps from scratch:
The Limerick Book, a site that works both in and outside of Facebook and allows users to share and rate Limericks, and
Play Scopa, a traditional Italian card game that users can play against each other in realtime (this one is not yet launched to the public).
This first post discusses some of the difficulties I have run into. In the next couple posts, I'll discuss how I dealt with them. First, to set the scene:
My setup
I am using the
Django web framework for my backend development, the latest SVN version running with Python version 2.4 on a shared host at
Dreamhost. In fact, it's the same server I use for this site and weblog. To connect Django to Facebook, I am using the nice
PyFacebook library, which is pretty mature, though I had to modify the code to support some of the latest features of the Facebook API.
And now, on to the perils.
(more...)
Auto-closing Django template tags in Emacs
I have written two previous articles about how I edit Django template files in Emacs and XEmacs.
Here is
How
I edit Django templates. And here
is More
on editing Django templates in XEmacs. Here today is another
little tip that can be used in conjunction with those two other
posts or independently.
Django templates involve a lot of punctuation. Between the angle
brackets and slashes of HTML and the curly braces and percent
signs of the Django template language, it's enough to make your
pinky fingers hurt just thinking about it. Therefore any little
trick to reduce some of this typing burden can be
helpful. Presented here is some Emacs Lisp code to provide
auto-closing of Django template tags. So even if you still have
to type things like curly-brace percent-sign space ifequal blah
blah2 percent-sign close-curly-brace, you won't have to type the
{% endifequal %}. (Of course, if you're using
the abbrev tips I gave previously, you won't even need
to type the opening tag very often, but sometimes you still do.)
(more...)
What’s Wrong with Flying: How the internet killed travel
Air travel is in a downward spiral. Not literally of course, but
clearly and consistently, and everybody knows it. The airlines know
it, the airline employees know it, travel agents found out a while
ago, and consumers sure as Hell know it. There are a lot of reasons
for it, but this post talks about just one: Expedia.com.
Airlines claim the degradation in quality comes from increased
competition. They say they are forced to cut corners and reduce
features in order to stay competitive. Does this make sense?
(more...)
Python templates – Django and Cheetah
When writing web applications, sooner or later (usually sooner),
everybody is going to need a template
language. String-interpolation just doesn't cut it. We
need a way to write something that is almost all text
(or HTML, or XML, or whatever), but with some dynamic pieces
thrown in.
Since this need is so universal, and the basic requirements are
so easy to describe, many different groups of people have taken
it upon themselves to create Yet Another Template Language. As
developers, we can join the fray and roll our own, or we can
wade through the myriad options available to us to find the one
that meets our needs or philosophy. Those who use PHP or ASP
pretty much have the choice made for them, since the languages
themselves are glorified template processors. Python
programmers have a lot more options.
Here I'm just going to focus on the two Python templating
languages I have used in real applications: Cheetah and the
Django templating engine. (Django, of course, is more than
just templates, but the template subsystem can be used
independently.) I use and enjoy both of these, but there are
significant differences that are worth comparing and
contrasting, when deciding which to use for your particular
needs. There are other comparisons out there, including one by
the Benevolent Dictator for Life himself (though that's a bit
out of date and inaccurate). When choosing which to use, you
should read as many opinions as you can, then make the decision
yourself. Presented here are just my personal thoughts.
(more...)