Posts

Showing posts from August, 2017

Vacation Mode On

Mendz is on vacation. Enjoy the last few days of summer everyone!

Heartbreaking Windows 10 Phones

I am a Windows 10 phone user. I own a Nokia Lumia ICON. I love it. With Microsoft seemingly killing off Windows 10 for phones anytime soon, I feel the pain. I probably share the same sentiments as other Windows 10 phone users. Regardless how loyal to the platform we wish to be, it seems inevitable that we shall forever be the last few. Microsoft does not care.

What Is Wrong With CVS?

While researching on compressed sparse matrix, I stumbled upon compressed row storage (CRS; compressed sparse row, CSR; Yale format) and compressed column storage (CCS; compressed sparse column, CSC). These sparse matrix compression formats are popular. Stepping back and imagining the possibilities, I considered the possibility of applying basic lossless compression techniques to sparse matrices, exploiting data redundancy, leading to what I call the compressed value storage (CVS) .

Imagining CVS, JSON and HTML5 Canvas

Compressed value storage (CVS) applies lossless compression to a matrix resulting to storage that can be smaller than the popular compressed matrix formats like CRS and CCS. In Visualizing Compressed Value Storage (CVS), I described an imagination of using CVS to store and render images. The overall idea is simple. In fact, it's so simple that it seems possible to implement the idea using JSON and HTML5 canvas.

Visualizing Compressed Value Storage (CVS)

This article describes an imagination of compressed value storage (CVS) being used in graphics storage and rendering. The imagination does not make any assumption that CVS can really be used for digital images. This is basically a spill of thought processes and no codes or implementations are shared. Still interested? Read on...

CVS MatrixProduct

CVS is coordinate-wise in many ways. However, some operations are challenging. Performing CVS-to-CVS multiplication is possible but with a catch (at least as of this writing). CVS's own rule about keeping distinct non-zero values and aligning their lists of linear indexes creates a challenge when performing operations that can create zeroes or repeating values.

CVS MatrixSum and MatrixDifference

CVS is coordinate-wise in many ways. However, some operations are challenging. Performing CVS-to-CVS addition/subtraction is possible but with a catch (at least as of this writing). CVS's own rule about keeping distinct non-zero values and aligning their lists of linear indexes creates a challenge when performing operations that can create zeroes or repeating values.

Pros and Cons of CVS

The compressed value storage (CVS) is new. I say that because I can't find materials about it or something similar to it online. Or perhaps I am searching with the wrong keywords. Basically, my problem is that there is not much to find about how CVS can be used in matrix operations. So, for now, I have to figure things out on my own.

CVS MatrixScalarProduct

My current study is to add more features/methods for the compressed value storage (CVS) format. CVS is a lossless compression format for sparse matrices. A lot of things are easier with CVS than CRS/CCS. Let's look at MatrixScalarProduct() and MatrixScalarProductInPlace().

CVS Transpose And Re-ordering Features

Image
My current study is to add more features/methods for the compressed value storage (CVS) format. CVS is a lossless compression format for sparse matrices. A lot of things are easier with CVS than CRS/CCS. Let's look at Transpose(), SetLinearIndexMode() and TransposeToNewCVS().

About Compressed Value Storage (CVS)

There is not much to find online about the compressed value storage (CVS). It seems like CRS and CCS are the most popular matrix compression formats. So here I am writing about CVS a little more. This way, you have something to find online about it.

SQL, NoSQL and LINQ

.Net's LINQ lets developers create applications that can be 100% data source/target agnostic. Let's look at how that can work with SQL and NoSQL databases.

SQL and Programmers

Regardless what some programmers may think, SQL is still the best language to express operations with sets. And, yes, I want to stress exactly that. Sets!

Mendz.Data and Mendz.Data.MongoDB

Image
Now it's time to get organized. The way I did it, Mendz.Data is a separate project from Mendz.Data.MongoDB. By default, using Mendz.Data makes the project ADO.Net ready. Adding a reference to Mendz.Data.MongoDB makes the project also MongoDB ready.

Using Mendz.Data.MongoDB

Mendz.Data.MongoDB provides the types and classes that can allow developers to use MongoDB in their applications following the same concepts, designs and principles applied by Mendz.Data for ADO.Net compatible data access (like Dapper, for example).

About Mendz.Data.MongoDB

Mendz.Data provided classes and types that allow developers to create ADO.Net compatible data contexts and model "repositories". The primary motivation behind the design is for use with Dapper , a micro-ORM library. If you've read enough about MongoDB , you should know that it is not ADO.Net compatible. Granted, what is the Mendz.Data.MongoDB namespace all about then?

2011, BlackBerry and As I See Tech

I just realized that more than six years ago, As I See Tech kinda, sorta predicted BlackBerry's trouble.

Project Mendz.Graphs at a Glance

Image
This article serves as the Mendz.Graphs series ToC (Table of Contents). Consider bookmarking for a quick and easy reference.

Decompressing CVS, CRS and CCS

If you can compress them, you can decompress them, right? Decompression helps to validate the compression. In this article, I'll explore how CVS, CRS and CCS can be decompressed to a two-dimensional array T[,] dense matrix.

Extensions for CVS, CRS and CCS

The CVSExtensions, CRSExtensions and CCSExtensions serve as my placeholders for compressed matrix operations. This article focuses on matrix-vector multiplication.

DOK Sparse Matrix Extensions

In .Net, extension methods are fantastic ways of adding new features to types that can share the same behavior (static methods) without necessarily changing the types' source codes. Extension methods can be maintained in separate code files. IDOKSparseMatrixExtensions provides extension methods to sparse matrices that implement IDOKSparseMatrix.

About CVS, CRS and CCS

When I discussed about compressed matrices , I mentioned two common compressed matrix formats, CRS and CCS, and described a third one I called CVS. These compressed matrices are supported in Mendz.Library.Matrices.