Saturday, May 7, 2016

Geek's Paradise: My First Week with a 2016 Nissan Maxima

I'm the new owner of a 2016 Nissan Maxima Platinum. I've had the car for one week, so I thought I would share my first impressions.

Why a Maxima?
First off, why did I select this car? My wife has the minivan, and I like to drive a sedan -- when possible, a luxury sedan. A few years back when I worked for Microsoft, I drove a stylish Infiniti I30 which I loved. More recently, it's been a Camry Hybrid--a big downgrade on luxury, but the hybrid technology had geek appeal. Anyway, my oldest daughter is off to college and we've given her the Camry, which means it's time for new wheels for Dad. :)

I did take a look at the near-luxury models within reach including Acura, Lexus, Infiniti, BMW, and Mercedes. I can't really get excited about Lexus these days ever since Toyota/Lexus adopted that hideously ugly spindle grille. Although I can afford an entry-level BMW or Mercedes, I get the feeling I'd be in for a more expensive cost of ownership. Options cost more, and even simple maintenance like an oil change costs more. Before long, I was focusing on Acura and Infiniti as realistic possibilities.

For quite some time, I was seriously considering an Acura TLX: it has a great collection of features for the price, and we've loved the quality of our Honda Odyssey minivan. But then my wife and I went for a test drive, and found the interior disappointing. There's just enough room in front (though I could easily hit the roof just by stretching a bit), but the back seat space is woefully inadequate. My teenagers would never fit back there. I also found the interior bland and very much lacking in quality materials for a near-luxury brand. Disappointed, we realized we'd better keep looking. I widened my circle of car brands a bit and kept reading reviews. Before long I found some mentions of how well the new 2016 Nissan Maxima compares to luxury brands, so I decided to take a closer look, and was immediately impressed.

The 2016 Nissan Maxima has a bold new exterior styling that gets a lot of attention. The interior, modeled after a fighter jet cockpit, is stunning and rivals luxury brands. There are tech features galore. The car has plenty of power with a 300HP V6 engine, but gets 30 MPG on the freeway. We took a test drive and were won over. Soon afterward we made our purchase.

The Maxima comes in 5 trim levels, all with the same engine. Even the lowest trim includes a navigation system and rear-view camera. I went for the top-of-the-line Platinum trim, which includes some nice goodies like a 360-degree camera view, heated/cooled seats, blind spot warning, adaptive cruise control, and dual sunroof.

Tech Features

I'm a geek, so tech features matter a lot. The Maxima has lots of them which I'm going to describe in the remainder of this post. I'll cover other topics such as power and comfort features in future posts.

Center Console

The Maxima has a center console touch-screen which displays Audio, Map, Navigation, Traffic, Weather, nearby Fuel Stations (with gas prices), Movies (with nearby theatres and showtimes), and even Google Search results. Some of these features are dependent on a SiriusXM subscription or a connection to your smartphone.

Center Console showing Map

Nearby Fuel Stations with Prices

The console touch-screen can be touched and pinched wider/smaller similar to a smart phone. Alternative ways to interact with the console screen include voice commands and a Command Dial.

Command Dial

Driver Assist Display (Dashboard Screen)

In addition to the center console there's also a good-size display right in the dashboard between the tachometer and speedometer. You can cycle through a number of useful views using steering wheel controls including Speedometer/Compass, Audio, Tire Pressure, Navigation, and Driver Warnings.

Compass/Speedometer view

Navigation view

Audio View

Tire Pressure View

It's nice having all this information right there in the dashboard, pleasantly presented.

Blind Spot Warning

Ever have a close call where you were about to change lanes only to find there was a car present you hadn't noticed? Blind Spot Warning comes to the rescue. If a car is on your left or right in your blind spot, you get a light in the left or right door near your side-mirror; a message will also appear on your dashboard if you have the Driving Aids view displayed. If your turn signal is on and there's a car in your blind spot, you get a beep as well. This is a really useful safety feature and I feel much more secure on the freeway with it looking out for me.

Blind Spot Warning

Collision Detection

Predictive Forward Collision Warning (PFCW) warns you of an impending collision. It actually looks two cars ahead (by bouncing sonar under the car in front of you). The advance warning gives you time to react. If a collision is unavoidable, Forward Emergency Breaking (FEB) will apply the brakes automatically.

I know this is a valuable safety feature that really works because I've already seen it in action--it went off during our test drive! My wife was getting on the freeway, and the car ahead of her suddenly slowed to a halt without warning on the entry ramp. Alarms went off alerting us to take action.

Intelligent Cruise Control

What Nissan calls Intelligent Cruise Control is more commonly known as Adaptive Cruise Control. The innovation over traditional cruise control is that the distance to the car in front is maintained, with your car automatically slowing or speeding up on its own. I tried this on a California Freeway that was open road at times and stop-and-go at other times: the car drove itself, even coming to a complete stop when necessary and resuming when traffic started moving again. All I had to do was steer. This feature is really well implemented and has already won my trust. Clearly we're not far from the time when self-driving cars are going to be a reality.

Steering Wheel Controls

All-Around Camera and Moving Object Detection

Rear-view cameras are becoming very common in newer vehicles, but Nissan and Infiniti are known for their Around View that shows you the front, sides, and rear of the car. This is done very well and presented like a birds-eye view on the center viewing screen. It's an invaluable help when parking. There's also Moving Object detection, which alerts you if something is moving toward the vehicle (such as another car or a pedestrian). Frankly, I never realized how poorly I center myself in road lanes and parking spots until I had this Around View feature.

Rear-View and Around-View Split Screen

Rain-sensing Windshield Wipers

Sensors behind the windshield detect rain automatically and turn on/off the windshield wipers as well as adjusting their speed. I haven't personally seen these in action yet (rain is rare in Southern California), but my wife came back from a drive yesterday and reported that sure enough, it started to rain and the windshield wipers came on all by themselves.

Phone Integration

I have an Android phone and my wife and children have iPhones. The phone features vary slightly by phone platform, and we're still learning our way around them. The car will read me text messages from my Android phone and let me send replies (from a list), but it doesn't do that for an iPhone. My wife and daughter can access music from their iPhones through the car's audio system, but I can't seem to get to my Android phone's music.

Heated and Cooled Seats, Heated Steering Wheel
I've had heated seats in previous cars, but cooled seats is new to me--and it works quite well. The steering wheel can also be heated, though I haven't had the need for that feature (and probably won't, given where I live).

What's Not to Like?

One feature that is missing that would be nice to have is Lane Departure Warning; I otherwise have all of the other tech features I want.

The Nissan Connect integration with smart phones is something I'm still working on figuring out, so I won't weigh in on that yet other than to say setup is rather confusing.

I'm also just getting started with voice recognition, so I'll also report on that another time.

The sun visors should be a bit larger. It's the only complaint I have about an otherwise stunning interior.


So far, I love my new Maxima. It's a blast to drive.

Tuesday, March 8, 2016

Now on Kindle: The Programmer's Guide to Quality Assurance

The Programmer's Guide to Quality Assurance is now available digitally on Kindle.

As I mentioned in my original announcementThe Programmer's Guide to Quality Assurance is a book on testing and quality assurance aimed at programmers, not quality assurance professionals. It's about software developers taking ownership of the quality process instead of merely reacting to it. It covers your role in software quality, building in quality, testing your own work, functional testing, hostile testing, automated testing, analyzing & debugging, fixing bugs completely, and bug causes & remedies. Lack of software quality is a rampant problem; programmers need to be part of the solution instead of part of the problem.

The Kindle edition of this 275-page book is only US $9.99, which makes it very affordable to give each developer on your team a copy. If you've already purchased the paperback edition, you can get the Kindle edition at a lower price through Amazon's MatchBook program.

Friday, February 26, 2016

My New Book: The Programmer's Guide to Quality Assurance

I'm pleased to announce the availability of my latest book, The Programmer's Guide to Quality Assurance. This is something I've been working on for a long time, and I'm happy to finally see it published.

This is a book on software quality that targets programmers, not quality assurance professionals. Why did I write it? Simply put, the state of software quality today is, well, pretty awful. Your average software project has far too many bugs—and far too many developers willing to accept that as normal. After three-and-a-half decades of developing software and managing teams, I've grown weary of projects where everyone works really hard but no one is satisfied with the results. It doesn't have to be that way: programmers can and should take ownership of the quality process instead of merely reacting to it. My book is about programmers becoming part of the solution instead of part of the problem.

Part I is about taking ownership of the quality process. As a developer, you are the key ingredient in software quality. While others on your team can influence quality, what you do matters most since you actually produce the software.

Chapter 1: Your Role in Software Quality
Chapter 2: Building in Quality

Part II is about testing your own work, and testing it well. Failure by developers to sufficiently test their own work is the reason projects have high bug counts: the software entering formal test is frequently incomplete and unfinished.

Chapter 3: Testing Your Own Work
Chapter 4: Functional Testing
Chapter 5: Hostile Testing
Chapter 6: Automated Testing
Chapter 7: Analyzing and Debugging

Part III is about learning from your bugs. Those who fail to learn from their bugs are doomed to repeat them. Only by making changes can you escape from a chronic bug problem.

Chapter 8: Fixing Bugs Completely
Chapter 9: Bug Causes and Remedies

The support site for the book is

Saturday, April 25, 2015

Bringing Back the XBox

I was recently happy to make the purchase of a used Xbox. No, not an Xbox One or even an Xbox 360. I'm talking about an original, black Xbox.

Original Xbox

If it seems odd to go back two generations, allow me to explain.

The Way It Was: XBox in the early 2000s

My history with the XBox starts when I lived up in Washington and worked for Microsoft. I won a contest testing employees' knowledge of EAI, and the prize was an XBox. I brought it home, along with several XBox games purchased at the Microsoft Employee Store. At the time, my girls were 6 and 4 and my son was an infant.

The games we found most compelling on the original XBox were Midtown Madness 3 and Indiana Jones and the Emperor's Tomb.

Our Favorite XBox Games

Midtown Madness became an instant family favorite. It has a lot more humor than most driving video games, and lets you drive around (or smash up) Paris or Washington DC in great detail, by yourself, with a second player, or with robot players. You can race, perform challenges, or just cruise around. It's a hoot.

Midtown Madness

Indiana Jones and the Emperor's Tomb is also great fun. Who doesn't want to be Indiana Jones? You go through a series of levels in the jungles of Ceylon, then in a castle in Prague, later to Istanbul, and finally to various parts of China. You fight, whip, explore, make discoveries, battle monsters, and have to solve puzzles. It's epic and captures the experience of being Indiana Jones very well. It took me 4 months of weekends to get through all of it, and I loved every minute of it.

Indiana Jones and the Emperor's Tomb

Aftermath: The Later Generations and No Backward Compatibility

As much as we loved our XBox, it eventually died. The logical thing to do was get an XBox 360, which is what we did. The 360 had some nice improvements, such as wireless controllers... but also one big, glaring flaw: it wouldn't run games for the original XBox! No Midtown Madness, no Indiana Jones and the Emperor's Tomb.

I was stunned. In the computer hardware industry, it's the norm to retain compatibility with earlier platforms so software applications will continue to work. Not doing so disrespects the customer's investment and doesn't give customers any incentive for brand loyalty. Microsoft certainly understands this principle well in general, but not at all in the XBox division.

There was some outcry about this, and Microsoft did institute a compatibility program where some games were updated to work on the XBox 360. But the games we loved were not included in this effort.

And so we bought some new games that worked on the XBox 360, but none that we liked as much as the original XBox games. The makers of Midtown Madness 3 did not come out with an XBox 360 version. The makers of Indiana Jones and the Emperor's Tomb had plans to come out with another Indiana Jones game title for the newer videogame platforms, but ended up scrapping those plans in favor of a Star Wars themed game.

Highly, highly disappointing. As years went by, my family continually reminded me of how they missed those original XBox games.

More recently, Microsoft announced their third generation gaming platform, XBox One. I paid much attention: would they change their tune about maintaining compatibility? No such luck: XBox 360 games do not run on the Xbox One, Microsoft had learned nothing. I decided then and there I wouldn't be getting an XBox One or any future Xbox platforms. It's bad enough to have been burned once.

Getting a Used Xbox: The Magic is Back

Recently, I had the opportunity to pick up an original first-generation Xbox -- and we love it. We're happily ripping up Paris again in Midtown Madness 3. I've been able to introduce my 11-year old son to Indiana Jones and we are now going through it together level by level.


Follow-up - 6/17/15:

It seems there's been feedback from enough people who feel like I do that Microsoft has decided to change its stance on backward compatibility. They have announced XBox 360 compatibility for the XBox One. This will only be for a select subset of titles, however, so whether your favorite 360 game makes the cut or not remains to be seen. There's nothing here for compatibility with original Xbox games.

Saturday, March 7, 2015

The Moto X Gen 2 Phone

I just upgraded to a new phone, the second-generation Moto X from Motorola.

Back in November 2013 I blogged about my experience with Motorola's first-generation Moto X phone. I've used that phone for the last 15 months, and like it a great deal (with one notable exception: the grass cracked just a month after I got the phone which has been a bummer. Then again it was probably my own fault for not being more careful with it.) I've really come to value many things about this phone. I especially like its size and hand feel, and its innovative active notifications feature, which updates just a few pixels of your turned-off screen to give you notifications in a super battery-efficient way.

Active Notifications

Recently, I decided to upgrade to the new second-generation Moto X, which I received one week ago. When I got the previous first-generation phone, Google had purchased Motorola which was one of the attractive features since I'm not a fan of carrier bloatware on Android phones. Motorola was since sold off to Lenovo, but I ultimately decided to stay with the Moto X family since I liked the first generation so much. Fortunately, the customer ordering experience, phone quality, and very-latest-Android aspects of the Moto X have not been impacted.

The ability to custom-design your phone remains a compelling feature of the Moto X. After ordering my new phone at my local AT&T store, I received a voucher card. At home, I connected to  the Moto Maker site at, entered my upgrade code, and proceeded to design my phone. There are some nice new options available, including several wood and leather back choices (wood or leather costs an additional $25, and you need to be careful where you put your phone to avoid stains). I ultimately chose a white front, bronze accents, and a cognac leather back with my name inscribed.

Lots of choices to customize your phone

Moto Maker online designer

Less than two weeks later, my phone arrived. After following a short online procedure with AT&T, my new phone was linked to my existing number. I did not have to relocate any SIM cards.

Moving to a new device always raises the question of how much work you'll need to do to get your apps and data and configuration replicated. I'm happy to report that not only is that well-addressed by the phone, but three different parties are all looking out for you. Google, Motorola and AT&T all provide software/services to assist in phone upgrade data transfer. My first inclination was to use the Motorola Migrate application, which moves apps/data/configuration from old phone to new over your WiFi network--and that's largely what I did. Since contacts are managed by my carrier, I also utilized AT&T's facility to move my contacts over. While I was doing all this, Android on the new phone automatically prompted me to restore backed up apps and data from my old phone. Motorola Migrate is easy to use: the new phone scans a QR code displayed on the old phone and they communicate over your WiFi network. All in all, it only took about 15 minutes to move everything over and it was painless - everything was done for me automatically.

Motorola Migrate

Hardware-wise, the phone has a powerful processor and a good camera, two areas for which the original Moto X was sometimes criticized. The processor is a 2.5GHz quad-core Snapdragon 801. The rear main camera is 13 megapixels (previously 10) with a circular dual-LED ring flash (previously single-LED). The front camera is 2 megapixels. There are a lot of nice features in the camera, and they have been thoughtfully engineered.  I don't know about  you, but it usually takes me some time to get acquainted with phone camera features and I often end up not using many of them because they can be cumbersome to get to. That's not the case here: camera features and settings are discoverable and easy to get to. Touch the camera to take a photo, or hold your finger down to capture photos in burst mode so you can select the best shot(s) afterward. You can take Ultra HD video and slow-motion video. You can even quickly summon the camera app with a double shake of the wrist.

Moto X Camera Settings

One concern I had was with the size of the phone. As is common right now, phones are getting larger and the Moto X is no exception: it's gone from 129.3 x 65.3 x 10.4 mm (gen 1) to 140.8 a 72.4 x 9.97 mm (gen 2), and the screen from 4.7 to 5.2 inches with a beautiful AMOLED display. Admittedly, a larger display would be easier on the eyes, but would the larger phone be more difficult to handle? The original Moto X was just perfect for your hand and allowed many things to be done with just one hand. As it turns out, I've had no problem with the larger size phone. It still goes in and out of my pocket easily and has not been cumbersome to use.

My favorite feature is still there, Active Notifications, along with a great new feature that complements it well called Attentive Display. The phone has low power IR sensors on the front and can recognize when you wave your hand or a face is looking at it. This means you can wake up the time and notifications display by simply waving your hand. When looking at the phone (for example reading messages or an e-book), the screen won't time out and go dark on you. It may sound a little spooky that the phone knows when it is being looked at, but this feature is really well-implemented.

Last but not least, there's Android Lollipop. Android prompted me to upgrade to the "L" release (Lollipop) the first day I had the phone, which I proceeded to install. I like the new Android release and its "material design" UI very much. Big UI changes are not always pleasant to adapt to, but this one was.

It's only been a week, but so far I'm loving this phone. It's really a pleasure to use, thanks to the features and little refining touches Motorola has added and the careful way they've been engineered for usability.

Friday, August 15, 2014

Azure Storage Explorer Preview 3 Now Available: Queue Support, Blob and Table Enhancements

I'm pleased to announce that the next installment of Azure Storage Explorer 6, Preview 3, is now available. Preview 3 adds Queue support along with expanded blob and table features. We've already posted a detailed walk-through of Preview 1 and Preview 2; now let's take a tour of what's new in Preview 3.

Queue Support

Preview 1 provided Blob support and Preview 2 added Table support. Now in Preview 3 you also have Queue support. Similar to how blob and table support work, you have a list of queues in your outline at left. When you select a queue, the top messages in the queue are listed in the main pane at right.

Message List

Actions you can take on queues include creating a queue, deleting the selected queue, or refreshing the queue list. Actions you can take on queue messages include refreshing the message list, creating a new message, creating a copy of an existing message, or popping the top message off of the queue (deleting it). When creating or copying a message, you enter or edit the message text that is to be inserted into the queue.

Creating a New Message

Enhanced Blob Support

We've made several enhancements to blob support. The earlier previews did not include the $logs container, which will exist if you have turned on logging and monitoring for your blob storage. This container is now listed if present.

Earlier previews did not show all blobs in the selected container, such as blobs with virtual directory paths in their name. The blob list is now exhaustive, showing you everything in the selected container.

Content Types

You can now configure a table of content types, which is used to set the Content Type property for a blob that you upload. This matters if blobs are read from public storage by a web browser, as the ContentType header helps the browser figure out how to handle the resource. The Content Type table is a simple table of file extensions and MIME types: if the file you upload ends with an extension listed in your table, its content type is set to the corresponding MIME type. You can view or edit the Content Types list from the top right settings menu ("Edit Content Types").

Editing Content Types for Uploaded Blobs

Enhanced Table Support

Table enhancements include a reordering of columns to put PartitionKey first, and a new upload capability. 

The table support that arrived in Preview 2 provided a means to download entities to CSV, JSON, or XML format - but had no matching upload capability. In Preview 3, you can also upload to tables.

When viewing a table, click the Upload button. On the dialog that appears, select the file containing data to upload and review the format selections and options.

CSV Upload

A CSV upload reads a comma-delimited text file for input. This is a popular simple export format that Excel can be used to edit. Azure Storage Explorer uses the CsvHelper library to parse your data file and insert entities.

When inserting entities, a partition key and row key are required to uniquely identify each entity. In the event your CSV file uses different column names for PartitionKey and RowKey, you can specify on the upload dialog the column names to use.

CSV Upload

Here is an example of valid CSV data that can be uploaded to a table:

Batman,DC Comics,8/6/2014 4:07:06 AM +00:00,5/1/1939 12:00:00 AM,Bruce Wayne
Green Lantern,DC Comics,8/6/2014 4:10:52 AM +00:00,7/1/1940 12:00:00 AM,Hal Jordan
Superman,DC Comics,8/6/2014 4:06:52 AM +00:00,4/18/1938 12:00:00 AM,Clark Kent
The Flash,DC Comics,8/6/2014 4:06:58 AM +00:00,1/1/1940 12:00:00 AM,Bart Allen
Iron Man,Marvel Comics,8/6/2014 4:07:58 AM +00:00,3/1/1963 12:00:00 AM,Tony Stark
The Human Torch,Marvel Comics,8/6/2014 4:13:02 AM +00:00,11/1/1961 12:00:00 AM,Johnny Storm
The Thing,Marvel Comics,8/6/2014 4:12:07 AM +00:00,11/1/1961 12:00:00 AM,Ben Grimm
Thor,Marvel Comics,8/6/2014 4:08:58 AM +00:00,8/1/1962 12:00:00 AM,Donald Blake

JSON Upload

A JSON upload reads a JavaScript Object Notation (JSON) format text file for input. JSON is a very popular web transfer format in wide use today. Azure Storage Explorer uses the .NET JavaScriptSerializer to parse your data file and insert entities.

As with CSV uploads, you can specify the field name to be used for RowKey and PartitionKey. In addition, you specify the enclosing object name for the JSON.

JSON Upload

Here is an example of valid JSON data that can be uploaded to a table:

    "Entities": [
            "RowKey": "Batman",
            "PartitionKey": "DC Comics",
            "Timestamp": "8/6/2014 4:07:06 AM +00:00",
            "Debut": "5/1/1939 12:00:00 AM",
            "SecretIdentity": "Bruce Wayne"
            "RowKey": "Green Lantern",
            "PartitionKey": "DC Comics",
            "Timestamp": "8/6/2014 4:10:52 AM +00:00",
            "Debut": "7/1/1940 12:00:00 AM",
            "SecretIdentity": "Hal Jordan"
            "RowKey": "Superman",
            "PartitionKey": "DC Comics",
            "Timestamp": "8/6/2014 4:06:52 AM +00:00",
            "Debut": "4/18/1938 12:00:00 AM",
            "SecretIdentity": "Clark Kent"

XML Upload

An XML upload reads an XML file as input, another popular exchange format. Azure Storage Explorer uses the .NET XmlDocument class to parse your data file and insert entities.

As with CSV uploads, you can specify the field name to be used for RowKey and PartitionKey. In addition, you specify the XPath path to locate entity elements in the XML.

XML Upload

Here is an example of valid XML data that can be uploaded to a table:

<?xml version="1.0" ?>
<Entities xmlns:xsi="">
    <PartitionKey>DC Comics</PartitionKey>
    <Timestamp>8/6/2014 4:07:06 AM +00:00</Timestamp>
    <Debut>5/1/1939 12:00:00 AM</Debut>
    <SecretIdentity>Bruce Wayne</SecretIdentity>
    <RowKey>Green Lantern</RowKey>
    <PartitionKey>DC Comics</PartitionKey>
    <Timestamp>8/6/2014 4:10:52 AM +00:00</Timestamp>
    <Debut>7/1/1940 12:00:00 AM</Debut>
    <SecretIdentity>Hal Jordan</SecretIdentity>
    <PartitionKey>DC Comics</PartitionKey>
    <Timestamp>8/6/2014 4:06:52 AM +00:00</Timestamp>
    <Debut>4/18/1938 12:00:00 AM</Debut>
    <SecretIdentity>Clark Kent</SecretIdentity>

The default option for error handling is to stop on the first error. The alternative option is to continue past errors and continue uploading.


Azure Storage Explorer 6 continues to move rapidly toward completion. There are now sufficient features in place that we've made it the default version for download on CodePlex. I hope you find it useful and productive to use.

Tuesday, August 5, 2014

Azure Storage Explorer 6 Preview 2 Now Available, with Table Support

I'm pleased to announce that the next installment of Azure Storage Explorer, Preview 2, is now available. The big feature in Preview 2 is table support, allowing you to create, delete, and work with with tables and entity records. In addition, we've made some UI improvements and extended our blob support. We've already posted a detailed walk-through of Preview 1, now let's take a tour of what's new in Preview 2.

User Interface Changes

Blob List and Table List Styling
The main pane list view (showing blobs or table entities) now shows alternating rows in contrasting shades of grey. Selections are highlighted in the color associated with the artifact (yellow for blobs, blue for table entities).

Updated Styling of Blob List

Blob List Filters
One thing we've been thinking about is how to limit the display when you have a large number of blobs or table entities in a container; if you have thousands of items, you likely don't want them all listed every time you click on a container or table. In version 5 we implemented results paging, but in version 6 we wanted to do something more versatile. You can limit what is displayed with the new Filter toolbar button. For blobs, this lets  you specify filters such as max records to display, blob type, search text to match, or min and max sizes. You have a similar facility for table entities.

Filter Dialog for Blob List

When filters are active, the Filter toolbar button is highlighted so you're aware you're not seeing all results.

Filtered Blob List

Error Messages
Instead of pop-up dialogs for error reporting, error messages now smoothly stack on the bottom of the main pane, just as background tasks do.

Stacking Error Messages

Table Storage Support
Preview 2 introduces table storage support. When you navigate to a table in the left pane outline, you'll now get a list of entity records and toolbars for acting on the table and its entities.You can click on a column to sort by that property; click a second time to change ascending/descending direction.

Table Entity List

Table Entity Queries
Instead of retrieving all entities from the table, you can specify a query. The Query toolbar button allows to select up to three sets of columns, conditions (equals, not equal to, contains, starts with, ends with), and values. LINQ is then used to retrieve matching entities and the list is refreshed.

Table Query Dialog

Table Entity Filters
You can further restrict your entity list by specifying filters. These include a maximum entity count to display and search text. You can also control which columns should be displayed or hidden in the result list. You can click the check box to save these filter settings as a default.

Table Filter Dialog

Filtered Entity List

Creating, Copying, Editing, and Deleting Entities

You can use the toolbar buttons to create, modify, and remove individual entities.

Creating a New Entity
To enter a new entity, click the New Entity toolbar button and complete the record definition in the dialog that appears. You can add one or more records from here. You can enter binary (01 02 03...), boolean values (True/1/Yes/On, False/0/No/Off), DateTime values, numerics (double, Int32, Int64), GUIDs, or Strings. To not store a field, either set the type to Null or remove the field from the list.

Insert Entity Record Dialog

Updating an Entity
To update an entity, either double-click it or select it and click the View toolbar button. You can modify and update the record.

Copying an Entity
To copy an entity, select it and click the Copy toolbar button. Update the record (minimally changing RowKey/PartitionKey).

Deleting Entities
To delete entities, select one or more entities and click the Delete toolbar button. Confirm the dialog to perform the delete.

Delete Entities Confirmation Dialog

Table Entity Downloads
When viewing a table, you can download selected entities, or all entities, using the Download toolbar button. On the download dialog, select a file format and an output file. You can download to CSV, JSON, or XML format.

Entity Download Dialog

CSV Download
The comma-separated values (CSV) format can be opened in Microsoft Excel.

Result of CSV Download 

JSON Download
The JSON download is one of the more popular web data exchange formats today.

Result of JSON Download

XML Download
The XML download provides another commonly-used data exchange format.

Result of XML Download

With Preview 2, we've added a significant amount of table functionality to the blob functionality from Preview 1. We hope you find Azure Storage Explorer 6 useful and productive as we continue to move it forward. Do keep in mind the software is still very new and only in preview - please exercise appropriate caution as you use it.

Next: Azure Storage Explorer Preview 3