Saturday, April 8, 2023

Smart Home Concept and Choices

Smart Home is a thing for quite some time. Not just for enthusiasts but for pretty much everyone regardless of whether we realize that or not. Smart Home is not necessarily a standalone industry but its ideology spreads out very quickly and its elements get embedded in many areas of our life without our explicit consent. So it's not a question of "if" or "when" but rather how to get onboard and start riding the "smart home" wave to our benefits.

Monday, March 6, 2023

When Your CyberPower UPS is Out of Warranty You are Out of Luck

According to CyberPower support when your CP UPS is out of warranty your only options are:

  1. Recycle and replace the UPS. It's totally up to you if you want to stick with the CyberPower products of switch away in hope of better luck next time.
  2. It may help in some cases to try and replace a battery that you can only purchase from a third party supplier.

How would you know if purchasing a battery might help revive your UPS? Well, you'll need to be brave and open it up and do some research. If you don't feel like digging in the guts of an electrical device, this options is not for you and you may stop reading and go on with the option # 1 in the above list.

Thursday, April 15, 2021

dotPeek: a Totally Free Alternative for .NET Reflector

As a professional .NET developer you recognize the value of a .NET decompiler. There are many scenarios when the original source code is not available but requires an understanding and using a decompiler is definitely one of the best ways to look at the source code. One of the advantages working with a managed framework like .NET is an ability for a decompiler to convert an assembly into an code of a high level programming language like C# instead of a machine code. And this is exactly an expertise in which the dotPeek shines.

Friday, April 9, 2021

Problems Migrating From SQL Server Management Studio (SSMS) v17 to v18

If you are an active multi-year user of Microsoft SQL Server Management Studio you are probably well-used to a controversial history of this product as an arguably one of the most loved and hated at the same time and one of the most outdated as well. Understandably, with so many different active versions of Microsoft SQL Server the requirements for this product are quite challenging but the users (us) continue to vote for this tool to exist and push Microsoft to keep updating it regardless of many other alternatives available on the market.

Wednesday, March 31, 2021

Reorder Columns in Spark DataFrame with Select() and Scala

Sometimes, when dealing with a Spark data frame it may be necessary to reorder columns in a certain order. For example, to keep data consistent when trying to union two or more data frames with the same schema but different order of columns. Let's explore how that can be done relatively easy using a select() Spark SQL function.

Thursday, March 18, 2021

Incorrect ReSharper Behavior for CS1591 Warning

After upgrading from Visual Studio 16.8.x to 16.9.x the JetBrains ReSharper suddenly started marking a lot of public identifiers in the code as compiler errors with a message: "Missing XML comment for publicly visible type or member...". You can imagine how that can be very annoying.

Wednesday, February 3, 2021

.NET Web API: Confusing 404 Response to OPTIONS Request for CORS pre-flight

Problem: when a Angular applications sends an OPTIONS request to its own backend to satisfy CORS preflight policy it unexpectedly receives a 404 response from a .NET Core Web API application that effectively blocks an actual data data request from executing correctly. If you have ever experienced this problem, continue reading to understand what the problem is and how to fix it. 

Saturday, December 26, 2020

C#/.NET: Validate Anonymous Objects During Unit Testing

Say, we have developed a REST API based on .NET Web API framework and need to write a unit test for an end point that returns a collection of objects. This sounds like a usual trivial task that many developers do all the time. Unless, the API method that we need to test, returns a collection of anonymous objects, that is the API method is written using a C# anonymous or dynamic type to construct objects that are included in the list.

It's totally fine when the endpoint is consumed over HTTP as the result is first serialized into JSON for transfer and then de-serialized back into a JavaScript object on a consumer side. If, however, the endpoint is called directly in C# without JSON conversion, like in a unit test, it's an entirely different story. Let's discuss how we can overcome this issue.

Friday, December 18, 2020

Angular: Mock NgRedux for Unit Testing

If you use Redux in your Angular web application (likely it is an NgRedux from Angular Redux) and develop unit tests for components that depend on the Redux store sometimes it's easier to mock the Redux store rather than deal with incorrect values that it may supply in a test scenario. If this sounds like your situation, read on.