Lazycoder

12Mar/070

Online applications and search

: “How do you search an application? Help documentation, maybe, but a full application? Sure there are things you want to associate with your application so it shows up in Google, but is that really searching an application? “

See, here is where the world of Web 2.0 and the actual world we live in diverge. Search. Businesses want you to use their online application to power your business/life. Let’s look 2-5 years down the line if we follow that route. How do we find the things we’ve stored online? Does every application have it’s own search engine?

Desktop applications have had to deal with this for years. Both of the major OS developers came up with a solution. Metadata. OS X has Spotlight and Vista has…Vista File Search (I guess, ToDo: replace with actual name of Vista MD tech later). Now your desktop applications can add specific metadata, or fill in existing metadata slots, so that you can search your multi-gigabyte hard drives for that document you wrote 5 years ago.

Online applications, whether they are built with Flex or AJAX+HTML are sandboxed. They can’t touch the hard drive (as far as I know, has something changed with Flex?). So they are prevented from saving any metadata to the hard drive. The best they can do is allow the user to export the file from the online applications, attach the metadata as best they can before the export, and save the file to the local system. For that to really work well, the online application will have to find out what OS you are running. Which is possible. But what metadata will get exported? How is it entered in the application?

My solution would be to find some way of importing your “tags” from different online applications into your local file metadata storage. The problem is, at least on OS X, the “Spotlight comments” don’t pull from any defined vocabulary. So some kind of Finder plugin or “tagging” application would have to be created. You can add Spotlight comments using the Automator under OS X, I wonder how hard it would be to create a custom task that autocompletes based on a tag library as you type?

Filed under: General No Comments
12Mar/077

Switched to Feedburner

I switched my feed over to Feedburner. I’m curious to see what kids of stats and information they can provide. I’ve never had a problem with bandwidth, gzip compression rocks, but seeing how a company can analyze feed subscribers sounds interesting. If you know who is subscribing to your feed, you can track how they subscribe and map that (possibly) to what content they were reading when they decided to subscribe. Giving you some insight into your readership and some context to their interests.

Filed under: General 7 Comments
11Mar/070

When Non-Programmers Write Software

Steven Talcott Smith::When Non-Programmers Write Software: “”

Great post. I’ve shook my head, sometimes virtually, sometimes in reality, when I hear people say that their favorite technology has been dumbed down too much because of “Mort”, the generalized programmer who doesn’t know their “stuff”. Steven Talcott gets it. I love hearing how excited people get when they tell me that they created a database. Or wrote a little program to solve a problem they had. Especially when they tell me about how they diagnosed a problem with their network. I still get that little burst of excitement and pride when I solve a technical problem.

Filed under: General No Comments
11Mar/071

Problems with WordPress remembering themes?

Anyone else having a problem with their WordPress installation switching back to the default theme?

Filed under: General 1 Comment
7Mar/071

Twitter – when users use your app creatively

I signed up for Twitter a while back. I’ve used it sporadically. The adoption of Twitter has gone up dramatically from what I’ve seen. There are a couple of reasons for this:

1) Discoverability – It’s pretty easy to find new “friends” for your Twitter list. You can watch the main page for a while or you can look through your friends friends list. Then just click on their picture and add them to your list. Bingo, you’ve got a new friend. MySpace started this “gotta get them all” friend gathering trend. Twitter is just making use of it.

2) Ease-of-use – Twitter is dead simple to use. Just enter text in a box and hit submit. Once you set up your mobile phone or IM client (side note: Who decided on those IM clients? Who uses GTalk and Jabber? Get Yahoo, MSN,and ICQ on there Twitter!) just send a message. It figures out who you are based on your number/IM id and posts the update.

The discoverability aspect is how I found Steve Wozniak and added him to my friends list. So now, I get text messages telling me what Steve Wozniak is up to.

Steve Wozniak

The Woz.

The main reason most of us are in computing at all. One of the main reasons there IS a consumer computer industry. And now I know when went to Home Depot to buy a ladder. (Never mind. Turns out it wasn’t the real Wozniak. It was some dude being funny. One of the downsides to these services. Impersonation.(another side note. Have you noticed how accessible and approachable the Apple founders are? You can send an email to Steve Jobs and there’s a good chance he’ll read it. Wozniak has had a public cell phone number for quite some time. Glide past Bill Gates house and security comes out to glare at you. Forget calling him. Anyway).
In the past, adding someone to your IM list has been a somewhat stressful situation. The have to accept your invitation. And even assuming they accept your invitation, really popular people would eventually run into artificial limits on the number of friends/contacts your IM client could have. But here, I just add The Woz some jackass as a friend and there he is. He doesn’t have to know who I am. He doesn’t have to reject me. He just signs up and I just add him.

The “problem” now

I hesitate to call this a “problem” because the Twitter designers may have had this in mind when they built the system. People are using Twitter as more of a Instant Messaging system than a “what am I doing now” notification system. That’s pretty cool. But it makes for an interesting conversation. When you add a couple of friends, they may be having conversations with one or two other people and you only see your friends response. You may only see 1/2 or even 1/32 of the conversation.

I’m finding that it’s a really low-bandwidth way to follow conversations. I added a bunch of the popular kids (Scoble, Pirillo, and Leo Laporte) as friends (including some people I’ve met but haven’t seen in quite a while) and installed Twitterific and Twitteroo. But for the most part, I stuck with people that I’ve met in real life and could probably recognize me if they saw me. It’s easy to see why this is taking off. It’s both addictive and personal.

BUT

I can’t see this becoming mainstream. Not enough people sit at a computer to make this ubiquitous. And SMS is still too big of a pain to do. I can’t see my wife stopping on her way out the door with my daughter to text “off to Sponge School” to Twitter. My daughter in 10 years or so will probably use a service very similar to this, if not the same Twitter we know and love now.

Now. Who can think of a game to play with Twitter?

Filed under: General 1 Comment
6Mar/070

Modern Javascript Development – Namespaces

By default, every object you create in JavaScript code gets dumped into a Global namespace. There is no syntactical method built into the language for declaring objects in a particular namespace. But there are some tricks that deal with scope that you can use to prevent name collisions.

Let's review one method for creating objects in JavaScript and explore how to control the scope of their members..

CODE:
  1. var foo = {
  2.         version : "1",
  3.         printHello : function() { document.write("Hello"); }
  4.     };

This example creates a new object named "foo" in the Global namespace with a property called "version" and a method called "printHello". Both the method and property are public. Functionally, the code is the same as this:

CODE:
  1. var foo = function (){
  2.         return {
  3.             version : "1",
  4.             printHello : function() { document.write("Hello"); }
  5.         };
  6.     }();

Let's add a private member. (see here for a description of scope in JavaScript)

CODE:
  1. var foo = function (){
  2.         var private_hootie = "nyah nyah can't see me";
  3.         return {
  4.             version : "1",
  5.             printHello : function() { document.write("Hello" + "<br/>"); },
  6.         };
  7.     }();

We can do the same for methods:

CODE:
  1. var foo = function (){
  2.         var private_hootie = "nyah nyah can't see me";
  3.         function private_fuction() { document.write("private"); };
  4.         return {
  5.             version : "1",
  6.             printHello : function() { document.write("Hello" + "<br/>"); },
  7.             printHootie: function() { document.write(private_hootie + "<br/>"); }
  8.         };
  9.     }();

n.b. The printHootie method is able to access the private_hootie member.

Since everything in JavaScript is an object (functions, variables, everything), you can also nest the objects within an objects constructor:

CODE:
  1. var com  = {
  2.         lazycoder : {
  3.             version : "1",
  4.             printHello : function() {document.write("Hello" + "<br/>"); },
  5.         }
  6.     }
  7.  
  8.     com.lazycoder.printHello();

Now, you see the point of this little exercise. You can use objects to create namespaces within your code.

There's nothing that says you have to use elaborate nesting schemes to create your namespaces though.

CODE:
  1. var bar = {
  2.         hootie: ""
  3.     }
  4.    
  5.     bar.hootie = function() { document.write("hootie"); }

You can even extend existing namespaces.

CODE:
  1. foo.bar = {
  2.         hootie: ""
  3.     }
  4.    
  5.     foo.bar.hootie = function() { document.write("hootie"); }
  6.     foo.printHello();
  7.     //bar.hootie(); - undefined
  8.     foo.bar.hootie();