Recent Blog Posts
Blogs ยป Archive for July, 2006
Don’t read your prospect’s mind
Here is an interesting observation:
Many times, prospects call me and ask me if my programs do X or Y (i.e., in the case of my Boxing Fitness site, do I provide Continuing Education Units? Or, is my Certification accepted in gyms in Great Britain). Usually the answer is “no,” so when I get these questions, I cringe. I fear I’m not going to get the sale.
But I just answer honestly, without trying to sell, and a funny thing happens:
Many people sign up any way!
The same thing happens when I sell larger projects. People ask tough questions about services I may not offer, or ask if I can reduce my price, and the correct answer is “no.” So I say, “Sorry, but no.” And people often buy any way.
So don’t assume that because someone is getting a negative answer that they won’t buy. Don’t assume that they need that feature. Just stand your ground and answer honestly. People respect that, and often still buy. Sometimes they just want to know.
There are other examples of reading the prospect’s mind that can get you into trouble. If you assume that a prospect wants a certain feature and build that into your proposal, …
OSCON 2006: Practical OpenID
This week, Kevin Yank is reporting from OSCON 2006 in Portland, OR.
David Recordon (Six Apart, then Verisign) and Brian Ellin (JanRain) have had their fingers in OpenID since its inception. OpenID is an open user authentication system based on the premise that individuals own URLs. The system was originally developed to authenticate users that wish to comment on blog posts, in an attempt to reduce comment spam. It was designed to be very simple, so that users need only understand how to write HTML in order to make use of the system.
The OpenID 2.0 project (recently accepted into Apache incubator) extends on the original scope of OpenID to add facilities like messaging, but remains true to the original spirit of OpenID: simplicity and openness.
Importantly, OpenID does not deal with the issue of trust—OpenID will only allow a person to prove that he or she owns a particular URL, it does not give you any information about the trustworthiness of that person.
OpenID’s biggest distinguishing feature is its decentralized
nature. Anyone is free to set up their own OpenID server, which can
store user credentials and provide authentication services for those
users to any site or application …
OSCON 2006: No Flash Required: Interactive Browser Graphics
This week, Kevin Yank is reporting from OSCON 2006 in Portland, OR.
Gavin Doughtie has done stints in games development for Sony, web development for idealab, and software development for Picasa, but these days he works at DreamWorks Animation (yes, as in Shrek), and in his spare time dabbles in the heady world of in-browser interactive graphics. His buddy Jon Stewart (sorry Jon, I came in late and couldn’t find a bio for you) came along to offer Internet Explorer work-arounds for many of the things that aren’t supported in IE.
This talk was really a grab-bag of solutions that mostly work here and there, a few experimental things that are on the horizon, and a couple of stand-outs that could practically be used today. The slides are available online.
For vector graphics, the obvious choice is the W3C standard for such things: Scalable Vector Graphics (SVG). Though slick and all-powerful, SVG doesn’t yet work in Internet Explorer, but that browser has the Microsoft equivalent: VML. Safari will support SVG soon, but not just yet.
For raster (pixel-based) graphics, there is Canvas, which also works in everything except Internet Explorer. Again, Internet Explorer has its own proprietary …
OSCON 2006: Cosmo and Scooby: Standards-Based Open Source Calendaring
This week, Kevin Yank is reporting from OSCON 2006 in Portland, OR.
Developed by the Open Source Applications Foundation (OSAF), Cosmo is a service enabling its users to put their personal information online and share it with others via open protocols like WebDAV. Scooby is a web-based front-end for accessing your Cosmo-stored information, and currently it provides a slick calendar view. In this talk, three OSAF developers provided an overview of these projects, their current status, and their direction for the future.
Cosmo/Scooby lead engineer Brian Moseley introduced Cosmo and its architecture. In particular, he concentrated on some of the extensions to WebDAV (which itself is an extension to basic HTTP) that have been developed for providing content-type-specific features: CalDAV for calendaring data, CardDAV for contact information. In the name of interoperability, Cosmo also groks the Atom Syndication Format and the Atom Publishing Protocol, and even the APIs introduced by GData and Google Calendar, not to mention the Java Content Repository (JCR) standard API, which, though developed to lofty ideals, has yet to live up to the promise, and has forced Cosmo to investigate more practical and scalable alternatives.
OSCON 2006: Ajax + .NET = Atlas
This week, Kevin Yank is reporting from OSCON 2006 in Portland, OR.
After a from-scratch introduction to AJAX, Christian Wenz gave a demo-heavy talk (my favourite kind!) showing off many of the features of Microsoft’s Atlas toolkit for building AJAX applications in ASP.NET.
At its most basic, Atlas makes it trivial to write client-side JavaScript code that sends requests to ASP.NET Web Services, but things get really interesting once you start to combine AJAX with ASP.NET’s other features.
The Atlas UpdatePanel is a great way to “ease in” to AJAX, while relieving one of the major annoyances of plain ASP.NET. By wrapping a portion of your ASP.NET page in an Atlas UpdatePanel, that portion of the page can perform postbacks (round-trips to the server to update the UI in response to user input) over AJAX, without having to reload the rest of the page. Wenz showed off how simple it was to embed ASP.NET’s postback-heavy Calendar control within an UpdatePanel to cut out all those annoying page reloads.
Wenz then went on to build a simple autocomplete demo in the same vein as Google Suggest. This was surprisingly easy to do, thanks to Atlas’s ability to extend existing ASP.NET components (like the …
OSCON 2006: Web Heresies: The Seaside Framework
This week, Kevin Yank is reporting from OSCON 2006 in Portland, OR.
Avi Bryant has the dubious distinction of being one of the few web geeks with an avid interest in Smalltalk, and has created a web application development framework that suits his particular fancy. That framework is Seaside. As it turns out, Seaside also breaks a lot of the conventional wisdom that is embraced by many other web frameworks, and those “heresies” are what Bryant focused on in this talk.
The first of the rules broken by Seaside is that web designers are responsible for producing HTML code. Many other frameworks go to great lengths to provide sophisticated template systems that allow developers and designers to work in tandem on the HTML of an application without stepping on each other’s toes (in theory). Seaside abandons this approach, and generates all HTML code from Smalltalk code within the application, based on the theory that, if the HTML code that is generated is semantically meaningful, all the designer should really need is to write the CSS code that styles the HTML.
One of the nice side-effects of this approach is that you don’t need to lose sleep over things like assigning names …
OSCON 2006: Understanding ZFramework
This week, Kevin Yank is reporting from OSCON 2006 in Portland, OR.
John Coggeshall is a respected name in the PHP world, and works as a technical consultant for Zend, and provided a fast-paced introduction to the Zend Framework as it currently exists in pre-release.
The Zend Framework (ZFramework for short) is an initiative that aims to build a standard framework for developing web applications in a clean, structured manner, using the object oriented features of PHP5. Although it is still under development, there are relatively stable portions of it that are already quite useful by themselves. For example, the portion of the framework that enables MVC-style application development can be used today.
The Model-View-Controller (MVC) approach to web application development splits the application into three components: the model, which provides a set of objects that represent the data at the heart of the application (usually, these correspond to database records), the view, which provides HTML templates for communicating the content and state of the application to the user, and the controller, which determines what action(s) to take in response to each request received from the browser.
Coggeshall demonstrated in code the simple mechanism used by the Zend Framework to implement MVC-style …
OSCON 2006: Gettting Rich with PHP5
This week, Kevin Yank is reporting from OSCON 2006 in Portland, OR.
PHP’s creator, Rasmus Lerdorf, gave a surprising talk on building PHP rich web applications using PHP5—suprising, because fully half the talk focused on low-level PHP optimization techniques. The slides are available online.
Taking a simple PHP script as an example, he set out to optimize it to meet a request throughput requirement of 1700 requests/second (as measured by http_load). Techniques he touched on along the way included using KCachegrind to analyze the Apache process running your script, in order to determine what parts of PHP are actually causing the slow-down in your script.
Some examples of bottlenecks he identified and fixed included a default PostgreSQL setting that uses secure SSL connections (with significant overhead) and PostgreSQL database connections, which are much slower than connecting to MySQL. He also showed how to further improve performance by caching PHP intermediate code and automatically optimizing that code using the various features of Alternative PHP Cache, a project that Lerdorf is actively working on right now.
Lerdorf then spent some time looking at new features of PHP 5.0 and 5.1 that make building Web 2.0 applications easier, including the libxml-based …
OSCON 2006: Cross-site Ajax
This week, Kevin Yank is reporting from OSCON 2006 in Portland, OR.
Paralyzed by indecision (at any given time at OSCON, there are literally three different sessions I would consider “must-see” going on), I went to Plaxo developer Joseph Smarr’s Cross-site Ajax: Challenges and Techniques for Building Rich Web 2.0 Mashups, mainly because I am giving a talk on the same subject at Web Directions in September. Slides will be available on the Plaxo blog.
Mashups, if you’ve been living under a rock, are web applications built by combining services provided by several specialized web applications, typically using AJAX as the glue. One of the main challenges faced by developers of mashups is the same-origin policy, which prevents JavaScript on one site from contacting other sites as a security measure. For mashups to really work, developers need to find a way around that restriction.
The story so far…
A number of well-understood solutions exist to this problem, but they all have problems of their own. Because the same-origin policy only affects the browser, a server-side proxy is the most obvious approach, where your JavaScript contacts your web application, which then makes the request to the service in another domain. Unfortunately, …
How strict is your dynamic language?
Considering the “big four” dynamic, procedural languages; Perl, Python, PHP and Ruby, to an extent they’re much of a muchness, offering only small variations on the same theme (ignoring PHP’s lack of support for functional-style programming). But sometimes little things make a big difference, and perhaps most of all when your code is given input to handle which it wasn’t designed for. Knocked up a simple example to compare them in this area…
You’ve got a function which takes a hash value (an associative array) and does something with it’s contents – fairly typical logic for a database-driven application, where rows are common currency. For sake of simple example, let’s say your input is a list of names, each name broken into a hash with the keys “first” and “given”. The question is how will your function cope when the hash doesn’t have quite the structure you’re expecting (like the first name is missing), given a fairly “default” use of the language – no non-standard functionality to make the language stricter…
Perl
Tackling Perl first, here’s a working example…
#!/usr/bin/perl -w
use strict;
my $names = [
{’first’=>’Bob’,'given’=>’Smith’},
…
Sponsored Links
SitePoint Marketplace
Buy and sell Websites, templates, domain names, hosting, graphics and more.