Saturday, May 28, 2016

vicariously experiencing Visual Studio Live!

It's what you want and waited for. Here is the sequel to vicariously experiencing SXSW and the follow up to this teaser and this teaser too: a blog posting on things told to me secondhand about Visual Studio Live as it happened this year in Austin! Yay! There was an effective agile requirements talk on the third day. Should stakeholders do point estimates first as an exercise? It's important to keep in mind the distinction between requirements (what they need) vs. specifications (how to do something). Billy Hollis spoke on UX at a different session. He recommend the book "Universal Principles of Design" by William Lidwell and Kritina Holden. He suggested that the start bar on older Windows implementations got design right and hit on all eight of the points of good UI including 1 the ability to mark favorites, 2 retention/responsiveness around the recently used, and 6 other points my coworkers didn't articulate. Windows 8 in contrast was seen as a design failure. Something to consider is who are the people already using your product and what are the top three reasons they are using it for. Windows 8 targeted Apple users but not the existing Windows users, alienating them. The absence of a file hierarchy (think start menu) was infuriating. Billy's talk went into XAML and how to break down XAML into smaller components to use. He suggested adding components piece by piece instead of trying to plan everything at once. The concept of property injection dependency injection in unit testing was discussed. It was suggested that "new is glue" and that it might be best to lazy load dependencies that you need instead of newing them up. To clarify perhaps the lazy loading a bit it was also suggested that it gets painful to constantly change constructor signatures as dependencies grow and thus perhaps the service locator slant of inversion of control could be the solution. You'll be able to pick your compiler for TypeScript for transpilation down far enough to accommodate that really old version of IE... or not. Visual Studio 16 is coming! Visual Studio 16 may be run on Linux (such as Ubuntu) and OSX assuming you are just using .NET Core. A base .NET Core application is just a console app. You explicitly add in plugins to make it do more. You explicitly say "I want IIS" and "I want MVC" and "I want the old XML Web.config" and you add these one by one as plugins. Another coworker in the room suggested you HAVE to use Entity Framework with with .NET Core and not the old ADO (Active Data Objects) approach and what is more you end up reaching out to the Microsoft Framework by way of a web service to just fall back to the old stuff with regards to the data integration. Maybe the thing to do is to have an old school app exposing ASP.NET Web API endpoints and just talk into that from your Core app for your data needs. I dunno. TypeLITE gives you Intellisense for TypeScript. Google has realized that AngularJS isn't SEO friendly. Ha! Hilarious! They are trying to do something about that. In the meantime a dev at Visual Studio Live suggested that he still breaks apps up into views and then just runs an Angular app inside of each view to get around the problem for now. This begs the question: "Why even use Angular?" ...and I suppose the answer would be that while the use of Angular's views and their breakups are now emasculated there would still be the two-way databinding feature. (I suppose.) Scott Hanselman spoke and suggested that JavaScript is the new assembly language of the internet. In another talk it was recommended not to use the dynamic keyword. The discovery overhead for dynamic is apparently slow much as reflection is slow. The Html Agility Pack was recommended. You can turn on content security policy at browsers and only allow JavaScript from whitelisted sources. This will globally disallow inline JavaScript which "smells" injected another coworker theorized. @Html.AntiForgeryToken() may be used in an MVC app to prevent multiple posts and, yes, forgery. There was content to do with MSSQL 2016. The DIE (drop if exists) approach goes like so: DROP TABLE IF EXISTS dbo.Foo ...and simplifies iffy logic around a sanity check for if it is copacetic to drop. There is now the concept of column masking making, for example, columns of tokenized credit card numbers just appear as, I don't know, asterisks or whatever, instead of actual data when doing queries from code or visually in SSMS. The whether or not as to if you'll get masked data depends on the permissions you have in querying as a user. There is now an unmask permission. If you have the unmask permission you'll just get unmasked goodies. You don't have to explicitly unmask things in a select with SQL syntax or anything like that. Some column types, like blobs of XML, cannot be masked. Encryption keys have been a part of the database meaning that if your database is compromised so too is your data, but now encryption keys may be stored in external flat files. You will pass in the path to said file in a connection string now. You will now be able to select a date from two years ago and see what the data in a table looked like back then. There is some sort of data caching along such lines. There are now JSON data types. A trick I don't really understand as I type this up has to do with file streams and selecting files from a database wherein they are each a blob of data at the database. Supposedly, if you first do a select that will get nothing and follow it up with a second select that gets the blob it will allow your app itself to manage the memory for the download. That doesn't really make much sense now that I type it up.

No comments:

Post a Comment