Ping Fire Gets a New Home

Ping Fire, a Firefox extension for Ping.fm, can now be found at http://www.pingfire.us. All new versions and announcements will be posted there.

If you’ve downloaded Ping Fire from this site in the past seven days you will want to check http://www.pingfire.us to ensure that you’re running the most recent version. 

August 10th, 2008, posted by

Ping Fire (Beta)

Well that was quick!  The people at Ping have approved Ping Fire.  I’m going to consider the extension in beta mode as only two people have looked at it.

If you have any comments or suggestions feel free to email me or post a comment.

Installation Instructions

  1. Download and Install PingFire.
  2. Add the “Ping” button to a menu.  You can do this by going to View >> Toolbars >> Customize.
  3. Provide the extension with your Application Key.  (You can find your key by going to: http://ping.fm/key.) From within Firefox, go to Tools >> Add-Ons.  Find “Ping Fire” in the list then click the “Preferences” button. Enter your User Name and your Application Key into the fields provided then click “Ok.”

August 1st, 2008, posted by zechariahs

Ping Fire Release - Almost

Ping Fire is ready for open testing.  I’ve been using it these past few days with no problems.  The download link is below.  Unfortunately, I still need to get Ping’s blessing before the application will work for anyone but me.

Installation Instructions

  1. Download and Install PingFire.
  2. Add the “Ping” button to a menu.  You can do this by going to View >> Toolbars >> Customize.
  3. Provide the extension with your Application Key.  (You can find your key by going to: http://ping.fm/key.) From within Firefox, go to Tools >> Add-Ons.  Find “Ping Fire” in the list then click the “Preferences” button. Enter your User Name and your Application Key into the fields provided then click “Ok.”

Editor’s Note: About an hour after this post the people at Ping let me know that PingFire was approved! So now everyone can use it.  Just remember that the plug-in is still in beta.

August 1st, 2008, posted by zechariahs

Ping Fire Updates

What a busy few days!  I started development on Ping Fire, my first FF Extension, on Saturday afternoon. It’s late Tuesday night and I think it’s a good time to provide some updates.

PingFire is working.  You can now post using all of the different “Ping My” types (Default, Blog, MicroBlog and Status) as well as any custom triggers you have created.

You can also quote something you’re reading on the web with Ping Fire.  Simply select the text you want to quote and hit the “Ping” button.  Ping Fire will automatically copy the text you’ve selected, append the URL and add it to the message box.  All you have to do is hit the “Ok” button.

I figure this puts PingFire in an un-official Beta status.  The status is still un-official since I haven’t gotten PingFire approved yet.  I submitted the stripped down version on Monday night so I’m hoping that it’ll get approved soon.  I’m also hoping that I don’t have to go through another submission round to get all of the new features I approved.

In the grand scheme of Firefox Extensions, PingFire is relatively simple but I’m still proud of how far I’ve come since Saturday.  When I started this project I knew some Javascript, knew some XML and I had never heard of XUL. Now it’s three days later and I’m still by no means a pro but I think that I’ve come a long way. I hope everyone enjoys the extension as much as I enjoyed developing it.

July 29th, 2008, posted by zechariahs

Ping Fire - A Firefox Extension for Ping.fm

Often times I will be reading Twitter, Pownce, etc and will want to post something. So I have to navigate to Ping and write my post. This is tiresome for me because that means I have to open another tab when I already some many open. Enter Ping Fire.

Ping Fire will a Firefox extension that allows a user to post a Ping without having to be on their Ping.fm Dashboard.

Initially, the only thing the extension will allow you to do is post to Ping. I will add new features as I find a new or when someone requests a feature that I feel will be useful.

The extension is still in the beginning phase.  I have the extension running in Firefox along with most of the necessary windows and Javascript.  I’m still waiting on my API key from Ping.fm before I can work on the rest of it.

If you’d like to make a feature request add a comment here.

July 27th, 2008, posted by zechariahs

Book Review - Hit Men and the American Empire

The title of this post is a bit of a misnomer, but writing the full titles of these two books would’ve been insane. This post is about two books from John Perkins - Confessions of an Economic Hit Man and The Secret History of the American Empire.

Confessions of an Economic Hit Man

Just the title of this book had me thoroughly intrigued. This non-fiction, fast-paced book guides you into a cloak-and-dagger world that is usually reserved for CIA spies. The main characters are economic hit men (EHM) of which John Perkins was one, jackals and the military. The goal of an EHM? To gain control of a country, more correctly its resources, without having to invade.

If only half of this book is true, it paints a scary picture of how the US Government operates. The stories told are of assassinations and of one-sided deals that were a boon the American companies involved.

The Secret History of the American Empire

This book is a follow-up to Confessions of an Economic Hit Man. It goes into greater detail regarding the events mentioned in Confessions. It discusses John’s meteoric rise in the EHM ranks and his moral awakening.

Although a truly a great book the last chapter was too preachy for me. I understand his plight and why he’s trying to motivate the reader but I feel that it is misplaced and it better suited for another book.

Wrap-Up

If you’re interested in clandestine operations of the United States these books will prove to be a great read.



—I have read and thoroughly enjoyed both of these books. In the interest of full disclosure, this post contains Amazon affiliate links.

April 13th, 2008, posted by zechariahs

Blackberry Task Manager - ToDo Matrix

I am a programmer, a de facto project manager and anal when it comes to organization. I code for a living, code on the side and I’m also on the board of a local young professionals organization. My life is quite hectic at times and tasks can come at me from any angle. Unfortunately none of the task managers at my disposal ever really met my approval.

My latest foray into this arena comes from REXwireless. Their todoMatrix application does not fail to impress. Task organization is very natural - your tasks are organized by “drawers” and then by “folders.” A task takes under a few seconds to create, this is a great deal quicker than any of the other applications I’ve used.

Why I Love It

Another nice feature they have is named “injection.” todoMatrix installs an injection option to the menus provided by your Blackberry. Injection allows you to take the text currently displayed into a new task, saving a great deal of time.

Those few things made me fall in love with the application, but one feature really clinched it for me - rexDesktop. rexDesktop allows full CRUD on your todoMatrix data from the web.

Quirks

todoMatrix is not without its quirks. It would be nice if there was option on the menu that displays the shortcuts available. I’m sure they’re in the documentation but I’m too lazy to read it and I couldn’t carry it with me.

Also, I find the UI to be lackluster. I’m going to break that comment into three separate parts - 1. The Main Screen, 2. The Folder View, and 3. The Item View.

A Lackluster UI

The Main Screen

The main screen displays a tree which contains all of your drawers and folders. Although you can configure the colors of the folders, it still feels clunky to me. In Rex’s defense, I’m not sure what more can be done with a tree.

The Folder View

This view shows all of the tasks that are stored under a particular folder. The top quarter of the screen displays information related to the selected tasks and the bottom three quarters show all of the tasks.

The task detail section is too small. So small that labels for the six data elements that are displayed contain acronyms. These acronyms, although logical, I can’t get their meaning as quickly as I’d like to. I’m forced to look at their values in order to determine what I’m looking at. It seems to me that there is room to expand this section or at least expand the label names.

The tasks displayed give you a hint as to their status but there are only two colors used - a light blue for uncompleted tasks and a light gray for completed ones. I would like configurable colors for each status or priority. I understand that this could lead to confusion for the user, but if the colors are configurable, then the user could use as many or as few as they like.

The Item View

The Item View suffers from the same problem as the top portion of the Folder View but at least there’s a line that explains the meaning of each label.

RexDesktop

This is probably my favorite feature of this application. Unfortunately, it too suffers from a UI problem - it sucks. In a world full of Ajax and flashy UI’s this web app still looks like something from the late 90’s. It is fully functional it just looks ugly. But I’ll still choose function over form.

Wrap-Up

Although I write a great deal about the things I don’t like, todoMatrix is a great application. I feel that its strong points speak for themselves. I can’t wait to see how this application matures in the coming versions.

todoMatrix can be purchased at rexWireless.

April 13th, 2008, posted by zechariahs

A Reflective toString Method for Java

Often times I find the debugger to onerous for viewing DAOs. They usually contain lots, and lots of attributes and viewing those attributes is tedious, at least in my opinion. I prefer looking at them as text output. With text I can quickly scan through them or copy them or do any number of other things. With the debugger, their values reside strictly in the debugger.

My first reaction has been to create a toString method. This works rather well but it too is tedious. So I’ve created a toString method that uses reflection to create the output. The code for this method is located at the bottom of this post.

Some things to note:

  • This code has been created for my own use. Therefore you won’t have some of the objects I reference.
  • This code is free for all uses. If you’d like to use it commercially or for your own pet projects feel free to do so. Although I wouldn’t mind a mention (or a link) in the Javadoc or on the application’s web page if you see fit to do so.
  • This code is by no means feature complete. For example, I imagine it could be recursive so that when an object is encountered, this method is called instead of the Object’s toString method.
  • I also notice that my escape characters are no longer escaped. This means that you’ll have to add your own backslashes.
  • This code uses StringBuffer when StringBuilder would be more appropriate.  I used StringBuffer because of constraints that were put on me when I originally developed it. (If you’re interested in the differences between these two check out: http://forum.java.sun.com/thread.jspa?threadID=652378)

The Code

    public static String toString(Object a_oToConvert)
    {

         if(a_oToConvert == null)
         {
              return "Object is null";
         }

         StringBuffer sb = new StringBuffer();

         sb.append("n");

         sb.append("t" + Util.DASHES + "n");
         sb.append("t" + a_oToConvert.getClass().getName() + "n");
         sb.append("t" + Util.DASHES + "n");

         Class cls = a_oToConvert.getClass();

         Field[] arrFields = cls.getDeclaredFields();

         for(int idxField = 0; idxField < arrFields.length; idxField++)
         {

              Field fldCurrent = arrFields[idxField];

              String sName = fldCurrent.getName();

              Object oVal = new String("---");

              char[] arrChars = sName.toCharArray();
              char[] arrMod = new char[arrChars.length];

              for(int x = 3; x < arrChars.length; x++)
              {
            	  arrMod[x - 3] = arrChars[x];
              }

              String sFirstChar = new String("" + arrMod[0]);
              arrMod[0] = sFirstChar.toUpperCase().toCharArray()[0];

              String sGetMethod = "get" + new String(arrMod).trim();

              try
              {
                   Method methGet = cls.getMethod(sGetMethod, null);

                   if(methGet != null)
                   {
                        oVal = methGet.invoke(a_oToConvert, null);
                   }

                   if(oVal == null)
                   {
                        oVal = new String("Value is null");
                   }
                   else
                   {
                        if(oVal instanceof List)
                        {
                             oVal = "List Size: " + ((List)oVal).size();
                        }
                   }

              }
              catch(NoSuchMethodException nme)
              {
                   oVal = "No such getter - " + sGetMethod + "()";
              }
              catch(IllegalAccessException iae)
              {
                   oVal = "Not public - " + sGetMethod + "()";
              }
              catch(InvocationTargetException ite)
              {
                   oVal = "ITE" + ite.getLocalizedMessage();
              }

              sb.append("t" + Util.beautify(sName, oVal.toString()) + "n");

         }

         sb.append("t" + Util.DASHES);

         return sb.toString();

    }

February 18th, 2008, posted by zechariahs

A Struts Compatible OpenID Authenticator for OpenId4Java

While working on a side project of mine, I decided that I wanted to allow users to authenticate themselves using OpenId. Being a Java programmer, who is reluctant to re-invent the wheel, I immediately searched Google in hopes that someone had already created a Java library I could use. After a few moments I came across OpenId4Java. These guys created a wonderful product which made implementation a breeze. It’s also worth noting that the support is pretty amazing as well.

After playing around with the code a little bit, I noticed that the sample code didn’t play too well with my Struts application. So I wrapped their code into my own class OpenIdAuthenticator. This class simply wraps the logic from the sample code to make it compatible with Struts.

Feel free to use the class for any purpose - commercial, private, etc. If you so desire, please give me some credit somewhere in the Javadoc.

January 27th, 2008, posted by zechariahs

Pownce Feed

I’m starting a new project named Pownce Feed. A service similar to Twitter Feed. It will allow users to post to their Pownce account using RSS feeds from other web sites. If you’re interested check out PownceFeed.com. Note: As of 11/17 we’re looking for developers! If you’d like to help, simply sign-up for an account on the website and check the Developer box.

November 17th, 2007, posted by zechariahs