Singpolyma

Technical Blog

Archive for the "Tech" Category

Replacing SMTP with XMPP

Posted on

The idea is out: XMPP is a perfect replacement for SMTP.  SMTP (the current standard e-mail program) is outdated for a variety of reasons, such as the fact that it’s not SPAM resistant and that you can’t know for sure (easily) who sent a message.

XMPP (a.k.a. Jabber) solves a lot of this and is a fully extensible protocol that has already been adopted as a standard for IM.  The benefits are many, and there is only one major hurdle: every server on the Internet would have to change software!

Regular readers may be able to guess my (and others’) solution to that problem: backwards compatibility!  When using XMPP for primary email, one must provide a bridge back to the SMTP world.  There’s no real way around that for now.  Fortunately, it’s not too hard.  There are a few options:

  1. Write a client that supports both XMPP and SMTP (through POP3 or IMAP) and have an identical address on both networks (think @gmail.com).
  2. Modify (/write) an SMTP-based mail server to support XMPP.
  3. Modify (/write) an XMPP server to support SMTP.

I really believe option #3 is the way to go.

What else may be required for this to become a reality?  Well, some way of keeping the traditional email experience (at least somewhat) may be required for the masses.  This means things like an inbox (for non-chat messages) and tags for message history.  Gmail actually already has this for offline messages.  There was also some work in 2004 on an XMPP client that supported something like this.

Some say that the encoding of emails must be retained.  I think this is bunk because it defeats the purpose of changing protocols and killing the old standard.  Some thought does need to go into the handling of offline payloads (especially file transfers / email attachments).  I think data: URIs may work for this, but something better may be in the works.

All it takes is one person who decides to adopt this as their primary way of functioning.  They develop some software, and it spreads from there.  I’m sticking with GTalk servers for Jabber for now (although I have the power to run my own @singpolyma.net), just because it’s easier for people who already have that address (I hate having multiple addresses).  What I’m really waiting for / looking for is a decent client for this.  Gmail has IM built in and handles this model for offline messages well, but it is not really even possible to reply to emails via Jabber, et cetera.  GTalk interfaces (including Gmail) actually don’t support any XMPP message type except chat well just yet.  We’re getting closer to something that could work though.

Blogging vs. Commenting

Posted on

I’ve been reading Marc Andreessen’s blog for some time now, and have been ever impressed by the quality and range of content he’s putting out.  One of his recent posts dealt with some meta-conversation about blogging.  Is it better to comment or to post about something on your own blog?

He makes some great point against commenting.  Comments require filtering and moderation.  Comments also seem to encourage poorly written posts or small ‘me too’ which are not worth reading.

He also makes a rather big point about blogging.  Anyone can do it.  There are a number of free services (Blogger and WordPress.com among them) that let ANYONE EASILY blog.

I’m not ready to turn off comments here just yet, but I must say that this makes sense to me.  If you link to me I’ll find what you said.  If you trackback it still shows up here on the post.  I think there’s a place for commenting, maybe, but it’s definitely worth thinking about.

What do you think?  Comments, trackbacks, or both?

Friend Bookmarklets for WordPress

Posted on

Friend Bookmarklets are something I’ve been playing with for awhile. WordPress users are no longer left out. With my new Friend Bookmarklets for WordPress plugin, users can generate a self-hosted friend bookmarklet to facilitate adding friends to the WordPress links system.

Push vs. Pull Alerts and Messaging

Posted on

Part of the big buzz surrounding Web 2.0 has been pull alerts as opposed to push alerts.

Push alerts / messages –  I send you a message.  This is how email and IM work.  I choose when, where, and how the message is sent and largely control how you receive it.  I send an email, you get it in your inbox.

Pull alerts / messages – I send a message which may (or may not) be intended for you primarily.  You decide when, where, how, and IF you receive it.  This most common form of this is RSS/ATOM feeds.  I publish to my blog / Twitter / whatever and you subscribe to me if you want to.  You can receive alerts via email, IM, Xanga, Facebook, Google Reader, BoxtheWeb, Sage, or a myriad of other options.

Some have said that push alerts are dying.

This makes some sense.  When I post on a forum, I don’t want to have their system email me every time there is a reply (email/push).  What I really want is to have easy access to a list of posts replying to mine to look over (RSS/pull).

However, this can go a bit too far.  Pull IM does exist to some extent, but it defeats the purpose.  I want you to see something NOW, it’s URGENT, INSTANT.  Pull does not fit this.

Push alert systems, however, just refuse to die!  Facebook/Myspace messages/wall posts.  Blog comments.  New friend-group messaging systems like Pownce.  Push is extremely popular.

The masses are rarely right, but perhaps we shouldn’t brush off push alerting altogether at this point.

Client-side Scripting

Posted on

So it’s time for a post on technologies. A specific set of competing technologies in the client-side scripting market. I will look at the following technologies (I know, it’s not a complete list) : Flash (/Shockwave), Silverlight, ActiveX, JavaFX, Java, and JavaScript.

Introductory Notes

I love standards. If you’ve been around for any amount of time you know that. Required browser plugins, closed technologies, or incompatible formats / protocols make me cringe. They make life on the Internet so much more complicated. I want to be able to open ANY browser on ANY system and surf to ANY page and have it just work. I also want to be able to develop without having to purchase software (IDE, compiler, whatever) to do it with. Anything else is a headache for both developers and users, at least IMHO.

Flash / Shockwave

The Adobe family of client-side applications is one of the most popular. Flash movies will run on almost any computer, because there is a flash plugin available for all major browsers and Operating Systems. This plugin sometimes comes installed by default, but is free otherwise. MANY sites require the use of this plugin, so to assume users have it is not that bad of an assuption.

BUT, you have to purchase a flash-authoring tool from Adobe to create these wonderful snippets. Then, what of the browsers, OSs, or architectures NOT supported (there are some)? What about systems you do not have rights on where you cannot install plugins? And think of the hassle when you must upgrade that plugin! You are surfing just like normal on a site you often frequent when suddenly: “Adobe Flash 10 Required…”

Silverlight

This is a new Flash competitor with MS. Browser, OS, and architecture support is promised by official release. It’s still free, but I believe that (like Flash) one must purchase software to author it. Being new, it is not nearly so widespread as Flash, meaning that if one uses it in the development of a site MANY people are going to be forced to install Yet Another Plugin to view your page.

ActiveX

An older MS offering, this system was never implemented outside of Internet Explorer (to my knowledge). This limits one’s audience tremendously. It also has a reputation for security holes. That said, it is a very powerful plugin-free (but IE-only) system that can easily allow direct access onto the local system. It competes more with Java Applets than with Flash.

JavaFX

A new plugin from Sun Microsystems that uses Java syntax to create Flash-competing content. I believe that the free-to-use Java toolkits can be used to create the apps, which is a benefit. An additional plugin MAY (not sure) be required to view it, however. If so, similar issues to Silverlight.

Java (applets)

Java is a full-fledged programming language meant to replace C++. It has been used to create small programs (applets) that execute inside a browser. Open, standard, and recently open-source licensed, the language lacks only default adoption. A plugin install is required to run applets. This plugin is, however, quite widespread and supports more browsers, OSs, and architectures than any other system I am considering here. Because the language is a complete language, it has the power of ActiveX to reach the local systems. It has a better reputation when it comes to security, but has a reputation for being slow in the browser environment.

JavaScript

Any webdev reading this knew I would end up here. JavaScript is lightweight, open, and standard. Available in most major browsers, OSs, and architectures, JavaScript code can be written that will, mostly, JUST WORK for users WITHOUT the need to install a plugin. It can be written directly into a webpage, or in a separate file, requiring only a text editor to produce working snippets. JavaScript has it’s own share of problems, but is, IMHO, the best solution at this point.

Conclusion

Many will argue that JavaScript does not have the power of the other systems. This is certainly true when comparing it to Java or ActiveX. However, none of these systems overlap 100%. They are merely used for many similar tasks. Most of which JavaScript can handle just fine. Slideshows, user interfaces, fancy animations, all can and have been done in JavaScript. I vote we make things simpler for everyone and stick to it wherever possible (and that’s a lot more than you may think!)