Friday, June 12, 2020

My Stack Overflow Impact - 147k People Reached

If you are a software developer, you know how valuable Stack Overflow can be when you are trying to figure out an odd technical issue or a vague error message. I really appreciated that someone had asked the similar questions, even if the question was not exactly what my issue was. Sometimes, there was just this one answer. Oh yeah, let's just call them The-Saver-of-The-Day. It will lead you to the right direction for your solution. That's the appreciation I had for Stack Overflow over the years of my career.

I am really impressed by the answers written by many users (not mention Jon Skeet or Jeff Atwood) and appreciate the depth and the breadth and the insights of the answers. Nonetheless, I believe each one of us should contribute to Stack Overflow and give back to the society by just asking the questions and answering the questions if possible.

I am proud that I am one of the members who did both in Stack Overflow and I am pleased to find out today that my impact of people reached - 147k people. If you haven't checked your profile, you should do it. It will make you feel better and in turn make global software development community better.




Friday, March 16, 2018

Upgrade Angular 4 to Angular 5

Here are the steps to upgrade Angular 4 to Angular 5. It only took me a few hours to upgrade.

1. Upgrade TypeScript to ^2.4.2

npm install typescript@2.4 --save-dev

2. Upgrade RXJS to ^5.5.0

npm install rxjs@^5.5.0 --save

3. Upgrade Angular Material to ^5.2.4

npm install @angular/cdk@^5.2.4 @angular/material@^5.2.4 --save                                                  

4. Upgrade Angular to ^5.2.9

npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest --save

5. Update Material Modules

$ npm install -g angular-material-prefix-updater
$ mat-switcher -p tsconfig.json

6. Upgrade Angular CLI (Optional)

Also, most likely you want to also update your local project version, because inside your project directory it will be selected with higher priority than the global one:

npm uninstall --save-dev angular-cli
npm install --save-dev @angular/cli@latest
npm install


Thursday, March 15, 2018

How to Open Excel ( *.xls or *.xlsx) in Angular 4?

Problem

Angular is a platform to build SPA applications with web. If you want Angular application to access any files (like *.xls or *.xlsx) in a network share directly, the access will be blocked for security reasons. 

Solution 

Create A Web API Controller to return the file as StreamContent; Get the Blob using Angular http reponse.blob(); Create an object URL using createObjectURL(blob); Save the blob object to a file.


Details

1. Server - Controller Return Blob

var result = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new FileStream(path, FileMode.Open, FileAccess.Read);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");

Here are more details: 

2. Angular Http - Get Blob

Include the RequestOptionsArgs when you send request.



Specify the field responseType : ResponseContentType inside RequestOptionsArgs to  ResponseContentType.Blob.

Here are more details: 

3  HTML - Save Blob to File


const a = document.createElement('a');
a.download = filename;
a.href = window.URL.createObjectURL(blob);
a.click();
window.URL.revokeObjectURL(a.href);

Here are more details: 

Friday, January 19, 2018

ReSharper Tips for .NET Developer


When I first started to use ReSharper with Visual Studio 2010, I was so impressed by its creativities and practicalities. My productivities have been boosted. My code quality has been improved. My code has become more consistent and readable. I have become a big fan of ReSharper and JetBrains. Since then ReSharper has become an indispensable tool under my toolbelt. Over the years, JetBrains added more products in its offering for .NET developers. In 2015/2016, ReSharper 10 has been bundled up with other popular .NET tools dotCover, dotTrace, dotMemory, and dotPeek and rebranded as ReSharper Ultimate. The license model changed from product to subscription.

A speaker at Houston TechFest once said that ReSharper would make developers’ mind dull because it is doing so much and the developers are losing his/her programming skills. The speaker’s argument came from that some developers can’t even write code without IDE (such as on whiteboard). I didn’t really agree with him but I can totally understand where the speaker’s concern came from. I think ReSharper is doing an amazing job to help developer write better code, easily examine, and refactor the existing code bases so that they will spend less time and produce better code.

ReSharper Tips

         Navigation:
                Ctrl + T. Then type. Or you can type also just the acronym in ALL capital letters, or  type / for more specific filters.
                It’s really easy to navigate to base symbol and derived symbol, ALT-Home or Alt-End.

-         Code Quality:
                It can detect unreachable code, unused variable, and much more.
                name conventions issues
                shorter code / more readable code, such as null propagator, string interpolation, expression bodied members
-      
           Refactoring.
                Extract to interface.
                Move to another file.
                Push members down.
                Make method non-static.

-          Unit testing is so much easier with ReSharper test sessions. You can customize what tests to be included in different test sessions.

-          ReSharper Build is cool too.  It has a visual interface to indicate which projects are going in parallel. Also, it is out of the process so your visual studio process should be slowed down.


-          Have you ever misspelled a word and got embarrassed in code review? There is one of the extension called ReSpeller. Resharper is an extension to Visual Studio. ReSpeller is an extension of Resharper. Check it out.


Saturday, July 22, 2017

Difference among .NET Mutable, Readonly, Immutable, and Freezable Collections

Mutable 
Mutable is the most common collection type in the .NET world. These are collections such as List; that allow reading, as well as adding, removing and changing items.

Read-Only
Read-Only These are collections that can't be modified from the outside. However, this notion of collections doesn't guarantee that its contents will never change. For example, a dictionary's keys and values collections can't be updated directly, but adding to the dictionary indirectly updates the keys and values collections. You can create your own read only collection by inheriting from ReadOnlyCollection.

Immutable
Immutable These are collections that, once created, are guaranteed to never be changed and thread-safe. If a complicated data structure is fully immutable, it can always be safely passed to a background worker. You don't need to worry about someone modifying it at the same time. This collection type is not provided by the Microsoft .NET Framework base class library (BCL) today. You can download from NuGet by searching for Microsoft.Immutable.Collections.

Freezable
Freezable These collections behave like mutable collections until they're frozen. Then they behave like immutable collections. Although the BCL doesn't define these collections, you can find them in Windows Presentation Foundation.

Wednesday, April 05, 2017

What’s New and Improved in Resharper 2017.1

If JetBrains is a sports team, I’d be a fan of it, just like I am a fan of Houston Rockets. JetBrains has so many good products, Resharper, dotMemory, dotCover, and dotTrace. Don’t forget TeamCity, it is really an awesome build tool.

I agreed to a saying at Houston TechFest 2016, from a great speaker Curtis Schlak, that Visual Studio and Resharper make the developer’s mind dull because the tools like Resharper do a lot and developers start to lose the skills to do it manually. Sadly that’s the side effect for using Resharper. Just like I won't be able to remember my best friend's phone number any more after my iPhone can remember the numbers for me. I guess there are always pros and cons. I  think I need to be aware of the side effects to use Reshaper. But I don’t think I’ll let Resharper go out of my developer’s life.



Way to go JetBrains Resharper. Here are the good stuff  in 2017.1. 
  • C# 7 support with new inspections and quick-fixes
  • Support for the Lightweight solution load mod
  • .NET Core unit testing support in Visual Studio 2017
  • Many code formatting improvements including support for EditorConfig
  • Filtering options in Find Results , Go to Everything , and Go to Text
  • Full support for TypeScript 2.1 and initial support for TypeScript 2.2
  • Initial support for Angular 2

Thursday, March 09, 2017

First impression on Visual Studio 2017

Visual studio 2/017 gets it right this time.
Even the icon looks cool.


VS 2017 Installation Screen Shot


Improved startup and improved project load. Lightweight solution loading, and many more enhancements come together to make Visual Studio 2017 start up to 3 times faster than Visual Studio 2015. Solution load times are 2-4 times shorter, and build performance is faster too.

Snappier XAML Editor. It  is snappier, a lot. It’s so much faster than 2015 – lighting faster. This is because Visual Studio 2017 leverages the XAML Language Service’s knowledge of the XAML file to determine the names and types of the fields to populate IntelliSense, and then update the g.i.* file using Roslyn on a background thread.

dotted lines for XAML
Dot Lines are awesome in the C# editor and XAML editor.



















Be A Developer That Uses AI

Developers will not be replaced by AI, they'll be replaced by developers that use AI. Generative AI tools are revolutionizing the way de...