(iBoyd)

Archive for the ‘Uncategorized’ Category

SharePoint Foundation 2010 and Office Web Applications

Monday, March 8th, 2010

Several posts ago, I promised to provide some insight on the new development capabilities for SharePoint 2010 within Visual Studio 2010. Yeah, I’m still working on that. However, I did get around to installing and test driving Office Web Applications on top of SharePoint foundation and I have to say that I am quite impressed so far.

In recent years, it has become evident that Microsoft needs to port their office suite to the Word Wide Web in order to compete with Google Apps. For Office 2010, Microsoft has stepped up to the challenge by releasing a free online Office suite, appropriately named Office Web Applications. Despite being a bit rough around the edges, the applications provide an excellent idea of what direction Microsoft is headed in, and it certainly looks good.

The Word Viewer Web App provides a read-only version of the Word document inside of the browser.

In my opinion, there’s one huge advantage that Microsoft has over some (but not all) of the other competitors in the Online Office Suite market: Organizations have the option to host the Office Web Applications themselves. For organizations that can’t or don’t want to use a hosted solution, this could be huge. To get there, Microsoft has married the document management capabilities of Microsoft SharePoint with the new functionality that the Office Web Applications offer. As a system administrator, you must play the role of the priest in this wedding: Getting the Office Web Apps functionality requires a separate installation from SharePoint. The good news is that installing Office Web Apps feels relatively painless. As for the benefits? Well, imagine opening a Word document in SharePoint without ever opening Microsoft Word. Now imagine editing that document and saving it back to SharePoint without ever opening Word or even leaving your web browser. Daddy like.

From both an interface and functionality perspective, SharePoint and Office Web Apps integrate fairly well. By default, the Microsoft Word Web App opens documents in a read-only view. With this view, documents are displayed almost identically to how they look within the installed version Microsoft Word. Most text can be selected and copied to the clipboard. It’s like viewing a PDF document in a browser, but without the terrible Adobe Reader browser plug-in.

So how does the Word Web App do at actually editing documents? Well, it provides a lot of great functionality, but it does leave something to be desired.  A familiar ribbon is displayed at the top of the page, with basic tools for formatting text, inserting pictures, and creating tables. Just don’t expect all of the special features that you’re used to seeing in the installed version of Word. It is free, after all. A few of the documents I tested did not have certain formatting settings that were visible in the online editor, such as table backgrounds. I’m not surprised by that. Overall, I see this as a great way to generate quick documentation or take notes, but I wouldn’t recommend it for advanced publishing. In fact, I wouldn’t recommend any of the online document editors for advanced publishing. They just aren’t that robust.

The Word Web App provides a lot of basic document editing functionality. Just don't expect to do a mail merge through it.

One of the most significant features (if you want to call it that) of the Office Web Apps is that they work across browsers, just like SharePoint 2010. This has always been a huge pain point for me with SharePoint 2007 and a few other Microsoft web products, because they have traditionally catered to Internet Explorer, and I am a Firefox user. There is also better support for viewing SharePoint sites and Word documents from mobile devices. I’m glad that culture at Microsoft has shifted such that they realize that cross-browser (and cross-platform) support will be crucial to their success in the future and I hope they continue down that path.

I haven’t had a chance to try out the Excel Web App, or the PowerPoint Viewer. I’ll save those for another weekend. Some good news for those waiting for the production version of SharePoint and Office 2010: Microsoft just announced that these products will  launch on May 12, 2010 and RTM sometime in April. It will be interesting to see if there are any new features between the Betas and the RTMs. Regardless, I’m really looking forward to the latest iteration of these products.

If you’re looking for more information about Office Web Applications, be sure to check out the Office Web Apps blog on MSDN: http://blogs.msdn.com/officewebapps/ .

Converting a 6to4 IPv6 Address to its IPv4 equivalent (Dude, where’s my IPv4?)

Tuesday, January 26th, 2010

Alright, here’s the scenario:

  • You’ve upgraded your web server to Windows 2008 and you have a bunch of Windows Vista and Windows 7 clients connecting to an ASP .NET application on that web server. The application uses My.Request.UserHostAddress to check the IP address of the client. For whatever reason, your application only expects an IPv4 address to be returned
  • Both the server and the client have IPv6 functionality enabled (by default) but are only configured with IPv4 addresses.
  • Since neither the client nor the server have an IPv6 address set, you would expect My.Request.UserHostAddress to return an IPv4 address. Instead, it returns an IPv6 address that starts with 2002 prefix.

How in the heck  did this happen!? Well, it turns out that this behavior is by design. When Microsoft added IPv6 support beginning with Windows Vista, they added support for using IPv6 over an IPv4 network, for compatibility and transitioning purposes. By default, a Windows Vista or Windows 7 computer that only has an IPv4 address assigned to it will try to communicate over IPv6 by using a special IPv6 address called a 6to4 address. All 6to4 addresses start with the 2002 prefix. The good news is a 6to4 address is derived from the octets of an IPv4 address, so we can convert 6to4 addresses to their IPv4 equivalent. This Technet page goes into further detail about the 6to4 addressing scheme.

Here’s the code I wrote to convert 6to4 IPv6 addresses back to their IPv4 equivalent:

       ipAddress = System.Net.IPAddress.Parse(My.Request.UserHostAddress)
        If ipAddress.AddressFamily = Net.Sockets.AddressFamily.InterNetworkV6 Then '
            Dim tmpBytes() As Byte = ipAddress.GetAddressBytes
            If tmpBytes(0) = 32 And tmpBytes(1) = 2 Then 'Check it's a 6to4 address (it begins with "2002")
                ipAddress = System.Net.IPAddress.Parse(Convert.ToString(tmpBytes(2)) & "." & Convert.ToString(tmpBytes(3)) & "." & Convert.ToString(tmpBytes(4)) & "." & Convert.ToString(tmpBytes(5)))
            End If
        End If

Note that this code will only be applicable to 6to4 IPv6 addresses. Normal IPv6 addresses will be ignored because they can’t be converted to an IPv4 equivalent. This means that your code will eventually need to handle IPv6 addresses if clients that connect to the application are ever assigned IPv6 addresses.

Sharepoint Foundation 2010

Wednesday, December 9th, 2009

Although it may seem like most of Microsoft’s resources are tied up in the Windows 7 launch, you can rest assured knowing that MS developers have been hard at work on new versions of their enterprise products, including  SharePoint.  I created a Windows 2008R2 virtual machine with SharePoint Foundation 2010 (the lightweight version of SharePoint formerly known Windows SharePoint Services) to take advantage of all that extra RAM and CPU on my new Windows 7 desktop. After testing the beta, I can safely sum up the next iteration of this web-based content management and collaboration software in just one word: ribbon.

SharePoint Foundation 2010 Ribbon

The tab-based toolbar that first appeared in Microsoft Office 2007 has now been tied in (pun intended) to SharePoint, most likely to further associate it with the Microsoft Office branding. It is by far the most obvious change in SharePoint and probably one of the best. It’s also a very crucial part of the new in-browser WYSIWYG editor for editing pages. Yes, it works in Firefox! Overall, the SharePoint 2010 interface is a huge improvement. Here are a few screen shots:

I’m investigating some of the new Visual Studio 2010 features for developing SharePoint 2010 content. I’ll have another post about that in the near future.

Injecting Intel Matrix Mass Storage Drivers into a Windows XP WIM

Tuesday, May 26th, 2009

In Classroom and Lab Computing, we use sysprep in our Windows XP imaging process so that we can support the various computer models that comprise the 4000+ computers participating in CLM, both at University Park as well as several other campuses at Penn State. Using the tools and techniques that we have developed, we are able to apply our single OS image to a machine in about 5 minutes using a USB drive. After that, the USB drive can be removed and the machine will continue to build completely unattended. Not only is the process really cool, it saves a lot of time. However, sysprep for Windows XP isn’t perfect, and with newer hardware we have run into a few caveats.

The Problem

While updating our XP image last year, we ran into a snag where the new model (a Dell Optiplex 755) refused to build when SATA operation was set to AHCI in the BIOS. This was due to a missing Intel Matrix Storage driver. Normally, drivers can easily be added to a sysprep image by injecting them into a folder within the image and then adding them to OEMPnPDriversPath in Sysprep.inf. However, these drivers are not applied until midway through the mini-setup process that runs the first time Windows boots. Without having the correct Mass Storage Driver for booting the first time, Windows will blue screen (with stop error 0×0000007B) before it can even enter mini-setup. Now that many of Dell’s newer systems come with eSata ports, it is recommended that AHCI is used for SATA operation. There is a way to insert Mass Storage Drivers when sealing a sysprep image. However, we already sealed our image for this year and wanted to avoid another reseal. Fortunately, there is a way to manually inject the drivers into the image. It’s a bit tedious, but it does work.

Manually Injecting the Intel Matrix Storage Drivers into an Windows XP image

  1. Download the Intel Matrix Storage driver (be sure it’s the latest version) from the Intel website or from the system manufacturer website. If using the Intel website, you will probably need to extract the drivers from the executable. This can be done by calling <filename>.exe -a -0 <folder path>. Folder path is the folder where the drivers will be extracted to.
    • Make sure that you have the following files: iaahci.cat, iaahci.inf, iastor.cat, iastor.inf, and iastor.sys.
  2. Open iaahci.inf with a text editor. First, look in the [version] section for the ClassGUID. Copy and paste this somewhere. Next, look for the [INTEL_HDC] section. You will see syntax similar to this:
    %PCI\VEN_8086&DEV_2681&CC_0106.DeviceDesc% = iaStor_Inst, PCI\VEN_8086&DEV_2681&CC_0106

    The portion of the line that is in red is the HardwareID. Copy and paste the HardwareID portion of each entry in [INTEL_HDC] to a separate line in an empty text file. They will be important later on.
    Note: The [INTEL_HDC.ntamd64] section below, which is below this section, can be skipped. They are the same.

  3. Open iastor.inf and note the ClassGUID.  Look for the [INTEL_HDC] again. The formatting should be the same. Once again, copy and paste each of the HardwareIds to a separate line in an empty text file.
  4. Mount your Windows XP image using imageX (imagex.exe /mountrw <path-to-wim-file> <image index #> <mount-folder-path>) . If using Ghost, you will probably have to apply the image to a separate hard drive. Last time I checked, Ghost couldn’t edit disk images that were in NTFS format. By the way, now may be a good time to look at switching from Ghost to ImageX for capturing and applying your image.
  5. Copy the driver files to the following folders:
    • Copy iaahci.inf and iastor.inf to <mount-folder-path>\Windows\inf
    • Copy iaStor.sys to <mount-folder-path>\Windows\system32\drivers
    • Copy iaahci.cat and iastor.cat to <mount-folder-path>\Windows\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
  6. The HKLM\systemxp\ControlSet001\Control\CriticalDeviceDatabase key

    The HKLM\systemxp\ControlSet001\Control\CriticalDeviceDatabase key

  7. Next, the SYSTEM registry hive from the image must be loaded. Open the Registry Editor (Start->Run->regedit.exe). Click on HKEY_LOCAL_MACHINE and then go to File->Load Hive… browse to <mount-folder-path>\Windows\system32\config and select the file named SYSTEM. When prompted to give the hive a name, type systemxp. The systemxp registry hive should not appear below HKEY_LOCAL_MACHINE.
    Note: At this point, you should take a moment to browse to <mount-folder-path>\Windows\system32\config and make a backup of your SYSTEM file in case the registry changes break something.
  8. Now that the driver files are in the right spot, a registry key must be created for each of HardwareIDs that we retrieved from iaahci.inf and iastor.inf.  The easiest way to do this is to create a .reg file that will add all of the entries to the hive. Create a blank text file and name it IntelMSD.reg. From a text editor, open IntelMSD.reg and set the first line to this:
    Windows Registry Editor Version 5.00

    Next, we need to create an entry for each of the HardwareIDs that we are adding. Here is what the syntax for each entry will look like:

    [HKEY_LOCAL_MACHINE\systemxp\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2929&cc_0106]
    "Service"="iaStor"
    "ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"

    The parts in bold are what will be changed for each entry. On the first line, the red text is where the HardwareID for each entry will go. The second line is the same in each entry. The third line is where the GUID associated with that entry will go. The two ClassGUIDs that were retrieved in steps 2 and 3 will be used here. Make sure that the GUID you put is the one that was in the same .inf file as the HardwareID.

    Note: I realize that this part was a bit tricky. You can compare your .reg file with mine here to make sure your syntax is correct. Keep in mind that yours may have more entries, especially if it’s a newer version of the driver. Also, be sure that you have made a backup of your SYSTEM file in case the registry becomes corrupt.

  9. In the registry editor, go to File->Import… and browse to the IntelMSD.reg. This will load all of the registry entries into the systemxp hive. To be sure, you can browse to HKEY_LOCAL_MACHINE\systemxp\ControlSet001\Control\CriticalDeviceDatabase and check for the entries yourself.
  10. In addition to the entries created in CriticalDeviceDatabase, an entry for the iaStor service must be created. This registry file should apply the entries that are needed to HKEY_LOCAL_MACHINE\systemxp\ControlSet001\Services. To import it, go to File->Import… and browse to iaStor.reg.
  11. In regedit, click the systemxp registry hive and then go to File->Unload Hive… This will unload the XP Image SYSTEM hive so that the image can be unmounted.
  12. Unmount the image (or if using Ghost, recapture it). Test it on machines that have AHCI enabled (and use the Intel Matrix Storage Driver).

Other Mass Storage Drivers

Although I haven’t tested this, I am pretty sure that this process will work with other Mass Storage Drivers. The key to getting them to work is being able to read and understand what the inf file is doing. The Intel Matrix driver only required registry edits, and so it was fairly easy to do. For more information on inf file syntax, look at this MSDN page.

Windows 7 RC: First Observations

Wednesday, May 13th, 2009

Only a few days after the Release Candidate of Microsoft Windows 7 was released, I took the plunge and installed it on my primary laptop. Previously, I was running Windows Vista Ultimate x64 and I was really disappointed in how sluggish the system felt, especially when entering or leaving hibernation. With little to lose except for a bit of time, I completely removed Vista and installed a fresh copy of Windows 7RC.Se

Setup and Configuration

If you’ve ever installed Windows Vista, the setup process for Windows 7 will be very familiar. While there are some minor aesthetic changes, the process appears to be mostly the same. However, one difference that you may have noticed is the spare 100-200MB partition in front of the system partion that setup creates automatically during a clean install. This partition is created so that Bitlocker can easily be activated later if the end user chooses to do so. As I will describe later, this makes enabling and configuring Bitlocker drive encryption very easy for the end user.

Once setup completed, I checked Device Manager to see what devices were missing drivers. For the most part, the Vista drivers for these devices worked fine. The Lenovow website did not have a working driver for the fingerprint reader, but I managed to find a beta version through the hardware manufacturer website. Overall, the install process was relatively painless.

Interface Changes

Clearly, Microsoft focused on the interface in this version of Windows. The first difference that most users are likely to notice is that the task bar has received a major overhaul. Open application windows are all grouped under a single icon in the task bar, and the title of each window is no longer displayed. Surprisingly, this isn’t a bad thing thanks to the new behavior of task bar icons. For example, hover over an application icon, and thumbnails of all open windows for that specific application are displayed above the task bar. If you then hover over one of those thumbnails, all other windows become transparent so that you can see the application window, courtesy of the new ‘Aero Peek’ feature. Right click on the icon and you are presented with additional application-specific options or items. For example, right clicking the Internet Explorer icon shows frequently visited sites, while right clicking the Remote Desktop Connection icon will show recent and pinned remote desktop connections.

Hovering over the very right side of the task bar sets open windows to transparent so the desktop is visible. Clicking the right side of the button minimizes open windows, just like the 'Show Desktop' icon in previous versions of Windows.

Hovering over the very right side of the task bar sets open windows to transparent so the desktop is visible. Clicking the right side of the button minimizes open windows, just like the 'Show Desktop' icon in previous versions of Windows.

The ‘Show Desktop’ icon that was in the quick launch menu  in previous versions of Windows is now a permanent, yet inconspicuous, part of the task bar. Clicking on the thin blank button on the right side of the task bar will minimize all open windows so that the desktop is visible. However, if you only need to see the desktop and would rather not minimize all open windows, you can hover over this area instead of clicking it so that windows are temporarily transparent.

I’m sure there will be users that will cringe at the idea of learning to use a new task bar with different behavior, especially since the former has been in use since Windows 95. However, after a few hours of using it, I’d imagine most users will be comfortable with the new features and concepts that this task bar introduces.In my opinion, it is significantly improved. In the long run, I think most users will be happy with this change and will have a hard time looking back.

Bitlocker is a Bit Better

Hard drive encryption has become a hot topic recently, especially in the realm of laptops and mobile devices. The implications of data loss or theft are far reaching and, depending on the industry, can result in a company receiving large fines, fiscal losses,  negative public image. To defend against this, organizations have started to mandate hard disk encryption in order to prevent data from stolen or lost devices from being recovered by malicious third parties.

Turning Bitlocker feature on and off in Windows 7 is very easy.

Turning the Bitlocker feature on and off in Windows 7 is very easy.

This time around, Microsoft did things right and pre-configured the hard disk partitions during setup to support Bitlocker encryption. Turning on Bitlocker is very easy in Windows 7 (assuming your computer has a Trusted Platform Module). Simply go to ‘Bitlocker Drive Encryption’ in the control panel and click ‘Turn on Bitlocker’. The wizard will go through the process of saving a recovery key and then proceed to reboot the system and configure the Trusted Platform Module. After booting, existing files on the hard drive are encrypted in the background. The machine is still usable during this process. The disk encryption process finished in about 2 hours on my laptop. Since encrypting the drive, I have noticed little performance impact. Even my battery life seems to have remained fairly consistent.

Intuitive Device Management

Not only was pairing my Windows Mobile phone easy, the Windows Mobile Device Center was automatically installed afterward.

Not only was pairing my Windows Mobile phone easy, the Windows Mobile Device Center was automatically installed afterward.

Microsoft seems to have tried to streamline the administration and configuration of peripherals for the in Windows 7. A new area in the control panel, called Devices and Printers, allows users to quickly view and add device connections to their system. Previously with Windows Vista, I had inconsistent results establishing a Bluetooth connection with my Windows Mobile phone. Sometimes it would work great, but most of the time it took several tries to actually get the laptop and phone to pair and begin a sync. With Windows 7 RC, my experience was quite intuitive. From “Devices and Printers” in the control panel. I clicked ‘Add a device’ and selected my mobile phone, which Windows had automatically found.  A pre-generated code was displayed to pair my phone. After entering the code on my phone, the pairing was complete and the phone appeared in the devices list. If that wasn’t easy enough,  Windows 7 proceeded to detect that the phone was a Windows Mobile device and automatically began installed the Windows Mobile Device Center. Impressive.

There’s More

I’m continuing to find other new features and changes in Windows 7 that I really like. Some of these changes are more subtle than others, but the majority of them seem to share a common goal of making the interface more intuitive, responsive, and efficient to the end user. Even the minor changes to components, such as the Resource Monitor and the wireless connection task tray feel like great improvements when compared with previous versions of Windows. And to compliment all of this, Microsoft seems to have made no compromises in the areas of security, reliability, and performance. Microsoft really seems to be taking the shortcomings (both real and perceived) of Vista seriously. As for me, I am going to continue using the release candidate and look forward to the official release of Windows 7 at the end of this year.

How do I know if I am registered to vote?

Monday, October 27th, 2008

It may sound like a silly question, but I found myself wondering this evening if I was actually registered to vote. I couldn’t remember any confirmation for my registration and I had no idea how to find out. It turns out that if you live in Pennsylvania you can verify that you are in fact eligible to vote for this election using the Voter Registration Status web page. You can also find your polling location. Fortunately, I will be headed to the polls next week.

Moving

Saturday, March 8th, 2008

I decided to change hosting this month. Unfortunately, my previous host had some issues with uptime and I needed a new host that supports Python/Zope/Plone. I decided to try out Webfaction. They provide support for PHP, Ruby, Python, Zope, etc. and ‘guarantee’ a certain amount of memory to each account. While the site control panel feels very awkward, the price is right. I’ll give an update sometime later on my satisfaction with Webfaction’s service.

What it means to be student-centered

Wednesday, February 27th, 2008

This is a bit of a change in pace compared to what I normally write about. The other day I began to wonder what exactly it means to be student-centered. Warning: I go off on a tangent here.

In 2001, University President Graham Spanier spoke at the Advising Odyssey conference about issues that academic advisers will be faced with in the future. During his speech, Spanier explained that an important factor of successfully educating students in the future will be creating an engaged or student-centered University. While this term is somewhat self-explanatory, it could easily be misinterpreted as creating a university that pampers students. Sorry if you were expecting full time massage therapists or day spas in our residence halls.

Spanier defined a student-centered University with three relatively broad statements:

  • “An engaged institution must be responsive to the needs of today’s students and tomorrow’s– not yesterday’s.
  • “It will enrich student experiences by bringing research and engagement into the curriculum and offering practical opportunities for students to prepare for the world they will enter.”
  • “…it will put knowledge and expertise to work on problems its communities face.”


Are we a student-centered University?

In many ways, Penn State is a student-centered University. Faculty, staff, and administrators have made many attempts to tailor courses and majors to meet the needs of students. Many professors engage students by giving them the opportunity to participate in research projects. These are only a few examples.

However, Penn State isn’t always perfect at meeting the educational needs of its students. Sometimes students get shafted when it comes to resources that are important to their education and career. Sometimes, students don’t have a role in decisions that are made in the University. For being so student-centered, I find it frustrating when University Administrators turn a deaf ear when students speak out about issues.

The Bad Days

On some days, many of my student colleagues deal with people that have subconsciously generalized students as immature, irresponsible, and more of a cash cow than a valuable resource of advice for the betterment of the University, and their attitude reflects that. While their perception may be true of some students, it is wrong to place all students in this category. Every day I work with student leaders that are passionate about making the University a better place for everyone. They are selfless workaholics who do not want or need recognition, even though they deserve it. For students with this kind of dedication, it is incredibly disheartening to come into contact with people that has a negative impression of the students that they are supposed to support.

The Good Days

On a good day, the people that student leaders interact with are receptive to the needs of students. They want to make life better for students throughout the University. For a genuine student leader, nothing feels better than having staff or administration reach out to you looking for ways to improve that they can University, in either a small way or a large one. To me, that is student-centered culture at its finest.

The Days Ahead

Hopefully, our University will continue to be student-centered. It is vital to the success of both students and the University as a whole. There will always be skeptics that believe they know what is best for the student body despite lacking student input. However, the value of being student-centered will hopefully be proven by those that listen to the needs of students and continue to help reshape the University to meet their academic needs. Hopefully, there will be more good days than bad ones for student leaders.

Stay away from Registerfly

Sunday, July 1st, 2007

For the past few months I’ve been trying to get my domain transferred out of Registerfly due to their ICANN accreditation being revoked and their bad business practices. I’ve opened several tickets and received no respnonse yet. Even though my domain is unlocked, it still won’t transfer. The account settings pages in registerfly seems hopelessly broken. Basically, it’s a bad situation. That’s why I was surprised when I saw how sneaky this company really was.

(more…)