Wednesday, December 14, 2016

Default NuGet Packages in Visual Studio ASP.NET Templates

From packages.config:

<?xml version="1.0" encoding="utf-8"?>
<!-- The Runtime assembiles for ASP.NET MVC -->
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net461" />
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net461" />
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net461" />
<package id="Microsoft.Web.Infrastructure" version="" targetFramework="net461" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net461" />
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net461" developmentDependency="true" />

<!-- Provide minifcation, bundling and optimization for CSS, Javascript and JSON -->
<package id="WebGrease" version="1.5.2" targetFramework="net461" />
<package id="Antlr" version="" targetFramework="net461" />
<package id="Newtonsoft.Json" version="6.0.4" targetFramework="net461" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net461" />

<!-- Generates unobtrusive client side validation for MVC views.  -->
<package id="jQuery.Validation" version="1.11.1" targetFramework="net461" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net461" />

<!-- Popular and essential web frameworks -->
<package id="jQuery" version="1.10.2" targetFramework="net461" />
  <package id="bootstrap" version="3.0.0" targetFramework="net461" />
<package id="Respond" version="1.2.0" targetFramework="net461" />
<package id="Modernizr" version="2.6.2" targetFramework="net461" />

<!-- Microsoft ORM framework -->
  <package id="EntityFramework" version="6.1.3" targetFramework="net461" />

<!-- OWIN -->
<package id="Owin" version="1.0" targetFramework="net461" />
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net461" />
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net461" />

<!-- Authentication  -->
<package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Owin.Security.Cookies" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Owin.Security.Facebook" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Owin.Security.Google" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Owin.Security.MicrosoftAccount" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Owin.Security.OAuth" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Owin.Security.Twitter" version="3.0.1" targetFramework="net461" />

<!-- Identity -->
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net461" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net461" />
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net461" />


Tuesday, December 6, 2016

Nielsen Predicted Trump Would Lose... PDFs

In 2003, famed UX Guru Jakob Nielsen, warned against use of PDF format, which here in 2016 is as popular as ever:

PDF: Unfit for Human Consumption

by JAKOB NIELSEN on July 14, 2003
Summary: Users get lost inside PDF files, which are typically big, linear text blobs that are optimized for print and unpleasant to read and navigate online. PDF is good for printing, but that's it. Don't use it for online presentation.

PDF is great for one thing and one thing only: printing documentsPaper is superior to computer screens in many ways, and users often prefer to print documents that are too long to easily read online.
For online reading, however, PDF is the monster from the Black Lagoon. It puts its clammy hands all over people with a cruel grip that doesn't let go.

PDF Usability Crimes

The usability problems that PDF files cause on websites or intranets are legion:
  • Linear exposition. PDF files are typically converted from documents that were intended for print, so the authors wouldn't have followed the guidelines for Web writing. The result? A long text that takes up many screens and is unpleasant and boring to read.
  • Jarring user experience. PDF lives in its own environment with different commands and menus. Even simple things like printing or saving documents are difficult because standard browser commands don't work.
  • Crashes and software problems. While not as bad as in the past, you're still more likely to crash users' browsers or computers if you serve them a PDF file rather than an HTML page.
  • Breaks flow. You have to wait for the special reader to start before you can see the content. Also, PDF files often take longer time to download because they tend to be stuffed with more fluff than plain Web pages.
  • Orphaned location. Because the PDF file is not a Web page, it doesn't show your standard navigation bars. Typically, users can't even find a simple way to return to your site's homepage.
  • Content blob. Most PDF files are immense content chunks with no internal navigation. They also lack a decent search, aside from the extremely primitive ability to jump to a text string's next literal match. If the user's question is answered on page 75, there's close to zero probability that he or she will locate it.
  • Text fits the printed page, not a computer screen. PDF layouts are often optimized for a sheet of paper, which rarely matches the size of the user's browser window. Bye-bye smooth scrolling. Hello tiny fonts.

Users Hate PDF

In several recent usability studies, users complained woefully whenever they encountered PDF files.
Following are quotes from investors testing the investor relations area on corporate websites:
"It's a pain that I have to download each PDF. Pain in the ass… I find it to be annoying. It's slow to load. It's hard to search within it. I find HTML easier to deal with… This is all PDF instead of a chart. My dream site is to come to a site and get a bar chart for the sales within the last ten years."
"I hate Adobe Acrobat. If I bring up PDF, I can't take a section and copy it and move it to Word. There could be stuff like graphics I don't want. I prefer documents in HTML format so that it's editable."
The following user quotes are from journalists testing the PR area on corporate websites:
"They [PDF files] don't behave like Web pages. It's not the speed. It is like having a solid thing rather than a fluid thing."
"What we've got is a page of a PDF document which is great when printed out, but on the screen it is hard to read. The print is too small…"
"I am a little frustrated with Acrobat… They made every page a file. So what happens here is when you scroll, it jumps, which is really not helpful."
This quote is from an employee who was testing an intranet:
"It would have helped if the first page was an index and you could scroll to it. That must be what this side part means. But who am I to say?"
As the last quote shows, even when a PDF file has its own navigation aides, they don't typically help because they're nonstandard and based on a paper metaphor rather than hypertext navigation.
We've had similar reactions from users in many other studies, including tests of B2B websites where users complained when sites presented product specs or customer success stories in PDF instead of Web pages. Here's a quote from a customer who shunned those parts of the site that were in PDF:
"It looks like I'm going to have to go to PDF, which I'm dreading."

Next Column: Action Items

Given PDF's poor usability for online reading, what are Web designers to do? My next Alertbox will discuss PDF presentation strategies that minimize user suffering.

Earlier Studies

See my Alertbox from June 2001, Avoid PDF for On-Screen Reading, for an earlier analysis of PDF based on the studies I did a few years ago.
The difference between then and now? Not much. Fewer crashes (good), but more user hostility toward PDF because people now have more experience with its usability problems.

Newer Studies

Update 2010: Our new studies keep finding the same problems with PDF in online interfaces.
Find more information on dealing with PDF files without imposing too much of a usability burden on your customers in the full-day course Writing for the Web
Additionally, an in-depth eyetracking report on how users read on the web is available for download.

Failed Microsoft Brands #435: COM+

It was 1998...

What is COM?

Microsoft COM (Component Object Model) technology in the Microsoft Windows-family of Operating Systems enables software components to communicate. COM is used by developers to create re-usable software components, link components together to build applications, and take advantage of Windows services. COM objects can be created with a variety of programming languages. Object-oriented languages, such as C++, provide programming mechanisms that simplify the implementation of COM objects. The family of COM technologies includes COM+, Distributed COM (DCOM) and ActiveX® Controls.
Microsoft provides COM interfaces for many Windows application programming interfaces such as Direct Show, Media Foundation, Packaging API, Windows Animation Manager, Windows Portable Devices, and Microsoft Active Directory (AD).
COM is used in applications such as the Microsoft Office Family of products. For example COM OLE technology allows Word documents to dynamically link to data in Excel spreadsheets and COM Automation allows users to build scripts in their applications to perform repetitive tasks or control one application from another.

What is COM+?
COM+ is the name of the COM-based services and technologies first released in Windows 2000. COM+ brought together the technology of COM components and the application host of Microsoft Transaction Server (MTS). COM+ automatically handles programming tasks such as resource pooling, disconnected applications, event publication and subscription and distributed transactions.
I want to build a COM or COM+ application. How do I get started?
The best resource for COM developers is the Microsoft Developer Network (MSDN). The MSDN Library contains information for developers on the Microsoft platform including a programming guide for COM development and the COM API programming reference. The Windows API is documented in Win32 and COM Development. You will also find information on COM+.
Using COM from .NET and .NET from COM
The .NET Framework provides bi-directional interoperability with COM, which enables COM-based applications to use .NET components and .NET applications to use COM components. For information on how to access .NET components from COM see To learn how to use COM components from .NET see

64-bit : When Intel followed AMD's lead, or Worse is Better

Also see: Betamax versus VHS

We all know how the x86 was such a success.

x86 is 32-bit.  There was a 16-bit in the early 90s, but that was quickly moved along to 32-bit by the time the Web became a thing that made home computers REALLY popular.

So it was almost a fait acompli that we'd soon move on to 64-bit.

But that transition did not go so smoothly.

Intel had traditionally been the company that established the ISA (Instruction Set Architecture) standards which the competitors (well, AMD) then followed.

Intel tried to do that with IA-64, code named Itanium, in the late 90s.  But they made it way too complicated for the engineers that would have to implement it, and not backwards compatible with lots of 32-bit stuff.  Meanwhile, AMD made a lazy modification of the x86 instruction sets, that could use 64-bit.  It was dubbed AMD64.  This was in 1999.  By 2004, Intel was actually using AMD's ISA and putting its Itanium only on a few specialized chips.  The AMD version was used:

all later Celerons, all newer models of Xeon, all newer models of Pentium Dual-Core processors , the Atom, and all versions of the Pentium DPentium Extreme EditionCore 2Core i7Core i5, and Core i3 processors.

AppData Local LocalLow Roaming

Says how the Windows Registry was kind of a bad idea because everyone store their junk there.
Don't use the Registry, use the modern "ini file" reborn:

There is an alternative, though. If Windows applications weren't so busy mindlessly piling all their settings on the registry garbage dump with everyone else, they could elect to follow the new, much saner Windows Vista conventions for storing application-specific data:
Local and LocalLow are for bits of application data that are truly machine-specific. Roaming is for non-machine specific settings that will follow the user. That's where the lion's share of the application settings will be. It's all explained in the Roaming User Data Deployment Guide (Word doc). However, these are still user-specific settings, obviously, as they're under the /Users folder. I can't find any new Windows filesystem convention for system level, non-user-specific settings. I suppose that's still Ye Olde Registry by default.
It is possible to write Windows applications that don't use the registry in any way. These are some of my favorite applications. But they're also the most rare and precious of all applications in the Windows software ecosystem.

Link to Roaming User Data Deployment Guide:

UX at Microsoft almost as bad as full-text search capability

This a set of browser tabs from IE 11.

Guess which ones is the ACTIVE tab.

It is the second from the left.