Parallels and Windows 8 – two core minimum

I’m amazed how well my Macbook Air (June 2012 version) runs Windows in a virtual machine with Parallels.  I’ve been doing a bunch of data migration work recently and need to run Windows 7, SQL Server, and Office 2010.  Everything is seamless and fast on a second monitor so it feels like 2 PCs on a single keyboard and mouse.

Then I started working with Windows 8 and Office 2013 for a different client and the wheels came off.  The VM would stutter like a car climbing snowy Claypit Hill Road in Wayland.  The CPU would peg but not even the animated cursor would be spinning.

Frustrated, I launched a case with Parallels support.  After a little back and forth, I got an appointment with an engineer who was polite, articulate, and — wait for it — helpful!  He indicated he had seen this problem before and adding a 2nd CPU core to the VM resolved the issue.

The change was painless.  It required fully stopping the VM, but no other surgery.  I haven’t seen the stutter problem since, and don’t notice any adverse performance consequences from the change.  Parallels get’s an A for technology and an A for support.  Nice to feel that way about a product and company these days.

Apex Data Loader Tips for Uploading Content Files Content is a pretty good document management system.  If you are using Salesforce and you aren’t using Content you probably should.

Uploading large quantities of files is not difficult, but requires some local knowledge.  Here are a few tips to make it easier.

  1. Give the Apex Data Loader more heap space.  Instructions can be found here.
  2. I like to err on the side of reliability when doing document uploads; so I change the Data Loader Settings to use a batch size of 1 and do not use the Bulk API.
  3. Keep in mind that you can only import 5,000 files per day.  If you are doing more than this, open a case with support and get the limit raised temporarily.
  4. Files in Content are managed by 2 objects.  ContentDocument and ContentVersion.  When uploading new documents to Content, you are adding records to ContentVersion.  When you are bulk deleting, you delete records from ContentDocument.
  5. The easiest way to figure out how to create a ContentVersion upload file is to first do an Export.  Make sure to manually add a few files to Content through the UI so there is something to Export from each of the Libraries you want to populate.  When doing the ContentVersion Export, select ALL columns EXCEPT VersionData.  VersionData contains the actual bytes of the files in Content.
  6. The minimum set of columns required for a Content import are:
  • TITLE = User friendly name of the file, can be anything, but usually the filename without any folder (path) information.
  • PATHONCLIENT = Fully qualified file name including ALL path information.
  • VERSIONDATA = exactly the same as PATHONCLIENT.
  • FIRSTPUBLISHLOCATIONID = Salesforce ID of the Library where the document should be loaded.  If you don’t put this in the file, then your files will be uploaded to your personal library which must be wrong.

That should get you started. Have fun assembling your files into batches for uploading.  Once they are in Content, you’ll get the benefit of secure sharing, preview of popular file types, and flexible tagging.

Yes! PHP on GAE!

I was talking with Google Enterprise Support about how reasonable my bill was last week and I couldn’t believe my ears.  He told me that Google App Engine (GAE) was now supporting PHP.  Check it out here.  I know that sounds geeky (’cause it is), but it is also really great for me and everyone who wants to use the platform.

Google App Engine is a super way to build web apps that can scale without system engineering.  But you needed to work in a bit of a non-traditional environment.  Now I can build teams with PHP developers, rather than needing Python (and Django).  Not that there’s anything wrong with Python — but it is a smaller pool of talent.

Here’s another great take on the news.  VentureBeat estimates that 75% of the web is presented with PHP.  Wooah.

Our Friend Big Data

Today we in Boston woke to news that one of the two suspects in the Marathon bombing had been killed.  The other, his brother, was being chased down. Watertown and Waltham are locked down and Wayland is just two hops away from the search.

I think how the Police identified the brothers is a great example of how Big Data can help us. As a computer guy, I’ve seen the decline in privacy caused by digital footprints we leave behind: credit cards, EZ Passes, cell phones, etc. Finally we are seeing the peace dividend from all this data.

A couple of things came together in the Boston marathon investigation.  First, there were thousands of cameras taking geocoded and timestamped photographs at the blast locations.  These photos were collected (voluntarily) and paired up with video from a few security cameras.  Add tons of computing horsepower with sweet pattern recognition algorithms and you can reconstruct the entire scene like a 3D movie.

So now we have a new weapon in our fight against terrorism.  If we (the people) are OK with more surveillance in public places, it will be really difficult to do something awful without getting caught.

Shame on Skype (Microsoft)

I love Skype.  I’ve been living on it for years.  It’s a good IM client, the VoIP is great and the group video is completely acceptable.  My Wayland office has one less device on the desk since I don’t need a regular phone anymore.

Today the wheels came off when I discovered that the Macintosh Skype client hangs up on callers when I reject a call.  On Windows, it sends the caller to Voicemail — which is what 95% of people would want.  I’m not sure what the other 5% want, but I’m guessing it isn’t a disconnect.  And the issue has been around for a year without resolution!

So is this a Microsoft thing?  Are they trying to punish me for leaving Windows?  I hope not, because I’m going to dump Skype before I leave Mac OSX.  They’ll be lonely in the Microsoft Store opening soon in the Natick, MA Mall if this keeps up.

Uggg, SQL Server 2012 Bummer

I’ve been having a great time in the Wayland Barn doing data migration work with MS SQL Server 2012.  The gigantic legacy database I’m moving to is super speedy on my SSD so everything is good.

Until I find out that that legacy database has triggers and stored procedures written with a deprecated JOIN syntax.  They are using *= in a zillion places to perform OUTER JOINS.  and the rain starts pouring in Wayland. Truth is, that syntax has been out of style for a decade.  But Microsoft was still supporting it until just this newest release.  Check out this very good summary of the situation.

Easy Wins for

I’ve been working on a data migration recently and I love it when they improve the platform in subtle yet powerful ways.  My most recent pleasant surprise is the expanded length of “Name” fields.  Names used to be limited to 80 characters, which seemed generous, but still left us with a hack for storing legal names on some objects (tables).

Now Names can be up to 255 characters and it is a great simplifier.  So with joy and gratitude, I’d like to ask Salesforce to do something way easier.  Please enhance the best on-demand report writer and allow us to show/hide totals and grand totals in matrix reports.  This idea has been floating around for years and I can’t imagine it being difficult to implement.

Prototyping Breakthroughs

Today we had a breakthrough on prototyping a new app.  After umpteen hours of notes and ideas and sketches it all came together.  We went from feeling lost in our Wayland office, to having a plan of attack — in one breakthrough hour.

We decided to mock it up (again) in Balsamiq so we could be sure it would work right.  Then we realized that the new thinking is such a great simplifier, that we can mock it up in HTML and Django just as fast.  And we’ll really get a feel for how the app hangs together.

Not sure what created the breakthrough.  Maybe the soak time, a good nights sleep, our track record of great teamwork, who knows.  Stay tuned…we’ll see how it turns out.

It’s Always Something

I’m loving my new setup for Email and Calendars on my Mac. But there is always something that doesn’t work quite right. For today’s annoyance, I submit the detail that I can’t have my Office 365 Email and Calendar without also having Tasks show up in the Reminders app.

Before you tell me how petty this peeve is, the Tasks list shows up first in Reminders, and there is no way to move it down. So it becomes the default list. Drat.  I’m looking for solutions and will post if/when I find one.

Windows and Office – Not Dead Yet

The last 2 companies I’ve started have been pure cloud — no infrastructure, no Windows in the server stack or client requirements. I had thought the days of using Office and Windows were over for me.

Then I got hooked up with some guys using Office 365 to get launched and it works really well. Similar to my fat client post before, I’m surprised at how easy it is to go back to “rich” tools like PowerPoint and OneNote. I’ve got my Windows VM running in Parallels and when I switch to Full Screen, it’s like I never left.

Final thought is the Surface machines look really cool. If they go on sale, I’m picking one up!