Customer centric/focused design and development

Objective/Abstract This is a short two to three pages literature review about customer focused design and development of knowledge management system (KMS). Assumption This article refer to all software/application/solution as a knowledge management system (KMS) that holds informations that can guide decision making Introduction Knowledge management system (KMS) has been defined as a system that collects, stores, maintains, and assists in the creation of knowledge (Tran, 2015a). KMS is proven to be an important factor within the organization management strategies (Tran, 2015b). According to Tran (2015b), KMS is a system with two main definitions: 1) a process that guides the knowledge management in general, and 2) a software or application that handle the entire knowledge management process; this is purely Information Technology (IT) related. IT is critical for most organizations in this technology age in general, and especially effective and required for the knowledge driven company (Tran, 2015c). This paper’s focus is KMS in relation to IT; KM software and applications. More specifically, this paper reviews the ideas and theories about customer centric or customer-focused design and development of products that includes products, and services; the software and software services that provide business logic and functionalities. Customer-focused and customer centric Customer centric or customer focus is about providing customer with most benefits and values for their investment in a system; it is a crucial factor within the management strategies (Ivanović,, America, & Snijders, 2013). According to Ivanović,, America and Snijders (2013), customer focused design is the design that links the system design decisions directly or at least indirectly to the customer’s objectives. Based on Gutterman (2007), customer centric or...

Visual studio solution and project structure and organization

Objective: This is an article about structure and organize Visual Studio .NET solution and projects. What this article is not about? 1) This is not about using single solution file, partitioned single solution file nor multiple solution file 2) It’s not about folder structure alignment with source control folder structure – These are alread covered in the Microsoft Patterns adn practices at this link (https://msdn.microsoft.com/en-us/library/ee817674.aspx) What is this article about? 1) This article cover logical layers of data, and code structure within a solution 2) It covers logical and physical (folder) grouping of projects that is used to build the logical layers for each solution Assumption: This article is written with the assumption that most application with different level in scale (small, medium, and large) have to deal with some type of data, and the data has to be provided through some mean/data service. How do we start? As software developer, it is important to understand the major components that handle the major funtionalities of an application/software. Refer to figure 1 as a the based. Not all application has all these components, and it doesn’t means that the figure 1 includes all the main components for all applications; but they are enough to help explain the structure and organization of solution and projects within this article. Figure 1 Let’s start out with the general defintion for each of this component. Component defintion: 1) Application host: – This is the main component, that all the other component is built for its purpose. Host in this article defintion can be a project in the type of a win form, a WPF, a...

Requirements to be a programmer/software developer

Objective: Personal understanding about the basic requirements to be a programmer/software developer from a ten years experienced developer What are the requirements to be a programmer? The software/program are developed to solve a problem or problems. This reason put software developer/programmer in a role of a problem solver, a thinker, a questioner, a guider and a solution developer. All these required characteristics of a programmer can be summed up in two key requirements: 1) creativity, and 2) research capability. Creativity allows developer to think outside of the box, and use the same tool to develop different solutions for different problems. The research capability allows software developer to dig deep, find what is not yet existed, fit the right basic tool for the right job, use small basic knowledge to build grand scale solution, and to find the right resources for the right situation. The requirement to be a programmer is to be able to question the basic question, then question the next level basic question, and the same question for the next several level of the problem, until the satisfied answered is found. The next requirement of a programmer is to be able to model the found answers into the technical design, and build a technical software architecture. The next level of requirement for a programmer is the development of the software based on the developed architecture. Think of software development as a building development. There is the requirement in the business understanding of how the house should be, the design, the architecture, the model on paper, the constructed foam models, and the actual house construction. Building or developing software...

.NET MongoDB database implementation

Objective: Provide an example of how .NET application making connection to MongoDB database, and run a query Required Component 1) MongoDB driver MongoDB.Bson MongDB.Driver C# Implementation 1) Get MongoDB driver in your project – There are 2 ways that you can do this: 1) Through NuGet in your Visual Studio to automatically incorporate the driver DLL in your project Tools -> Library Package Manager -> Package Manager Console -> Install-Package mongocsharpdriver Reference: https://www.nuget.org/packages/mongocsharpdriver 2) Download the DLL and make the reference manually http://docs.mongodb.org/ecosystem/drivers/csharp/ 2) Write C# code to make call to your MongoDB database code sample using System.Windows; using MongoDB.Driver; namespace WPF_MongoDBTest { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } public void TestMongoDB() { //Connection string format: mongodb://userId:password@ServerName:PortNum/ const string connectionString = "mongodb://ditran:ditran@DiTranMongoDBServer:27017/"; // Create a MongoClient object by using the connection string MongoClient MClient = new MongoClient(connectionString); //Use the MongoClient to access the server MongoServer MServer = MClient.GetServer(); // Use the server to access the 'test' database MongoDatabase database = MServer.GetDatabase("DiTranDB"); using (MServer.RequestStart(database)) { MongoCollection<Student> students = database.GetCollection<Student>("Student"); MongoCursor<Student> cursor = students.FindAllAs<Student>(); //foreach (Student theStudent in cursor) //{ // txtBox_Result.Text = theStudent.Id + " " + theStudent.Name + Environment.NewLine; //} } } private void Button_Click_1(object sender, RoutedEventArgs e) { TestMongoDB(); } } } using System; using MongoDB.Bson.Serialization.Attributes; namespace WPF_MongoDBTest { public class Student { [BsonId] public String Id { get; set; } public String Name { get; set; } }...

NoSQL Databases

What are NoSQL databases and what are the NoSQL database options? Defintions You can find something as below when you google. A NoSQL database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. My definition for NoSQL database is, the database that is NOT similar to what we are used such as relational database with tables, columns, rows and table are linked to another table. NoSQL database doesn’t have relational table that can easily join together; you can still do it, it’s just a bit harder. It doesn’t have Structure Query Language (SQL), but it has something else. It’s NOT similar to RDBMS (Relational Database Management System) such as Oracle, Sql Server, DB2, and others. Options To talk about the options, then we have to talks about different type of NoSQL database; and there are three main types todays with database management system listed as below: Key Value Store Memcached Choerence Redis Tabular BigTable Hbase Accumulo Document Oriented MongoDB CoachDB Cloudant Pros and Cons Cons No join support No complext transaction No constraint support Pros Query Language Faster Performance Horizontally...

MongoDB StartUp

Get yourself started with NoSql MongoDB and connect to .NET development MongoDB tutorial MongoDB Tutorial http://code.tutsplus.com/tutorials/getting-started-with-mongodb-part-1–net-22879 Setup on Window tutorial  Download http://www.mongodb.org/downloads?_ga=1.237816000.1360804463.1410441673 Setup http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/ Mongo and .NET c# http://docs.mongodb.org/ecosystem/drivers/csharp/ http://www.drdobbs.com/database/mongodb-with-c-deep-dive/240152181 http://azure.microsoft.com/en-us/documentation/articles/store-mongolab-web-sites-dotnet-store-data-mongodb/ Install and configure local MongoDB Follow the isntallation/setup guide from MongoDB site above Two ways to setup MongoDB Set MongoDB as service mongod –dbpath=data –logpath=log.txt –install Run -> services.msc -> Find MongoDB -> Right click -> Start Error: can’t start on local machine (work on server only) Run MongoDB in Command Prompt  This means when you close the command prompt, the database is down  mongod –dbpath=data MongoDB Client tool Command Prompt (cmd) Graphic user interface UMongo (FREE)  http://edgytech.com/umongo/ MongoVue  http://www.mongovue.com/ General MongoDB command Show dbs Show all database Show collection Show all collections db Show current database Test database is used by default use databaseName switch to different database if database doesn’t exist, it will temporaly created it database will be actually created after data is inserted db.Student.find() Make select statement on student table db.Student.Insert({Name:”Di Tran”}) Insert a row in Student table If Student table doesn’t exist, this will create it db.Student.find({Name: “Di Tran”}) Find student with name to Di Tran Note: everything is case sensitive Create new user for DiTranDB db.createUser( { user: "ditran", pwd: "ditran", roles: [ { role: "userAdmin", db: "DiTranDB" } ] } ) Create C# project and install MongoDB driver Create new WPF project Get driver inside the project reference Tools -> Library Package Manager -> Package Manager Console -> Install-Package mongocsharpdriver  Install MongoDB driver in project references MongoDB.Bson MongDB.Driver...

Code Exception Vs Code Service Fault

Difference between Exception and Fault Exceptions – Platform or technology specific errors such as .NET C# code exception – Provides all details about the errors along with debug helping information such as stack trace – Include software/program/low level code implementation detail – Tightly coupled with the system/program/software it come from Faults – Often refers to as SOAP (Simple Object Access Protocol) faults – SOAP – computer system communication and message exchange format – A web service/web application message format – A exception message on the web service/web application format type – Not technology or platform specific – Often a skimmed down version of systems/software/program/platform exceptions – Consumer centric/focus exception message FaultException and FaultContract FaultException – The web service fault (SOAP fault) message – All exception from .NET WCF service will be covered under the default FaultException and this FaultException is returned to the service consumer. Example: “Unhandled Exception: System.ServiceModel.FaultException: The server was unable to process the request due to an internal error” – .NET C# Web service can return service exception to service consumer (platform/system exception or custom exception) by wrap the exception in FaultException Example: //Service level code public string ServiceDoSomething() try { //Any operation here return ""; //Return anything here } catch (Exception ex) { throw new FaultException(ex.Message); } //Consumer level code try { using (TheServiceReference.TheServiceClient client = new TheServiceReference.TheServiceClient()) { clietn.ServiceDoSomething(); } } catch (FaultException ex) { //Do whatever here with ex.Message } FaultContract – In case programmmer wants to use a custom FaultException message, instead of using the .NET provided fault exception model, they can create a FaultContract (fault class model) – A data contract...

NoSQL MongoDB Summary

– What is it? 1) Open-source [document] database 2) Document: a [field] and value pairs data structure like JSON object -> Store data in BSON (version of JSON Style document) with datatype -> BSON: Binary JSON -> A row – Field: as a column -> It can be a single value or an array of value or other documents – Example: { name: “Di Tran” DOB: “01-01-1982” Phones: [{Number: “502-354-2523”, Type: “Home”}, {Number: “502-225-2255”, Type: “CellPhone”}] } – Why is this good? – Store data and passing data in form of document (objects representation) already being used by many OOP language – Usage of embedded documents and arrays as field values reduce join requirement -> This leads to reduction in disk IO – C++ – Index – Full index on all fields as relational database and [more] – More: – Index on embedded documents and arrays -> Provide keys for embedded document and fields – Dynamic Schema – Creation/modification of schema on data insertion or update – Store data in BSON (version of JSON Style document) with datatype -> BSON: Binary JSON – Auto-Sharding – Automatically storing/distributes data across a cluster of machines – Go here to get diagram -> http://docs.mongodb.org/manual/core/sharding-introduction/#sharding-introduction – A single collection(table) data can store its data in multiple Shards which resides in a single or multiple servers – Auto horizontally scale 1) Automatically allocate file size to up 2GB file -> Create new 2GB file once the current one is max out – Why Sharding? 1) Load balance on CPU computation processing 2) Load balance usage of RAM on multiple machine -> This avoid the...

WPF webbrowser control with PDF viewer issue

 Abstract: This article covers some of the common issues and fixes for web browser control while viewing PDF file in WPF application Assumption: We assume that you know how to build a WPF application and utilize the web browser control Issue 1: Blank pdf file when loaded to web browser control as below: Cause: Web browser work only with x82 (32bits) build Fix: Open project properties (Right click on project -> properties) -> Build -> Change Platform target to x86 Issue 2: Confirmation popup that ask user to open the PDF, save or cancel Cause: This is done by web browser default for security reason Fix: This can be fixed by not loading the PDF file directly but embed it within a HTML file such as below <html> <body> <object classid="clsid:ca8a9780-280d-11cf-a24d-444553540000" id="pdf1" type="application/pdf" data="http://localhost/GDDSharedDocument/MatteoTestDoc/testfile.pdf" style="width: 100%; height: 100%"> </object> </body> </html>  Issue 3: PDF open outside of web browser control  instead of inside Cause: It’s the Adobe Acrobat PDF Reader setting...

Hacked Ipad 3 can’t restore and update from Itune

“The iPad could not be restored. This device isn’t eligible for the requested build” Problem: Cydia hacked Ipad 3 can’t restore to factory configuration Cause: If you use the same machine that you used to hack your Ipad 3 with, then the machine had been configured to block Apple Itune from restoring the Ipad to factory configuration Fix: 1. -In TinyUmbrella unchecked the option that says “Set hosts to cydia on exit” -Press Apply Changes -QUit TinyUmbrella 2. -In terminal, write this: Code: sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts -Press Enter -Delete all lines that reference gs.apple.com -Save File 3. Restart iTunes and try again.   NOTE: no credit taken for this solution as it’s retrieved from the internet. It’s rewritten here as part of the programmer’s personal resource...