Friday, December 04, 2009

My Issues w/ LastPass

I tried LastPass as a password management solution and I have a few issues:

  • LastPass is very browser-centric or website-oriented. I do a lot of IT stuff being a Software Developer, and I need passwords for databases, workstations, program keys, etc. With LastPass, it is a bit clunky to open up your vault, try to find the right entry (see my next gripe) and then copy the information out and paste into the program.
  • LastPass has a "group" (folder) for each entry, but just one group/folder. I prefer Passpack's ability to tag every entry with multiple tags, or KeePass' ability to have a nested hierarchy of folders/groups. I might especially dislike LastPass' implementation of this because I tried importing 60 some passwords from KeePass into LastPass, and it was a mess to try to sort out the password for my two jobs and home.
  • As far as I can tell, LastPass does not very elegantly handle the fact that I do a lot of development and "intranet" site use. So, I will have a buttload of different passwords for the domain "localhost" and for the domain "" (which LastPass handles as, etc.
  • The "Identity" thing doesn't work how you'd expect. I wanted it to partition out all my passwords into separate accounts, in essence: "Personal" "Job1" "Job2", etc. Instead, it just only exposes passwords you select from the primary account to these sub-identities. If you delete the password for a site in one identity, it will be gone in the primary identity and others that have a view of it, or so it seems.
If I could somehow combine the way that KeePass works and LastPass, I'd have my perfect tool. Or maybe if PassPack dropped the 100 password limit, and had a decent Firefox plug-in or desktop widget.

Monday, August 31, 2009

Script: SugarCRM Click-Thru Target to Lead in Email Campaign

A quick post here about a little script I wrote for SugarCRM.

Update: I forgot to mention that I am working with SugarCRM version 5.2.0i here. Results may vary (read "not work") with other versions.

We were having trouble with the workflow process of running an Email Campaign in SugarCRM. Namely, we had like 100 some clickthru's in an email campaign, and I really wanted to just click a button to make all of those clickthru targets become leads. I would have even settled for the click-thru list being clickable links and doing it one-by-one (well, i would have had the marketing guys do that), but even that is not possible. They are not clickable links that redirect you to the target details view - instead, they are just a static list with only the related hyperlink being clickable.

Details of the problem here:

So, I wrote a php script to solve our dilemma:

Be sure to change the Database user/password/name to match your configuration, and to change the
$campaign_id and $user_id
variables at the top of the file.

Tuesday, February 03, 2009

Facebook broken for AdBlock Plus in Firefox

For the last day or so I’ve noticed that Facebook has had major issues when I view it with Firefox 3.0.5. If I do a Refresh of pages, I can usually get places, but it was almost as if a lot of the AJAX and dynamic stuff that normally happens was not working, and any postbacks (like commenting, searching for a friend, etc) would “freeze up” the site and I would have  to do a refresh to get to the next page or to see the results of my action.

This not being my first rodeo, my first instinct was to disable my Firefox add-ons by restarting in safe mode.

firefox.exe -safe-mode

Sure enough, now Facebook was working perfectly again. I then had another series of hunches which turned out to be correct.  First, I figured that AdBlock Plus or Firebug would be the offending extensions, and sure enough it was AdBlock. So, I right-clicked on the ABP icon in the Firefox status bar and went to Open Blockable Items. Looking at the list of things that were blocked (they show up in Red), I had a hunch to look for a script file, since the AJAX and dynamic stuff is what seemed to be broken.  There was only one script blocked for me:

So, I double-clicked on this blocked item to bring up the dialog to add an exception rule.  Just in case they feed this script from different addresses or different CDN servers, I made the exception a bit more robust than just the address above:


After adding this exception rule, and reloading the page, everything is working ship shape again.

Now, my question is this – was this an attempt by Facebook to force people to turn off ad blockers in order to make Facebook function properly?  It seems to me that this script file should probably only handle loading the ads and such (judging by the name), thus it must break some of the other functionality only because other scripts detect that it is not loaded and do not function unless it is loaded. The last line of that script is this:

if (window.Bootloader) { Bootloader.done(["js\/adnetwork\/adnetwork.js"]); }

So, maybe Bootloader has been changed to make the site not work correctly if this has not been called?

Experiment time! 

So, I removed that exception I added, and once again the site is broken. This is visually apparent when I look at the search box typically present in the top right corner.  It doesn’t have the watermarked text saying Search.

I open up Firebug and enable the Console for, so that I can run some of my own script on this page.  Running the last line of that script myself fixes Facebook!  Here is a screencast of the experiment:

Wednesday, January 07, 2009

Do Not Forget RenderEndTag()

I have been fighting for a few hours with a strange behavior in one of my ASP.NET custom controls - Flasher. This control is for displaying an image, or a flash, on a web page. How the control renders depends on whether the media assigned to it is an image or flash file.

For some reason, this control was making the page bug out when it was set to an image, and inside an UpdatePanel. Validating the XHTML, I discovered that the <div> tag was not being generated by the UpdatePanel in the spot where I thought it would. I would have assumed something was wrong with the UpdatePanel, or it was a bug in this control, but I knew that things worked fine when my Flasher control was rendering the flash markup. Only when it was rendering the image markup did this happen.

I scanned over the code that rendered the markup in Flasher.cs, and the only difference I could notice was that the flash rendering code had both RenderBeginTag() and RenderEndTag(). I had only called RenderBeginTag() in the image markup code, falsely assuming I did not need the end tag call because <img /> is a self-terminating tag. Apparently ASP.NET will still generate the <img /> tag correctly, but if you do not make the call to RenderEndTag(), then it messes up the tag matching mechanism or what-have-ya and causes controls further on down the line to get "messed up," technically speaking.

Lesson learned.

Disqus for A Nofsinger's Blog