Tech Opener

Let's share more

Kiva Now Allows Loans to People in the US

Kiva.org allows you to make micro-loans to people in need. This is a great example of how the social web can organize groups seeking a common goal. It is pretty awesome when you can easily make a small loan of $25 with a group of random people to help someone start or expand their business. If you haven’t tried it yet I encourage you to check it out. When I started using the site I wondered why something like this was not available to people in the US. Well now it is possible through Kiva. This service is a win-win for all involved and I see this service growing dramatically over the next two years.

Windows Services Crash After Restoring From Standby Mode

Recently Windows Update applied SP3 to XP on my Dell Latitude D630. I was pretty sure I already installed SP3, but I applied it anyway, what could it hurt right?

Well…every time I restored from Standby mode, my network services, firewall, sound and a number of other services stopped working. Most notably was the sound, and after further investigation I noticed the rest. Odd flickering of the windows theme also cued that something was out of whack. I first thought it might be related to a virus or Conficker, however after triple checking and re-scanning everything nothing came up.

Looking further, windows has all of these services running under the same svchost.exe process. Therefore when one of these crashes, it takes down all of them. Below is a list of the services Windows runs as a shared process on my machine: AudioSrv,BITS,Browser,CryptSvc,Dhcp,ERSvc, EventSystem,helpsvc,lanmanserver,lanmanworkstation,Netman,Nla,RasMan, Schedule,seclogon,SENS,SharedAccess,ShellHWDetection,TapiSrv,Themes, TrkWks,w32time,winmgmt,wuauserv,WZCSVC

Turns out you can modify these services to run their own process, which would allow me to determine which service is causing the problem. From the command prompt: sc.exe config ServiceName type= own You need the space between the “=” and “own”. This command will cause the service to always launch in its own svchost. To revert the service back to its original state, run the following command from the command prompt: sc.exe config ServiceName type= share

After setting this and restarting the services I went into Standby to reproduce the issue. This time nothing crashed except for the Wireless Zero Configuration service. Now that I have narrowed it down, I did some more searching and found http://support.microsoft.com/kb/951447 which says to disable the the power management features on the Wireless Network Connection. Makes sense, so I give it a try. Go into Standby, startup and then immediate blue screen of death.

Taking a look at the wireless drivers reveals they are pretty old, so a quick search for the Intel 3945ABG wireless driver reveals some recently released driver updates. With these updated drivers I don’t get a blue screen, however I still have the issue of the Wireless Zero Configuration service crashing.  Luckily this service isn’t necessary as Intel provides Wireless connection software.  Also the service can be started once it fails if needed.  However it is a bit annoying.  Even though I didn’t completely resolve this issue, I do think the troubleshooting steps that were taken would be useful in other similar situations.

Downloading Enterprise Software

Why is finding the correct software installer or documentation so difficult? If you are a enterprise software vendor (particularly IBM, EMC, Oracle) and want to increase customer satisfaction, please fix this!  Granted these companies are in this situation because they have acquired a number of other companies.  However this problem is simple to fix and would save many from wasting time finding installers or writing documentation on how to reach the documentation.  My personal recommendations below:

  • Product Name  (Pick one name and stick with it across the board)
  • Product Category (I usual find these to be very unhelpful and arbitrary.  Most times, I would rather see a long list of products or product suites.  If I have to click through three or more categories just to see a list of downloads then you are doing it wrong.  I can scan through 100s of product names in a single list, much quicker than I can click through each category.  Most of the times the categories are wrong anyhow.)
  • Product Version (I only want to see the most recent version, but leave a link to access previous versions right next to it)
  • Product Platform / Type (If your going to list this, then be consistent and accurate.)
  • Product Documentation (This is best included in the installation download and available completely separately in an HTML online version.  However don’t list the installer and the documentation as separate zips in the same list, this just clutters the whole thing.

Windows Azure Presentation

Yesterday I went to the Mid-Atlantic Cloud Computing user group in Reston, VA. It’s a newly formed group that plans to meet once a month.  The topic of the evening was Windows Azure, in which Scott Zimmerman from Microsoft gave a great overview of their online suite of products with a focus on the Compute and Storage capabilities of Windows Azure.  I wont go into the topic right now as the presentation is available, but below are a few interesting notes:

  • $500 million dollars invested for each data center
  • Half of all Exchange/SharePoint/Dynamic CRM revenue is expected to come from online service in the next 5 years
  • Everything is replicated at least 3 times
  • Currently runs .NET and C++.  Java/Ruby other languages coming soon
  • Visual Studio works with all of the services but is not required, everything is exposed through REST and SOAP
  • BizTalk Server 2009 can be used to help manage connections to the cloud
  • Declarative Fabric controller handles the deployment and configuration automatically
  • Community Tech Preview is currently free.  Service will be live by the end of 2009 with pricing plans Other Cloud Computing links of interest:

http://www.cloudcamp.com/ http://cloudcomputingexpo.com/ http://videos.visitmix.com/mix09 has videos on all of the sessions including some on the Microsoft Azure platform.

Gmail Signature Plugin to Display Recent Blog Entries

My current email signature at the bottom of my emails has a link to this blog. However what I would really like is a link to my blog followed by the title of two or three of my most recent posts.  I could certainly do this manually, however it would be nice and quicker if Gmail could do this automatically.  I though about it and there are at least a few ways I can get this done:

  • Make a suggestion to the Gmail Labs program (http://groups.google.com/group/gmail-labs-suggest-a-labs-feature/browse_thread/thread/925279280fcdfa2f#)
  • Search Google (Find out about the Feedburner Headline Animator which makes an animated image like below)
  • Make a GreaseMonkey script (would only work when using Firefox with GreaseMonkey enabled)
  • Make a bookmarklet that does this or at least copies the signature to my clipboard for quick pasting into my email One of the great things about the web is that if you want something you can usually just do it or find someone who has already.

Example of the Feedburner Headline Animator.  I would prefer plain text for my emails.  Lazyweb if you know of a good way to do this let me know.

Tech Opener

Table Sorting With JQuery

A very common request for HTML tables is making them sortable.  The requirement came up the other day and I used JQuery and the JQuery Plugin tablesorter.  JQuery is a excellent lightweight javascript library that is useful for all things javascript.  It also allows its large developer community to develop plugins such as the tablesorter plugin.  To use this in your web application, insert the lines below and you are all set.  It does not get much easier than that, plus it is really fast, has customization options, and just plain works.

<script type="text/javascript" src="/path/to/jquery-latest.js"></script>
<script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script>

[sourcecode language='javascript']$(document).ready(function()
    {
        $("#myTable").tablesorter();
    }
);[/sourcecode]

One requirement is that the HTML table must use the THEAD and TBODY tags.  A .NET GridView does not include these tags by default, but they can be added easily enough with the following:

[sourcecode language=’c#’] if (this.gridView.Rows.Count > 0) { gridView.UseAccessibleHeader = true; gridView.HeaderRow.TableSection = TableRowSection.TableHeader; } [/sourcecode]

Stackoverflow Will Answer All Your Programming Questions

stackoverflow

Lately I have been doing more .NET development and ultimately at some point you get stuck, forget how to do something, or wonder what the best practices for something is.  You immediately run a few google searches and get back some articles on a bunch of weird answer sites.  Recently a new site for asking questions started with a really good and unique design.  If you have not ran across it already, I highly recommend taking a look. StackOverflow.com is a mix between wikis, blogs, forums, and digg for programming questions and answers.  Even though it is fairly new, it already has a great community and lots of content.  Many languages and topics are covered even though the community, founders, and the site itself are primarily .NET based.

They also run a great blog and podcast where they talk about the site and how they developed it.  They are off to a great start, and they are looking to start a similar site oriented towards IT Centric version soon.  These guys get it.

How to Migrate Users in Oracle Webcenter Interaction

Webcenter Interation provides great tools for importing users from external user directories.  Depending on your user directory and configuration you set a unique identifier to use that is often not the username.  I have ran across a few senarios in which you want to switch to a different user directory without losing any user settings or preferences.

Most commonly, you might have a production Active Directory server that a production portal syncs with and a development server that syncs with a development Active Directory server.  Now lets say you migrate your production portal database to your development environment.  There are a number of items you have to fix for it to operate in this new environment.  Take a look at ALUI Administration Tool for Environment Refresh: String Replacing for URLS for more information regarding syncing environments.  For the purpose of this post, we are just concerned about the users and keeping their settings, preferences and security throughout the portal.

In our case, a users Active Directory ObjectGUID is their unique identifier and by definition this is different in each Active Directory server (unless they are in the same domain of course).  So if we just sync with the development Active Directory server, the portal would delete all of the users and then recreate them even though the usernames are the same.  Below are some steps I have successfully used in the past to avoid deleting these users by migrating them to the new authentication source.  Your results may vary, and I do not offer any guarantees so certainly test this procedure thoroughly if you find yourself in a similar situation.

  • Backup the database before starting incase something goes wrong.
  • Lets assume the existing authentication source id = 201
  • Create a temporary authentication source used for migration.  Lets assume its id = 202. 
  • Configure both of these authentication source to point to the development Active Directory server.
  • Run the sync job only for auth source 202.
  • Run the following SQL script which generates another SQL script that will update the settings of users of the 201 auth source in the PTUSERS table to match those of the 202 auth source. [sourcecode language=’sql’]SELECT ‘UPDATE PTUSERS SET AUTHUNIQUENAME=”’ + AUTHUNIQUENAME + ”’, DESCRIPTION=”’ + DESCRIPTION + ”’, AUTHUSERNAME=”’ + AUTHUSERNAME + ”’ WHERE MAPPINGAUTHNAME=”’ + MAPPINGAUTHNAME  ”’ AND AUTHSOURCEID=201;’ FROM PTUSERS WHERE AUTHSOURCEID=202;[/sourcecode]

  • Verify the script that it generates escapes any apostrophe characters and then run it.

  • Run the following SQL script which generates another SQL script that will update the settings of groups of the 201 auth source in the PTUSERGROUPS table to match those of the 202 auth source.  [sourcecode language=’sql’]SELECT ‘UPDATE PTUSERGROUPS SET AUTHUNIQUENAME=”’ + AUTHUNIQUENAME + ”’, DESCRIPTION=”’ + DESCRIPTION + ”’, SYNCHGROUPNAME=”’ + SYNCHGROUPNAME + ”’ WHERE MAPPINGAUTHNAME=”’ + MAPPINGAUTHNAME + ”’ AND AUTHSOURCEID=201;’  FROM PTUSERGROUPS WHERE AUTHSOURCEID=202;[/sourcecode]

  • Verify the script that it generates escapes any apostrophe characters and then run it.

  • Delete the 202 auth source.
  • Run the 201 auth source sync job.
  • Verify that users you expected not to be deleted, were not deleted. The PTUSERS table contains some CRC fields, which are based upon all of the fields in a PTUSER record.  The easiest way to update these CRC values for a user, is to save the user using the portal UI or API.  In the past I have written a script that loops through each user in the authentication source and saves them, thus updating the CRC fields, however I can not find it.  I will leave this part as an exercise for the reader.  Just keep in mind that you will need this before the user will be able to authenticate properly. Although it does seem like the .NET portal relies on the CRC values more so than the Java portal version.

As a side note, I am using the SyntaxHighlighter Plus wordpress plugin to provide the syntax highlighting.

HTC Touch Pro With Sprint

My company provides me with a mobile phone, and we just switched carriers from AT&T to Sprint.  Along with this, I got the HTC Touch Pro.  It has everything my old HTC 8525 had including WiFi, a slide out keyboard, exchange integration, and a touch screen.  Some new features include GPS, Windows Mobile 6, Sprint Music and TV, and a slicker look and feel.

I immediately downloaded (which was super quick) and installed the following windows mobile applications:

  • Google Maps even includes street view now on the mobile and works great with integrated GPS.
  • Qik does video streaming.  I have not used this before, but I hear good things and want to try it out.
  • Yahoo! Go I have not tried it yet, but at some point ill probably break down and buy WMWifiRouter as it sounds too useful when traveling.  Also Windows Live Search was already installed, which has a great Speak feature for searching.

What windows mobile apps do you recommend?  Oh wait, I forgot, everyone uses the iPhone now!

Workaround SSL Cert Warnings With Stunnel

On occasion I find myself attempting to programatically make a HTTP request over SSL, however it gives connection warnings such as expiration or name mismatch which causes the request to fail.  You could update the server certificate, however this can be a pain.  An alternative is to use stunnel. Install it, set it up to accept traffic on a port and then forward that traffic to the SSL site.  Your client can then connect over http to the stunnel port, and stunnel will forward this request to the SSL site ignoring the warnings.  There are a number of other uses for stunnel, so check it out, if your working with SSL.

http://www.stunnel.org/

Example config file below:

client=yes
verify=0
[psuedo-https]
accept  = 8080
connect = yourhost:443
TIMEOUTclose = 0