Google Spreadsheet Sorting Bug

I needed to tally votes from a simple poll for determining priorities of some topics.  Several other people need to analyze the results; since they are from different organizations, I decided to use Google Spreadsheets.

Instead of going through the whole process of how I arrived at the bug, I’ll cut to the chase and just explain the problem:

If a Google Spreadsheet uses references to another spreadsheet, sorting the spreadsheet does not adjust the referenced cells correctly.

To demonstrate the problem, here’s a few screenshots:

Google Spreadsheet - Initial State
Google Spreadsheet - Initial State

Note that cell A3 uses formula =’Topics’!A3 in order to display the value from the corresponding cell of the Topics spreadsheet.

Google Spreadsheet - Incorrect Sort Behavior
Google Spreadsheet - Incorrect Sort Behavior

After sorting on column D, notice that columns C & D (in green rectangle) are changed, but columns A & B (in red rectangle) are not.  The result of the sort is incorrect and useless at this point because Topic A, Choice 1 is not truly the top rated item.

To demonstrate a bit further, I changed hard-coded the values in column A rather than have them reference the values in the Topics spreadsheet.  The result of sorting after this change looks like:

Google Spreadsheet - Partly Correct Sort Behavior
Google Spreadsheet - Partly Correct Sort Behavior

Here we see that columns A, B & C have changed correctly, but column B has not because it still uses references to the Topics spreadsheet. (Note the value of cell A3 shown in the Formula bar just above the spreadsheet)

So, is this a bug or not?  I would count it as “unexpected behavior,” but I guess Google will have to determine whether they want fix this or not.  I got the results I expected from Excel, however, as you can see here:

Microsoft Excel - Correct Sort Behavior
Microsoft Excel - Correct Sort Behavior

If you’re interested to tinker with or investigate this issue, you can copy the Excel spreadsheet, import it into Google Docs and tinker away.  Caveat: You may have to set the reference formulas in the Results spreadsheet to point to the appropriate cells in the Topics spreadsheet.  I don’t think Google converts the references to hard values during import, so verify it beforehand.

Azure 1.3 SDK Refresh, Problems!

Microsoft released a patch (aka “refresh”) for the Windows Azure 1.3 SDK. As per the announcement, the security vulnerability is serious, but its impact is limited.  None of our Azure apps, nor of our customers, is affected.

Regardless, we aim to keep up with the leading edge, so we quickly applied the patch.  Unfortunately, the patch seems to have broken our dev environments.  Here’s a quick run-down:

  1. At least one environment installed the patch while VS2010 was still running.  The installer didn’t complain, and no Azure-related projects were loaded in VS.  After applying the patch and then opening Azure projects, the Azure assemblies (e.g., Microsoft.WindowsAzure.Storage) had to be refreshed (remove & add) in the projects.
  2. Rebuilding Azure projects encounters this error:

“WAT050 : The version of the Windows Azure SDK currently installed is not compatible with this version of Windows Azure Tools for Microsoft Visual Studio.  Please download and install the latest version of both the Windows Azure SDK and the Windows Azure Tools for Microsoft Visual Studio    C:Program Files (x86)MSBuildMicrosoftCloud Service1.0Visual Studio 10.0Microsoft.CloudService.targets”

Analysis & Resolution

Regarding #2 above: as best as we can tell, it appears that the original Azure 1.3 SDK was less sensitive to the version of Azure Tools for Visual Studio (VSCloudService.exe) was installed.  Environments that don’t have the most recent version of VSCloudService work fine with the original 1.3 SDK, but this refresh doesn’t.  Resolution: Install most recent version of VSCloudService.

JungleDisk Server Edition #FAIL!

We use JungleDisk Server Edition to ensure we have backups for one of our critical servers.  Why did we choose Server Edition over the basic JungleDisk?  Because we have several (higher) expectations for server backups:

  1. Scheduling – We need to have control over when the backups occur.
  2. Reliable – Once we install & configure the backup software, paths, schedule, etc., we need to trust that it will work without oversight or manual intervention.
  3. Fast – We run backups every six hours.  The backup process needs to be fast and complete well within the six hour window.  Obviously the amount of data being backed up is a major factor, especially on initial backup.  But the software itself is also a major factor.  We can manage schedules to data sizes, but we can’t change the software.  For reference our backups have been completing in less than 30 minutes (peak).
  4. Smart – Since the accumulation of data on servers tends to be large, the backup software needs to be very smart about what needs to be backed up and not waste CPU, memory, bandwidth unnecessarily.
  5. History / Logs – We need to be able to look back in time and know what happened with our backups, good or bad.
  6. IJW

JungleDisk SE has been a pretty good solution for us for a while.  But last night (~11 pm EST) one of our team members happened to look at the JungleDisk Activity Monitor on the server and found out that:

  • JungleDisk SE seemed to have skipped the most recent scheduled backup.
    • There was no record in Backup History (log) of any activity around that time-slot.
    • The Activity Monitor reported “Failed to open backup vault. No Internet connection detected. xSocketTimeout – HTTP connection timed out: SSL connection timeout”
    • Attempts to start a backup manually in Activity Monitor consistently failed with the same error.
  • JungleDisk’s Customer Support site doesn’t recognize our login credentials and doesn’t support SSO with main site.
    • We could successfully login to our JungleDisk account via https://www.jungledisk.com/
    • After successful login and navigating to My Account page (https://www.jungledisk.com/secure/account/), we tried to get support via the Support tab under Current User in the left navigation bar.
    • On submitting a support request, we were notified that we had to login first.
    • We clicked the link for login and found that the page (http://support.jungledisk.com/access/) is not secured!  We didn’t really want to pass our server backup credentials over plain-text, but we figured we can change the password later.
    • When we tried to login, however, JungleDisks Customer Support site didn’t recognize our credentials (the same credentials we used successfully on their main site)

As you’d expect, we were beginning to wonder if JungleDisk is still an active business.  The plot thickened, however.  The good news is that when we checked on the server this morning, JungleDisk appeared to be working again.  The bad news, however, is that the transfer rate is incredibly (painfully) slow (between just 88 & 104 kbps!).  The estimated time required was over 12 hours!  We weren’t sure what to do.  Should we just let it run and hope that future backups normalize back to less than 30 minutes?  Or should we reset the JungleDisk service in hopes that it would speed up?

Our team decided to ride it out.  We’ll hope that this backup completes successfully, and we’ll check the next few scheduled backups to ensure they complete quickly and successfully.

UPDATE:  Many will be interested to learn that Rackspace’s Server Backup product is just JungleDisk Server Edition rebranded.  While looking at backup options on Rackspace’s site, our guy was accosted by those flying online salesperson chat boxes.  He finally caved and simply asked the rep the difference between the two (JD SE & RS SB).  The chat went something like this (paraphrased):

AltaModa rep (AMT): What is the difference between JungleDisk Server Edition and Rackspace Server Backup?

Rackspace rep (RS): Rackspace Server Edition provides Fanatical Support.

AMT: We’re using JD SE now, but it didn’t backup last night.  We wonder if we should switch to something else.  Would RS SB require taking the server off-line?

RS (after a very long wait): Unfortunately, yes.

AMT: That is unfortunate.  Is it substantially different and better than JD SE?  We don’t want to take the server offline just to get the same thing.

RS: Rackspace Server Edition includes Fanatical Support

AMT: Ok, but is the code actually different?  Or is it just a rebranding of the JungleDisk code?

RS: Yes, the code is rebranded.  Would you like for me to send you a link….

We’re going to stay the course and see if the current JungleDisk will work (see above).  If we’re going to have to take the server offline, we’ll do a more exhaustive analysis of solutions that just Rackspace’s offerings.  If you have suggestions, please add a comment below.

UPDATE 2:  Some have asked about the relationship between Rackspace and JungleDisk.  Rackspace acquired JungleDisk in October, 2008.  Rackspace continued to invest in and maintain JungleDisk after the acquisition, but now may be killing off the JungleDisk brand.

Technorati Tags: ,

RockMelt–A Quick Preview

RockMelt is a new web browser which aims to provide tighter integration with social networking and web browsing.  It’s based on Google’s Chrome browser and adds several strategically placed buttons and side bars.  After you log in with your Facebook account, you can view the handy Guide page which shows many of the key features (dark blue bubbles below):

RockMelt-Guide

You can easily update your status, see which friends are online, share the page you’re currently viewing, etc.  The vertical bar on the left is the Friend Edge.  The one on the right is the Apps Edge.  With a quick glance the Apps Edge let’s you see that you have unseen Facebook and Twitter items.  You can also add other feeds as well.

RockMelt-Share-cropped The Share button is pretty handy.  If you’re on a page you’d like to share, just push this button, select where to share (Facebook or Twitter), type a comment if you’d like and then post.

This feature could be better, however.  If you want to share the page on both Facebook and Twitter, then you’ll have to Share twice.  Not terrible now, but when Buzz and others are available, multi-posting will become a major pain!

RockMelt-Chat-cropped When you click on a friend’s icon in the Friend Edge, RockMelt assumes you want to initiate a chat session.  I think people would rather view Recent Activity first, but maybe I’m wrong.

If the friend is offline, however, it still assume you want to chat.  That seems pointless.  RockMelt should go to Recent Activity when the friend is offline.

I think it supports multiple IM networks, but haven’t researched or tried many.

RockMelt-Recent Activity-cropped Viewing your friends Facebook updates is very easy.  Just click on their icon in the Friend Edge and select the Recent Activity tab.  Scroll down to see older activity, and clicking a link opens it in the browser (right-clicking the link also gives the options of opening in a new tab or new browser window – nice!)

BTW, when you hover over an icon, you get a info balloon of their most recent tweet, etc.  Sorry, no screen cap of that.

RockMelt is a pretty cool browser don’tcha think?  I’ve been using Chrome for a long time, so its base UI is very usable and easy.  The edges don’t really get in the way, and I didn’t find that I missed the screen space.

So, you should check it out, too.  http://www.RockMelt.com Come back and leave your comments so we can compare notes.

Technorati Tags: ,

RockMelt = Installer Melt on Windows 7

I was excited today to get my invitation to try RockMelt – I’m really curious to see what they’ve put together web browsing and social networking. “Your Browser. Re-Imagined.”

Unfortunately, I didn’t get the kind of Melt experience I wanted. I downloaded the little (~500kB) installer and launched it. More specifically, I launched it using Run as administrator since, as per the Principle of Least Privilege, I was logged in as a User.  This typically works fine for most recent installers – they’ve learned how to do their work using an admin’s credentials and installing for all users.  RockMelt’s installer isn’t working correctly, however.  The installer completed (downloaded more files, installed, etc.) without error, so everything looked good.  But there was no RockMelt in the start menu, etc.  Hmmm, what’s going on?

I figured it was a problem with running as different credentials from the current user, so I:

  • Uninstalled RockMelt (as an admin, still logged in as low-priv user)
  • Logged off & logged back in with an admin account
  • Re-installed RockMelt

Ok, all should be good, right?  Well, not exactly.  When I tried to launch RockMelt from the start menu, I got this error:

RockMelt - Launch Error
RockMelt - Launch Error

It turns out now that it doesn’t matter how I’m logged in when I run the installer, it always uses the first user’s AppData path.  So, for example, if AdminDude launches the installer, the shortcut points to C:UsersDudeAppDataLocal…. because Dude was the logged in user the very first time I ran the installer.  It’s probably just some registry data, but I don’t want to spend time hunting it down.  Maybe they’ll resolve it in a future release.  Regardless I Shoulda Used a VM! #ShouldaUsedAVM

Process Explorer v14: Good changes or not?

On Nov. 16 Microsoft’s SysInternals group released an update of the SysInternals Suite.  Some of the most notable changes in this release are related to the famous & fantastic Process Explorer.  The announcement for v14 of Process Explorer from SysInternals’ blog states (emphasis added):

This major update to Process Explorer adds a slew of enhancements and new functionality including network and disk monitoring, an improved multi-tab system information dialog, additional memory statistics, a new column that shows aggregate CPU usage for a tree of processes, improved DLL scanning performance and accuracy, command-lines in process tree tooltips, support for more than 64 CPU systems, and more.

I like most of the features and changes, although I have no way of testing the >64 CPU support 😉  I like the Tree CPU column, command-line args info in process tooltip (particularly useful for services), and network and disk monitoring.  I don’t, however, like the change to the (solely) multi-tab system information dialog.  Why not?  Let’s take a before & after look.

Process Explorer v12, System Information dialog screenshot
Process Explorer v12, System Information dialog

And now screenshots from v14:

Process Explorer v14, System Information - CPU screenshot
Process Explorer v14, System Information - CPU Tab

The new System Information dialog only shows one ‘metric’ at a time – CPU, Memory or I/O. I wish they’d kept the original as an All tab. In previous versions provided some sense of correlation between the three in time. The options now are to switch back and forth between tabs – reduced correlation effect – or go back to good ol’ PerfMon.

In case you wanted to see the Memory and I/O tabs…

Process Explorer v14, System Information - Memory Tab screenshot
Process Explorer v14, System Information - Memory Tab
Process Explorer v14, System Information - I/O Tab screenshot
Process Explorer v14, System Information - I/O Tab

BTW, it’s mildly interesting to note that Process Explorer jumped from version 12 to version 14.  I guess the SysInternals folks are pretty superstitious about 13th releases!

Blekko: Better Search by Looking in Fewer Haystacks

If you haven’t heard of Blekko, you should check it out soon.  How are Blekko searches different?  Consider this analogy.   When looking for a needle in a haystack, it helps to look in the right haystacks, right?  I mean if a needle is in one of 30 haystacks, Murphy’s Law (or similar) suggests that the needle is in the last haystack.  What if you could reduce the search down to 5 haystacks?  That would save you a lot of looking.

Haystacks, in this analogy, represent websites.  The number of websites continues to grow rapidly on a daily basis.  But why look through every website?  Blekko executes your search, but only over specified websites. (The search may cover more websites, but the results you get are only from the specified set)

Maybe an example is the best way to explain more about Blekko.  So, do a Blekko search for OAuth.  Just above the first result you’ll see something like “1 to 20 of 4M web results….”  How are you going to look through 4 million results?  Now use Blekko to search for OAuth, but only from Azure sites I’ve defined.  You’ll see that the number of results is far more manageable.

Now, look at the text in the search box.  “OAuth /jburnett/azure” tells Blekko to search for OAuth using the restrictions defined in ‘/jburnett/azure’ which Blekko calls a slashtag. A slash tag is just a handle to a set of URLs and other slashtags.  My Azure slashtag contains:

azure.com

blogs.msdn.com/windowsazure

codeplex.com

appfabriclabs.com

sqlazurelabs.com

Not cool enough for you?  Well, I lied.  My Azure slashtag really contains:

/amt/azure

codeplex.com

Slashtags are nestable – my slashtag is re-using another user’s Azure slashtag!  When they add useful websites to their slashtag, I’ll get results from those sites, too.

Check it out, and add your own slashtags.

Technorati Tags: ,,

The Best and Worst of PDC 2010

I attended Microsoft’s PDC 2010 simulcast in their offices in Alpharetta, Georgia.  Here are my thoughts on the best and worst items from the day.

The Best of PDC 2010

  1. [Re]connecting with Friends & Colleagues – The best part of the day was seeing colleagues I haven’t seen in a while and talking to new people.  Randy, Doug, Jeremy, David, Chad – it was great seeing you guys.  Isaac, I enjoyed meeting you – best wishes in your new role.  The guy from India whose name I didn’t catch – our conversation was very interesting and raised some important points – thanks!
  2. Mark Russinovich on Azure – OK, I know this is old news, but Mark has so much geek cred & seeing him in action with Azure boosts my confidence in the platform.  I formerly just believed that Microsoft cared about making the guts of the platform accessible & diagnosable for developers.  Now I know there’s a guy in place who will make sure that happens.
  3. Asynch in C# 5.0 – I didn’t see much of Anders Hejlsberg’s, but what I did see was striking.  He demonstrated the capabilities of async and await which result in multithreaded code under the covers.  Of course multithreading is nothing new, and the Parallel framework in .NET 4.0 renders multithreaded code, but the addition of these keywords and compiler support will dramatically improve code performance at much lower development cost.
  4. Component Applications – Karandeep Anand’s presentation on AppFabric announced Azure’s upcoming Component Application features.  These features provide modeling capabilities for connecting various services together (inside Azure or not) and treating them all as a cohesive whole.  By adding and connecting a new service, all the glue code between the services was generated.  These capabilities will reduce development time and reduce manual code risks.
  5. Azure Management Portal – As with every Azure demo I saw, Karandeep used a new, Silverlight-based management portal, and it was really powerful.  The best example of ‘really powerful’ was during his presentation regarding Component Applications.  Karandeep was modeling several different services on a collection of Azure instances and he could deploy all of it atomically with a single action!  No more deploying individually.  Very cool and big time savings to boot!
  6. Windows VM hosting – Microsoft’s focus on the PaaS side of Azure has been the right course, but migrating existing apps to the cloud almost always involves some software that needs to remain as it is (due to cost, complexity, ‘it just works,’ etc.)  Now Azure will have true IaaS-level virtual machine support (but only for specific versions of Windows Server 2003 and 2008 R2)
  7. RDP to Azure Instances – In the “They Have to Do This Eventually” category, Microsoft has finally announced the ability to use Remote Desktop to access instances and VMs in Azure.  Beta coming by end of year.

The Worst of PDC 2010

  1. Buffering! My biggest disappointment of the day was that it seemed like we were watching the simulcast feed over the internet, just as we would have at our own offices.  Every session I saw encountered long pauses due to buffering.  Some sessions were so bad that people just left the room to do something (anything!) valuable with their time.  It was painful! Can’t Microsoft get these feeds over their WAN with some QOS support?  Many people in my sessions agreed that this is a make or break issue for attending next year.
  2. Azure Management Portal Not Available Until H1-2011 – The new portal will save every Azure developer a lot of time.  But, its first availability, even as a CTP, is set for the entirely nebulous “first half of 2011.”  In case you’re new to this game, that statement roughly translates to:
    • Q1 of 2011 – Wow!  You should be pleasantly surprised (shocked) if it is available in Jan, Feb or Mar
    • Q2 of 2011 – Microsoft’s internal target is probably in this quarter, and probably more toward the end.  No need to be shocked in this time-frame; pleasantly surprised is appropriate.
    • H2 of 2011 – Right, H2 is not part of H1; they don’t even overlap.  But hey, schedule slips happen!
  3. Component Application features, CTP in H1-2011 – Same as above; disappointing that we may not even get to CTP it prior to next summer.  Schedule slips are probably a higher risk for this component than the portal.
  4. Silver-what? There was a noticeable lack of Silverlight references or discussion.  If you took your guidance from yesterday’s keynote and other general sessions, you’d drop Silverlight and immediately switch to HTML5.  Silverlight still has a great future, and Microsoft continues to invest in it; so should you.

Well, that’s about it.  I hope this has been helpful or informative in some way.  If you attended PDC 2010 and think I missed a best or worst, just comment below.  If you think my Best and Worst items or commentary are wrong-headed, post a comment.  If you think I’m a lunatic, well just join the crowd.

Technorati Tags: ,,

Winners and Losers in Oracle’s Java Battle

I have a confession to make: I don’t use Java much.  There, I’ve said it.  You’ll have to take this post with whatever grain(s) of salt you determine.

I’m a software developer who works primarily in the Microsoft technology stack.  Many years of C#, .NET, etc. in my history, and now Azure is my main focus area.  However, I’m very interested in Android, so lately I’ve been tinkering with it and considering building an app for the marketplace.  Isn’t it interesting that a cell phone OS is the pull for me to get into Java, GAE, Eclipse and even Linux? But that’s probably better saved for another post.

Consider the case for Android developers: The up-front costs for Android development is almost exclusively hardware.  You need a development workstation and, eventually, Android devices for real-world testing.  Linux, Eclipse, Java and Android are all free.  Well, for now.

What happens if Oracle gets its way in the Java suit against Google?  Would Google continue giving Android away for free while paying Java royalties to Oracle?  These questions clear the fog a bit in terms of the suit’s potential impact.  And those impacts have already begun.  Many developers are now forced to take a wait-and-see approach to Java-based projects, including Android projects.

So it seems that Java-based or -oriented projects, big and small, are losers in this equation.  Who are the winners?  Will Oracle be a winner?  They may well see a revenue upswing, but it will drive many away from Java.  Will IBM continue it’s Java investments?  That leaves Microsoft.  Will Java developers migrate to .NET?

“May you live in interesting times.” – Chinese proverb

Who wins market share from #Oracle’s #Java suit on #Google?  #Microsoft? #IBM?