Monday 30 December 2013

MongoDB vs CouchDB: Open Source NoSQL and Document Databases Comparison

MongoDB vs CouchDB: Open Source NoSQL and Document Databases Comparison

MongoDB and CouchDB are both document-oriented databases. MongoDB and CouchDB are the best examples of open source NoSQL database. Aside from both storing documents though, it turns out that they don't share much in common. There are a lot of difference between MongoDB and CouchDB in terms of implementation of their data-model, interface, object storage, replication methods etc. 

As we say, MongoDB and CouchDB are both document-oriented free and open source databases, the word "document" does not mean a word processing file or a PDF. Rather, a document is a data structure defined as a collection of named fields. JSON (JavaScript Object Notation) is currently the most widely used notation for defining documents within document-oriented databases. JSON's advantage as an object notation is that, once you comprehend its syntax -- and JSON is remarkably easy to grasp -- then you have all you need to define what amounts to the schema of a document database. That's because, in a document database, each document carries its own schema -- unlike an RDBMS, in which every row in a given table must have the same columns.

In this article "MongoDB vs CouchDB", I have tried to make a comparison between MongoDB and CouchDB and figured out following difference between these two Free, Open Source, NoSQL document oriented databases: 

Data Model: MongoDB and CouchDB are both document oriented databases. MongoDB is JSON based while CouchDB is BSON based.

Interface: MongoDB uses custom protocol over TCP/IP while CouchDB uses HTTP/REST protocol.

Object Storage: MongoDB database contains collections and those collections contain documents while CouchDB directly contains all the documents.

Implementation Language: MongoDB is written in C++ while CouchDB is written in Erlang.

Server operating systems: MongoDB can operate on Linux, OS X, Solaris and Windows platforms while CouchDB can operate on Android, BSD, Linux, OS X, Solaris and Windows.

Supported programming languages: MongoDB supports a lot of programming languages like Actionscript, C, C#, C++, Clojure, ColdFusion, D, Dart, Delphi, Erlang, Go, Groovy, Haskell, Java, JavaScript, Lisp, Lua, MatLab, Perl, PHP, PowerShell, Prolog, Python, R, Ruby, Scala and Smalltalk. CouchDB supports lesser programming languages as compared to MongoDB. Programming languages supported by CouchDB are C, C#, ColdFusion, Erlang, Haskell, Java, JavaScript, Lisp, Lua, Objective-C, OCaml, Perl, PHP, PL/SQL, Python, Ruby and Smalltalk. 

Replication: MongoDB supports only Master-Slave replication. On the other hand, CouchDB supports Master-Master Replication as well as Master-Slave Replication.

Triggers: MongoDB does not support triggers while CouchDB does.

Developer: MongoDB is developed by MongoDB, Inc. MongoDB was initially released in 2009. CouchDB is developed by Apache Software Foundation. CouchDB was initially release in 2005.

MySQL vs MongoDB: Basic Differences between MySQL and MongoDB

MySQL vs MongoDB: Basic Differences between MySQL and MongoDB

MySQL and MongoDB are both free and open source databases. MySQL and MongoDB have a lot of basic differences in terms of data representation, querying, relationships, transactions, schema design and definition, normalization, speed and performance. By comparing MySQL with MongoDB, we are comparing Relational and non-relational databases. MongoDB is a scalable and high-performance open source database designed to handle document-oriented storage while MySQL is a widely used relational database. When building a custom web application, you need to consider the type of database that best suits your demand. If your are thinking to go with the best open source database, you will have to consider which database is best for you: MySQL or MongoDB? Here's a quick guide on the basic differences between MySQL (Relational) and MongoDB (Non-Relational / NoSQL). 

Data Representation

MySQL represents data in tables and rows.

MongoDB represents data as collections of JSON documents.

If you think about it, a JSON document is very much like what you would be working with in your application layer. If you are using javascript, it's exactly what you're working with. If you're using PHP, it's just like an associative array. If you're using python, its just like a dictionary object.


The SQL in MySQL stands for Structured Query Language. That's because you have to put together a string in this query language that is parsed by the database system. This is what makes SQL injection attacks possible.

MongoDB uses object querying. By that I mean you pass it a document to explain what you are querying for. There isn't any language to parse. If you're already familiar with SQL, it'll take a little bit of time to wrap your brain around this concept, but once you figure it out, it feels a lot more intuitive.


One of the best things about MySQL and relational databases in general is the almighty JOIN operation. This allows you to perform queries across multiple tables.

MongoDB does not support joins, but it does multi-dimensional data types such as arrays and even other documents. Placing one document inside another is referred to as embedding. For example, if you were to create a blog using MySQL, you would have a table for posts and a table for comments. In MongoDB you might have a single collection of posts, and an array of comments within each post.


Another great thing about MySQL is its support for atomic transactions. The ability to contain multiple operations within a transaction and roll back the whole thing as if it were a single operation.

MongoDB does not support transactions, but single operations are atomic.

Schema Definition

MySQL requires you to define your tables and columns before you can store anything, and every row in a table must have the same columns.

One of my favorite things about MongoDB is that you don't define the schema. You just drop in documents, and two documents within a collection don't even need to have the same fields.

Schema Design and Normalization

In MySQL there is really isn't much flexibility in how you structure your data if you follow normalization standards. The idea is not to prefer any specific application pattern.

In MongoDB, you have to use embedding and linking instead of joins and you don't have transactions. This means you have to optimize your schema based on how your application will access the data. This is probably pretty scary to MySQL experts, but if you continue reading, you'll see there is a place for both MySQL and MongoDB.


MySQL often gets blamed for poor performance. Well if you are using an ORM, performance will likely suffer. If you are using a simple database wrapper and you've indexed your data correctly, you'll get good performance

By sacrificing things like joins and providing excellent tools for performance analysis, MongoDB can perform much better than a relational database. You still need to index your data and the truth is that the vast majority applications out there don't have enough data to notice the difference.

When should you use MySQL?

If your data structure fits nicely into tables and rows, MySQL will offer you robust and easy interaction with your data. If it's performance that is your concern, there is a good chance you don't really need MongoDB. Most likely, you just need to index your data properly. If you require SQL or transactions, you'll have to stick with MySQL.

When should you use MongoDB?

If your data seems complex to model in a relational database system, or if you find yourself de-normalizing your database schema or coding around performance issues you should consider using MongoDB. If you find yourself trying to store serialized arrays or JSON objects, that's a good sign that you are better off MongoDB. If you can't pre-define your schema or you want to store records in the same collection that have different fields, that's another good reason.


You probably thought this was going to be all about performance, but MySQL and MongoDB are both tremendously useful, and there are much more important differences in their basic operations than simply performance. It really comes down to the needs of your specific application.

Sunday 29 December 2013

Best Free Open Source Small Business Accounting Software Solutions

Best Free Open Source Small Business Accounting Software Solutions

Do you own a small business and do not want to spend a lot on expensive accounting software packages? If your business needs are small, then there are a lot of free and open source small business accounting software solutions which can help you to maintain your accounting tasks and will help you to focus on your core needs. We have picked top 8 free and open source small business accounting software packages for you: TurboCASH, TAS, GnuCash, Express Invoice, xTuple PostBooks, VT Cash Book, Invoice Expert XE and Adminsoft Accounts. These free and open source accounting software packages are equipped with all basic and required features for your business like  stock control, invoicing, debtors, creditors, general ledger, VAT accounting, balance sheet and income statements, and plenty of reports - and also supports multiple users, and even multiple companies. These are well configurable as per your need. Lets have a look at them:

1. TurboCASH 5

TurboCash is an open source small business accounting package, which the developers say has more than 80,000 users worldwide.

It has all the usual standard functions - stock control, invoicing, debtors, creditors, general ledger, VAT accounting, balance sheet and income statements, and plenty of reports - and also supports multiple users, and even multiple companies.

As with any similar package, if you're new to accounting in general then there's a great deal to learn. TurboCASH does make things easier with example books, though, and a detailed online manual helps you to get started.

The program is also highly configurable, and it's also a relief to use a free accounting tool which isn't always demanding that you "upgrade".

2. TAS Basics

TAS Software (a division of Sage) sells several accounting packages, but gives Basics away for free. This means it has plenty of limitations - you can't record sales orders or create invoices, for instance - and there's no real support, but if you can live with that then Basics proves to be a very straightforward package.

It can maintain customer and supplier records; you're able to maintain multiple bank accounts, recording the money in and out; simple reporting means it's easy to record who owes you money (and who you own money to), and you get useful help with your VAT return.

3. GnuCash

First released back in 1998, the open source GnuCash has been constantly developed ever since, and it's now a very flexible accounting system.

A straightforward register makes it quick and easy to enter transactions, but there's also plenty of power here: customer and supplier tracking, invoicing and bill payment, scheduled transaction support, and a host of reporting tools.

Advanced features include budget management and stock portfolios, while each of your accounts can be in different currencies. Double entry accounting and a reconciliation tool help you uncover any errors, and with versions available for Windows, Linux and Mac (and even an Android app) you can run the program just about anywhere.

4. NCH Express Invoice

Express Invoice is free only for businesses with less than five employees, and annoyingly you're asked to confirm that every time the program launches. That aside, though, Express Invoice is a very easy-to-use invoicing package.

After installation, you can create a quote or invoice immediately; just entering a customer's name, product details and so on creates those records for you, and you can print, email or fax the results from within Express Invoice.

It's straightforward to schedule recurring invoices, you can track payments as they come in, and reports keep you up to date with outstanding invoices, item sales and more. If you only need invoicing then check out Express Invoice first.

5. xTuple PostBooks

PostBooks is another open source tool with all the usual accounting features: general ledger, accounts payable and receivable, invoicing, bank reconciliation and more, all accessible via a well-presented interface. But that's just the start.

The program also includes equally capable modules like Products, Inventory, Purchase, Manufacture, CRM and Sales, for instance, while an integrated OpenRPT report writer helps you create the reports you need.

Unsurprisingly, this also comes with a steep learning curve, but PostBooks could be useful for larger businesses, and you can upgrade to commercial packages later if you need more power.

6. VT Cash Book

If your accounting needs are simple then VT Cash Book might appeal, as it's just about recording your income and expenditure. So there's no database of customers or suppliers, no invoicing or purchase order module: instead you'll spend most of your time simply entering transactions via VT Cash Book's straightforward interface.

Still, the program does support multiple accounts, has a simple reconciliation option, and can help with your VAT returns. So if you're a small trader, and just looking for a way to record your cash transactions, then VT Cash Book is worth a look.

7. Invoice Expert XE

Invoice Expert XE is the free version of a commercial product, and has some major restrictions, the most significant being that you're limited to 100 customers and products.

It's still packed with powerful features, though - comprehensive quote and invoice creators, detailed inventory and customer management, useful reports, and more.

There are lots of configuration options, and an excellent interface makes the program very easy to use. The 100 customer limit will be a big problem for most people, then, but if you have a small business where that isn't an issue, Invoice Expert XE's mix of power and simplicity could make it a reasonable choice.

8. Adminsoft Accounts

Adminsoft Accounts is the work of a single developer, rather than the usual large team, but it doesn't look that way from the feature list.

The program is a double entry accounting system which supports accounts payable and receivable, general ledger, invoicing, purchase order processing, stock control, payroll and more. And there are even a few specialist modules (AutoManager helps run a garage, for instance).

Learning how to use all this can take a while, as there are a vast number of menus and dialog boxes to explore. But if you need a lightweight program with plenty of functionality then Adminsoft Accounts could still be a good choice.

Intuit QuickBooks vs Sage Peachtree: Small Business Online Accounting Software Comparison

Intuit QuickBooks vs Sage Peachtree: Small Business Online Accounting Software Comparison

Are you searching for best accounting software for your small/medium business? There are a lot of online free and cheap small business accounting software packages available but we would recommend you to pay some dollars to get a good accounting software for your business. We have shunted out two good accounting software solutions for you: Intuit QuickBooks and Sage Peachtree. We will provide a brief comparison of features of Intuit QuickBooks and Sage Peachtree. We will help you to decide which accounting software is the best option for you? Which accounting software package (Intuit QuickBooks or Sage Peachtree) best matches your accounting and financial demands?

As a small business owner, your to-do list is a mile long. It’s stressful enough handling customer demands or vendor requests, but then there’s day-to-day administrative tasks that must be completed as well. While accounting software programs can’t keep tabs on your new competitor down the street, they can at least make one part of your job a little easier.

Sage Peachtree and Intuit QuickBooks own major share of the small business accounting software market. They both provide excellent solutions to many, if not all of a small business’s bookkeeping conundrums. 

QuickBooks is usually considered the easiest accounting software to implement for someone without an accounting background but the competitor Sage Peachtree also offers intuitive features like Setup Advisor and Sage Advisor, a tool that follows user activity while explaining how the software can handle different tasks.

When it comes to tracking financials, there are simply no substitutes for accuracy, usability or quality reporting. While you can certainly find basic accounting and financial management solutions for little or no cost online, these bare-bones programs typically offer few if any real capabilities. And it’s in usability and depth that QuickBooks and Peachtree both really shine.

Intuit QuickBooks

QuickBooks boasts a well-developed and easy to use invoicing system dubbed the Collections Center. QuickBooks Premier includes the ability to track data from different departments, locations or funds, all in one report. Batch invoicing is another new feature that QuickBooks offers, allowing one invoice to be created and applied to everyone in a group.

From top to bottom, QuickBooks has updated their offerings to keep pace with software and technology trends enabling easier online integration. For example, all versions of QuickBooks can be used in conjunction with your online banking and web-based email account (e.g., Gmail, Hotmail, Yahoo! Mail). They can also be connected via QuickBooks Sync to Intuit’s online servers, making information seamlessly available.

Sage Peachtree

Peachtree, on the other hand, is great for loads of specific small business tasks and offers a very customizable tool set. Each version of Peachtree can deftly manage workflow analysis, volume pricing, complicated inventory concerns (e.g., multiple warehouses) and vendor reports. Peachtree has also teamed up with business intelligence firm Alchemex to provide Excel-based business intelligence summaries for Complete and Premium users.

With Peachtree you can keep an eye on cash flow with preset alerts that send email notifications when inventory amounts get too low or an account’s balance passes a predetermined threshold. Perhaps the most valuable tool that Peachtree offers is its Internal Accounting Review that audits your data to detect common accounting mistakes. This makes sure that your hard earned money doesn’t slip through the cracks.


These are slightly different products being catered to slightly different crowds, and they aren’t cheap, but they are well worth the investment in terms of both dollars and hours saved. In fact they will allow you to get back to the really fun tasks of running a small business. You can visit official websites of Intuit QuickBooks and Sage Peachtree to learn more.

Friday 27 December 2013

MySQL vs PostgreSQL: Which Open Source Database to Choose? Which one is best?

MySQL vs PostgreSQL: Which Open Source Database to Choose? Which one is best?

If you are thinking of choosing a free and open source database for your project, you will surely get confused between MySQL and PostgreSQL. MySQL and PostgreSQL are both free and open source powerful and full-featured databases. Your major question here is: Which is the best open source database: MySQL or PostgreSQL? Which open source database to choose: MySQL or PostgreSQL?

When you're choosing a database, you're making a long-term decision, because changing your mind later is difficult and expensive. You want to get it right the first time. Two popular open source databases, MySQL and PostgreSQL, are often the final two candidates. This high-level overview of these two open source databases should help you choose which is more appropriate for your needs, MySQL or PostgreSQL?


MySQL is a relative youth, first appearing in 1994. It calls itself the world's most popular open source database. MySQL is the M in LAMP, the software bundle frequently used for web development that also includes Linux, Apache, and Perl/PHP/Python. Most applications built on a LAMP stack incorporate MySQL, including such well-known applications as WordPress, Drupal, Zend, and phpBB.

Initially MySQL was designed to be a fast web server back end, using a fast indexed sequential access method (ISAM), with no ACID support. Since those lean, speedy early days MySQL has added support for a number of additional storage engines, and ACID compliance is now available via the InnoDB engine. MySQL also supports other storage engines, providing capabilities such as temporary tables using the MEMORY storage engine, an example for developers with the EXAMPLE storage engine, fast read-mostly databases using the MyISAM engine, plus several other core storage engines and a number of third-party engines.

MySQL documentation is abundant, and includes good free reference manuals, many books and online articles, and training and support from Oracle and third-party vendors.

MySQL has gone through changes in ownership and a fair bit of drama in recent years. It was first developed by MySQL AB, which sold itself to Sun Microsystems for a cool billion dollars in 2008. Sun was in turn acquired by Oracle in 2010. Oracle supports multiple editions: Standard, Enterprise, Classic, Cluster, Embedded, and Community. Some of these are free downloads, some cost money. The core code is GPL, and commercial licenses are available for developers and vendors who prefer not to use the GPL.

Nowadays there are even more choices for databases based on the original MySQL code, because several key MySQL developers have released MySQL forks. Michael "Monty" Widenius, one of the original founders of MySQL, appeared to develop a case of seller's regret after the Sun sale, and developed his own MySQL fork, MariaDB, free of cost and licensed under the GPL. Drizzle, a fork by prominent MySQL developer Brian Aker, is a substantial rewrite and change in core concepts that is optimized for multi-CPUs, cloud and net applications, and massive concurrency.


PostgreSQL bills itself as the world's most advanced open source database. Some of its fans say it is as good as Oracle, but without the baggage of high cost and snooty customer service. It has a long history, having been developed originally in 1985 at the University of California, Berkeley, as a descendant of the Ingres database.

PostgreSQL is a 100% community-driven open source project, maintained by a worldwide community of more than a thousand contributors. It provides a single completely functional version, rather than the multiple different community, commercial, and enterprise versions that MySQL offers. Its license is a liberal BSD/MIT-type, which allows organizations to use, copy, modify, and redistribute code with only a copyright notice required.

Reliablity is PostgreSQL's top priority. It is known for being rock-solid and well-engineered, capable of supporting high-transaction, mission-critical applications. Documentation is first-rate, with comprehensive manuals available for free online, along with archives of manuals for older releases. Community support is excellent, and commercial support is available from independent vendors.

Data consistency and integrity are also high priorities. PostgreSQL is fully ACID-compliant (atomicity, consistency, isolation, durability.) It has strong security for controlling access to the database, making good use of enterprise security tools such as Kerberos and OpenSSL. You can define your own checks to ensure data quality according to your own business rules. A favorite feature of many admins is point-in-time recovery (PITR), a flexible high-availability feature with powers such as the ability to create a warm standby server for fast failover, and snapshots and restores to specific points in time. But that's not all – the project provides several methods to manage PostgreSQL for high availability, load-balancing, and replication, so you can use what fits your particular needs.

Platforms and Workloads

Both MySQL and PostgreSQL power some of the Web's highest-demand Web sites:

MySQL: Slashdot, Twitter, Facebook, Wikipedia
PostgreSQL: Yahoo runs a multi-petabyte modified PostgreSQL database that processes billions of events per day, Reddit, Disqus

Both MySQL and PostgreSQL run on multiple operating systems: Linux, Unix, Mac OS X, and Windows. Both are open source and free of cost, so the only cost for testing them is your time and hardware. Both are flexible and scale well for uses ranging from small deployments to giant distributed systems. MySQL goes one level smaller than PostgreSQL, down into the embedded space, with libmysqld. PostgreSQL does not support embedded applications, sticking instead with traditional client/server architecture.

MySQL is often thought of as the speedy database back end for websites and applications, performing fast reads and numerous small queries, but offering fewer sophisticated features and data integrity checks. PostgreSQL is considered the solemn, full-featured, no-nonsense workhorse for transactional enterprise applications, with strong ACID compliance and many data integrity checks. Each is faster at some tasks, and MySQL performs differently with different storage engines. The MyISAM engine for MySQL is by far the fastest, because it performs the fewest data integrity checks. It works great as a back end for busy read-mostly websites, but it is a disaster for any read/write database containing sensitive data, because MyISAM tables will inevitably become corrupted. MySQL has good tools for recovering corrupted MyISAM tables, but for sensitive data InnoDB, which is ACID-compliant, is a better choice.

In contrast, PostgreSQL is a complete integrated database server with a single storage engine. You can improve performance by tweaking parameters in postgresql.conf, and tweaking your queries and transactions. The PostgreSQL documentation goes into detail on fine-tuning performance.

Both MySQL and PostgreSQL are very configurable and can tuned to optimize performance for different tasks. Both support extensions for added functionality.

A common misconception is that MySQL is easier to learn than PostgreSQL. Relational database management systems are all complex, finicky beasts, and these two have comparable learning curves.

Standards Compliance

PostgreSQL aims for SQL standards compliance (the current standard is ANSI-SQL:2008). MySQL is mostly SQL-compliant, but also has its own extensions and support for non-SQL features, which are documented in the reference manual. There are pros and cons to each approach. Standards adherence makes life easier for database admins, database developers, and application developers, because it means they have only one standard to learn, a common set of features and commands to use and support, and their code is portable. This adds up to savings in time and effort, and freedom from vendor lock-in.

Arguments in favor of using non-compliant customizations include freedom to quickly roll out useful new features, rather than waiting for them to work through the standards process. ANSI/ISO standards change and evolve, so standards compliance is a moving target anyway; the big-name RDBMSes, such as Microsoft SQL Server, Oracle, and IBM's DB2 are only partially compliant. Many of the MySQL's customizations are not exactly game-changers; for example, the differences in the way single and double quotes and escape characters behave in MySQL don't seem worth the bother or the potential for errors. MySQL adds even more complexity by supporting multiple SQL modes, such as ANSI, to conform more closely to standard traditional SQL for strict data input checking and various other strict and relaxed data-checking modes.


Despite their different histories, engines, and tools, no clear differentiator distinguishes either PostgreSQL or MySQL for all uses. Many organizations favor PostgreSQL because it is so reliable and so good at protecting data, and because, as a community project, it is immune to vendor follies. MySQL is more flexible and has more options for being tailored for different workloads. Most times an organization's proficiency with a particular piece of software is more important than differences in feature sets, so if your organization is already using one of these, that is a good reason to stick with it. If you held my dogs hostage and forced me to choose a database for a new project, I would pick PostgreSQL for all tasks, including Web site backends, because of its rock-solid reliability and data integrity. And I would keep Drizzle running on a test machine, to stay acquainted with it, until it is ready for prime time, and then roll it out for cloud and application servers.

Thursday 26 December 2013

Windows Server Performance Monitoring Tools

Windows Server Performance Monitoring Tools

Today Windows Servers are used in heavily to maintain a lot of big applications. It is normal for a window server's performance to diminish over time as more applications, drivers, etc. are installed. Eventually though, a system's performance may reach an unacceptably low level. 

When this happens, you need to know what to do about the problem. Windows Server Performance Monitoring Tools can help you here to detect what is going wrong with your windows server and why the performance of your windows server has declined?

Windows Server Performance Monitoring Tools helps you to identify potential bottlenecks and threats to your network and windows servers before your users are affected. For example, you will see if CPU or memory usage gets too high on a Windows server, if you are running out of disk space, or if an application creates an unusual amount of network traffic.

Windows Server Performance Monitoring software gives administrators insights into file system, OS and application conflicts that can result in poor server performance. Windows Server performance monitoring software can identify problems with Windows servers and automatically trigger corrective measures. Depending on how it is configured, Windows Server performance monitoring software may try a range of healing operations and, if none are effective, notify the administrator.

There are several performance monitoring tools available to Windows Server administrators. Which tool you use will depend on what you are trying to accomplish, your operating system and your technical skills.

Features of Good Windows Server Performance Monitoring Tools

1. Ease of Use

A good Windows Server Performance Monitoring Tool should be easy to setup, configure and use.

2. Distributed Site Monitoring

A good Windows Server Performance Monitoring Tool should provide multiple-location monitoring and make it possible to distribute the load for CPU-intensive tasks such as packet sniffing. 

3. Access Through Your Web Browser

A good Windows Server Performance Monitoring Tool should be accessible from anywhere at any time. The interface should work perfectly in any modern web browser including the iPhone.

In short, A good Windows Server Performance Monitoring Tool should monitor your Windows servers and your entire network 24/7 and notifies you if something needs your attention. This means you can stop worrying about the status of your windows servers and concentrate on your many other tasks. It should give you peace of mind, because you can rely on the Windows Server Monitor to inform you if you should really worry about anything.

List of Windows Server Performance Monitoring Tools

1. Paessler's PRTG

Paessler's PRTG server monitoring tool continuously checks server availability, health and performance for you and send you instant alerts of any problems.

PRTG can track availability of many types of servers, including web servers, file servers, email servers, FTP servers, database servers, etc. 

The software's comprehensive feature list makes it also the perfect solution for monitoring network bandwidth, usage and availability of networks of all sizes. 

PRTG is a professional server monitoring tool that scales up to 20.000 and more sensors. 

PRTG as a professional server monitoring tool comes with comprehensive features for monitoring web servers as well as SQL servers and entire networks. It offers more than 190 sensor types, bandwidth management functionality using SNMP monitoring, NetFlow and packet sniffing (port sniffer), remote probes for monitoring locally distributed networks and much more.

Quick and easy installation and configuration make PRTG an extremely user friendly server monitoring tool. Additionally PRTG comes with an easy to use web-interface. Monitoring results can be published in many different ways and comprehensive rights and roles management allows you to set up different users with precisely defined rights.

2. SolarWinds WMI Monitor

SolarWinds WMI Monitor monitors any Windows application or server, giving you amazing insight into real-time performance. Use built-in, community-sourced, or custom templates to start monitoring immediately!

Setting up Windows Management Instrumentation monitoring for your Windows servers and apps can be time consuming and tedious. Ready to take the guesswork out of determining which Windows Management Instrumentation counters to use for applications like Microsoft Active Directory and SharePoint? Want to look like an application expert without sifting through boring Windows Management Instrumentation tutorials?

SolarWinds free WMI Monitor is the answer. This free tool makes it easy to monitor your Windows applications and servers and gives you amazing insight into real-time performance with a slick desktop dashboard.

With WMI Monitor, you can monitor virtually any application. Choose from pre-built application templates in the tool or explore templates created and posted on thwack by the SolarWinds community of tens of thousands of system administrators. You can also create your own custom templates and share them with one click to help supercharge our free tools!

3. Windows Performance Monitor

Windows Performance Monitor is a Microsoft Management Console (MMC) snap-in that provides tools for analyzing system performance. From a single console, you can monitor application and hardware performance in real time, customize what data you want to collect in logs, define thresholds for alerts and automatic actions, generate reports, and view past performance data in a variety of ways.

Windows Performance Monitor combines the functionality of previous stand-alone tools including Performance Logs and Alerts (PLA), Server Performance Advisor (SPA), and System Monitor. It provides a graphical interface for the customization of Data Collector Sets and Event Trace Sessions.

4. ManageEngine Windows Health Monitor Tool

System performance and availability is crucial for business productivity. Windows Health Monitor tool is easy to use and monitors up to 20 servers/desktops simultaneously. ManageEngine Windows Health Monitor Tool is equipped with following features:

System Monitoring: It monitors system CPU, memory, disk space, number of ports open, response time and network bandwidth utilization.

Response Time: Windows Health Monitor Tool tracks the response time of the servers/systems in an intuitive graph and ensure that the user doesn’t have to wait long to use an application.  
Dashboard View: View top 3 systems memory, CPU, disk utilization along with their name and IP address details. Watch for color-coded alerts showing the systems with high resource utilization.

Threshold Settings: Set warning and critical threshold values for CPU, disk and memory usage.  

TCP Port Scanning: View open ports in the selected server with its description.

Port Scan Setting: Configure the port scan setting by adding the port numbers which you want scanned or by specifying the from-port and to-port numbers that needs to be scanned. Windows Health Monitor scans all the ports in the specified range.
Report Generation: Generate reports for a particular server with CPU, memory, disk space, number of ports and bandwidth utilization. The report is available in PDF format.

Email: Trigger an email about the server status to your team by attaching the device performance screenshot as a report.

5. NewRelic Server Monitoring Tool

NewRelic Server Monitoring Tool is a good option for server administrators. New Relic's server monitoring allows developers and sys admins to look at the same data in the same web interface. Three most important characteristics for an APM tool are End-User Performance, Server Performance and Application Performance. At this point, New Relic delivers all three for IGN. Using NewRelic Server Monitoring Tool, you can:

A) Get alerts for server health issues, including CPU utilization, memory utilization, disk I/O utilization, and disk capacity.
B) See which servers have capacity issues so you can take corrective action.
C) See processes prioritized by memory or CPU consumption.
D) Track server health availability in cloud, physical, or hybrid environments

6. Semonto Server Monitoring Tool

Semonto will email you the exact warning or error message when a check fails. If you have an iPhone or iPad, you can download Semonto free iOS-client to receive Apple Push Notifications. For those who haven't, Semonto offers the possibility to be alerted via SMS, Twitter or even a webhook (POST).

Semonto has multiple test servers around the globe. That way you can choose which server needs to check your server. It is also possible to select a different server for every host, so you can test the connectivity to your host from several countries. With those multiple servers, we eliminate the false-positives.

Semonto offer webapplication tests like measuring the latency, checking if a webapplication contains some defined words, or simply don't contains. You can also test servers like doing ping-tests, port-tests. When your Semonto small webapp on your server, you can also test your server load, database-server, memory-usage and more. You can implement custom tests as you want, eg to monitor queues.

Wednesday 25 December 2013

For Skilled Software Developers - A Journey from Employee to Self Employed (Entrepreneur)

For Skilled Software Developers - A Journey from Employee to Self Employed (Entrepreneur)

Are you a skilled and confident software developer who owns the guts of kicking away his/her secure and comfortable job and start his/her own business? Are you as a software developer want to be self employed and enjoy the sense of being entrepreneur? Well, the road is very rough and you will have to struggle a lot in your journey to reach your destination. If you feel you can do something different from the crowd, prepare a practical plan for you and go ahead. I am just trying to write down some suggestions which you should consider before typing your resignation letter.

1. Think twice before typing your resignation letter

Before you write that letter of resignation, think about why you want to become an independent software developer. 

A) Do you want to work from home? 
B) Do you want to travel? 
C) Do you want more money, fewer hours, or both? 
D) What are your main motivations for making this change? 

Write them down somewhere because chances are all of your goals will not be met immediately. When things get tough, that list will remind you of why you are doing this, and that can make the difference between giving up and success.

Above all, understand and accept that "going independent" means "starting a business," and a business is very different from a job.

Going independent can give you greater say in the kind of work you do. And in the world of software, there are many possibilities; you don't have to do exactly what you do at your current job. Consulting, development, products, training, and other services are all viable paths to independence. Make a list of everything you can do, everything you'd like to do, and everything you might be interested in learning how to do. Having that list will help prepare you to recognize opportunities when they arise.

Similarly, make a list of all the ways you can find and attract clients. When you make the leap, you'll want to be in a position where you have more offers than you can accept.

2. Securing your first contract is key

The first contract can be the hardest, or the easiest. It is not uncommon for someone to resign as an employee then turn right around and contract with their former employer, doing exactly the same job as before, just with a different financial arrangement -- but it is not guaranteed. Another option is to contact a recruiting firm and have them find you a position that you like -- and make the terms of engagement corp-to-corp. 

3. Diversify your business skill set

Your job responsibilities will include everything, not just coding. Going it alone means going it alone. You'll have to do all of the work that your current team and organization do for you. This applies to both technical skills and "soft" skills -- either you learn how to do it yourself, or you hire someone to do it for you. If you hire others to help you, you'll have to learn how to manage people at the very least, but ideally how to lead them. Communication skills may mean more to your bottom line than sheer coding talent.

4. Deliver exceptional service and quality

This may seem like an obvious platitude, but consider that the average office worker is productive only three to six hours per day, according to recent surveys. The rest of the time is sucked away in meetings, emails, social media, and various other nonproductive distractions.

When you are the business, you can eat Twinkies, drink Mountain Dew, and surf the Web all day if you want to. But chances are you only get paid when things get done -- so getting things done consistently, efficiently, and well will become paramount to the survival of your business. This makes Reddit a lot less interesting than a paycheck. Happy clients are key, and consistently delivering extraordinary results makes them happy.

5. Sweat the small stuff

Many tasks don't pay directly, but can lead to business failure (not to mention legal/tax trouble) if omitted. Accounting, cash flow, collections, contracts, liability insurance, and so on are easy to forget or postpone -- don't!

Other small things may suddenly matter, like being awake during business hours, answering your phone promptly, and having suitable clothes to wear to meetings with prospects and clients. The hip slacker image that works so well in your laid-back office job may not fly when you and only you represent the entire business. People will perceive you according to their inherent expectations, and you cannot control or change that -- but you can be aware of it, and prepare accordingly.

6. Always be marketing

Focusing only on the paying work in front of you and letting everything else slide is a good way to code yourself out of a job. Pay attention to additional opportunities with current clients, ask for referrals, continually prospect, and keep your pipeline full.

Marketing and sales are not evil; they are necessary. Even if all you have is a résumé on a job site, that is still marketing -- and the product is you. Even the best of clients can have sudden downturns; you do not want to be at the mercy of one client. If the vast majority of your income depends on one client, you don't have a business, you have a job.

7. Get organized

Since you are responsible for everything, you must be organized. 

Whatever you choose, get things out of your head and into the system, and review it consistently. It is far too easy to think that you can remember everything you need to be doing, and perhaps you can, for a while, but the effort is draining and wasteful. An organizational system is not supposed to be a straightjacket or a dictator; it is a tool. Apply your organizational system consistently to all of your areas of responsibility -- not just technical ones -- to ensure that you are always on top of everything that needs to be done.

8. Going independent is not a promotion

There is a huge difference between going independent and getting promoted to management. If you get promoted to management, you become responsible primarily for the work of others, along with a load of administrative issues that you may not enjoy. If you go independent, you get managerial responsibilities and keep all your technical responsibilities as well.

Many good programmers have been ruined when turned into managers; many excellent technical people are simply not happy in management roles. If this is you, that is fine, just be aware of it and plan accordingly -- perhaps by hiring an assistant or designating one day a week as "admin day." As an independent developer, you are both management and worker, and you must do both well to succeed.

9. Get out of your own way

Don't be your own barrier to business growth. At some point you will hit a limit of how much work you can do personally and still keep up with the business, maintain your health and family/social ties, and generally keep from burning out. You can raise your rates, but only up to a point. Learn how to delegate, sooner rather than later.

Many businesses that are otherwise doing well reach a tipping point where they fail because the person in charge cannot delegate, and that bottleneck strangles the business. If things are falling behind because everyone is waiting on you to do something, take this as a warning sign.

When you hit your limit, you can contract or expand. To do less, consider firing "bad" clients, raising your rates, and making better use of your time. To expand, consider hiring help, delegating or eliminating tasks, and diversifying your products and services.

10. Consider the product

Products have a distinct advantage over services: Products scale. You can only sell an hour of your time once, and it's gone, but you can sell a product over and over, even while you sleep.

Of course, products have their own overhead: First you have to write it, then you have to sell it. But once it is selling well, the only drain on your time is support, and counting your money. Consider building products (that people actually want) while supporting yourself by selling your services. If you can transform some of your services into products, so much the better.

11. Brand and network

People need to know about you. Whether you call it promotion or marketing or branding, the requirement is the same: Get the word out, with a consistent image and message about the kind of services and quality you provide. You can start a blog, join the local Chamber of Commerce, answer questions in LinkedIn groups, post instructive videos to YouTube, and so on.

Choose a few ways that you are comfortable with, and start. Be creative, use your imagination, find ways to stand out that represent you well, but above all make sure the channels you choose are populated with likely prospects. Try several approaches, track where your leads come from, and then concentrate on the avenues that prove fruitful.

12. Replace yourself

Eventually you may decide that you've had enough of being responsible for every aspect of your business; that's the time to replace yourself. You can replace yourself with one person, if it's the right person. More likely, your responsibilities will be divided among multiple people. This can be good, especially if the people you find share your philosophy and work ethic and are better at their jobs than you are.

Finding the right people can take a lot of effort, and you may have to go through a few to find the right one. It's best to test and fire early rather than invest too much time in trying to train or educate someone who is not up to your standards.

13. Take care of your primary asset

The primary asset of your business is you. If you become burned out, or ill, or your skills get out of date, your business will suffer. There are no sick days, there are rarely vacations, and deadlines don't care how you feel.

Be aware of new developments in your field, but spend R&D time wisely -- not only on things your clients want, but also on things that excite you.

Occasionally turn off the computer and go outside. Socialize with friends, spend quality time with family and loved ones, read a nontechnical book, and enjoy being human.

Most importantly, when the going gets rough, take time to recharge and remember why you started this journey. The payoff of time off to refocus is tremendous.

21 Best Free Open Source Databases

21 Best Free Open Source Databases

As a developer or DBA, you must be using some of the widely used databases like MS SQL Server, MySQL, Oracle, PostgreSQL, MongoDB etc. MySQL is the best free open source database which is used today, that we all know. Beside MySQL there are a lot of free and open source databases which you might not be knowing or never used. Some of the free free and open source databases are PostgreSQL, MongoDB, HBase, Cassandra, Couchbase, Neo4j, Riak, Redis, Firebird and lot more. I am using Firebird in my current project which with Delphi XE4. I have compiled a list of 21 Best, Free and Open Source Databases available to us. Lets have a look at them:

1. MySQL

The most widely used open source database for Web apps (and many other things) remains MySQL. Support for multiple storage engines, clustering, full-text indexing, and plenty of other professional features have allowed numerous other apps profiled here, from WordPress to Movable Type, to rely on MySQL as their default database. Graphical front ends, such as phpMyAdmin and Adminer, make using the database far less of a chore. And for those seeking escape from the long shadow of Oracle, there's a community fork named MariaDB, maintained by MySQL's original lead developer, Monty Widenius.

2. PostgreSQL

When Oracle acquired MySQL, reduced the development staff, and more or less killed the open source nature of the project, it reopened a market that MySQL had locked down. PostgreSQL has a much nicer set of drivers and supports both standard ANSI-SQL and extended features, in many cases better than MySQL. On the downside, its long legacy has left it multiprocess in the era of multithreaded. The high-availability/clustering features of PostgreSQL require a lot of elbow grease and leave much to be desired. Yet while organizations look for a community developed database, one of the eldest starts to look pretty good. Many cloud providers, such as Heroku, have chosen PostgreSQL as their RDBMS storage option as well.

3. MongoDB

NoSQL? Document database? The first name that comes to mind is MongoDB, due to a dual-edged blade from developer 10gen. On one side, MongoDB has strong venture capital and consequently an extensive marketing strategy. On the other side, it is the only comparatively mature document database in the NoSQL world. Highly scalable horizontally with automated sharding and highly available due to autoreplication, MongoDB offers a very reliable and yet simple solution to modern document database problems. The downsides: Working with stored procedures can be difficult, and performing data manipulation can require writing complex JavaScript code.

4. Hadoop (HBase)

Hadoop is the name brand in big data. It is also the convergence of "clustered storage" systems like Gluster and Ceph with NoSQL. Hadoop is really a collection of projects to solve large and complex data problems. In fact, there are multiple types of databases and query languages built on the overall Hadoop framework. Hadoop's complexity is as legendary as its capability, and its lack of high-availability features has both held it back and created a commercial add-on ecosystem.

The project aims to host very large tables like "billions of rows, millions of columns". It has a REST-ful web service gateway that supports XML, Protobuf, and binary data encoding options.

5. Apache Cassandra

Written in Java, this BigTable-based key-value database is getting more popular by the day. Open source and built to integrate with Hadoop, Cassandra offers the column family solution to developers wanting to move away from the relational database model while working with Hadoop. Focusing mainly on getting in very fast writes and providing high availability, Cassandra has slower reads than some alternatives. It is mostly used for logging purposes and real-time analysis.

Cassandra is a highly scalable second-generation distributed database that is used by giants like Facebook, Digg, Twitter, Cisco & more. It aims to provide a consistent, fault-tolerant & highly available environment for storing data.

6. Couchbase

While Couchbase was a fork of CouchDB, it has become more of a full-fledged data product and less of a ball of framework than CouchDB. Its transition to a document database will give MongoDB a run for its money. It is multithreaded per node, which can be a major scalability benefit -- especially when hosted on custom or bare-metal hardware. With some nice integration features, including with Hadoop, Couchbase is a great choice for an operational data store.

7. Neo4j

The database for interconnected data, Neo4j provides a reliable Java-based platform for conquering highly interconnected database problems. Available with full ACID transaction compatibility -- rare in a NoSQL database -- Neo4j has a SQL-like query language called Cypher and a scripting language called Gremlin for graph traversals. Best used to accurately and efficiently model highly complex, interconnected networks like network topologies, social networks, and conditional access control problems, it provides indexes on nodes and relationships. Direct path calculations take hundreds of lines of code for a RDBMS but two lines of code for Neo4j.

8. Riak

An open source distributed database written in Erlang and C, Riak treats all nodes equally. No one is a master or a slave. Thus, there is no fear a master will be a single point of failure. However, the masterless, fully distributed model with SNMP monitoring is not available in the open source version. Much simpler than its peers (such as Cassandra), Riak is optimal for places where even seconds of downtime would hurt.

9. Redis

There are many NoSQL databases, but Redis remains close to our heart because it has so many features that some call it a "data structure store." You don't just store numbers and strings -- you can dump in entire hashes, lists, sets, and other complicated structures. Then, to make the deal sweeter, Redis offers replication and persistence.

Redis is an advanced fast key-value database written in C which can be used like memcached, in front of a traditional database, or on its own. It has support for many programming languages & used by popular projects like GitHub or Engine Yard. There is also a PHP client named Rediska for managing Redis databases.

10. Firebird

Firebird is a relational database that can run on Linux, Windows & various UNIX platforms. It offers high performance and powerful language support for stored procedures and triggers.

11. Memcached 

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering. It is intended for use in speeding up dynamic web applications by alleviating database load.

12. Oracle Berkeley DB

It is an embeddable database engine that provides developers with fast, reliable, local persistence with zero administration. Oracle Berkeley DB is a library that links directly into your application & enables you to make simple function calls rather than sending messages to a remote server for a better performance.

13. Hypertable

Hypertable is a high performance distributed data storage system designed to support applications requiring maximum performance, scalability, and reliability. It is modeled after Google's BigTable and mostly focuses on large-scale datasets.

14. Keyspace

It is a consistently replicated, fault-tolerant key-value store that works in Windows OS. Keyspace offers high availability by masking server/network failures & appearing as a single, highly available service.

15. 4store

4store is a database storage and query engine that holds RDF data. It is written in ANSI C99, designed to run on UNIX-like systems & offers a high performance, scalable & stable platform.

16. MariaDB

MariaDB is a backward compatible, drop-in replacement branch of the MySQL® Database Server. It includes all major open source storage engines + the Maria storage engine.

17. Drizzle

It is a fork of MySQL that focuses on being a reliable database optimized for Cloud and Net applications.

18. HyperSQL

It is a SQL relational database engine written in Java. HyperSQL offers a small & fast database engine which has in-memory and disk-based tables, supports embedded/server modes. Also, it has tools such as a command line SQL tool & GUI query apps.

19. MonetDB

MonetDB is a  database system for high-performance applications in data mining, OLAP, GIS, XML Query, text & multimedia retrieval.

20. Persevere

It is an object storage engine and application server (running on Java/Rhino) that provides storage of dynamic JSON data for rapidly develop data-driven JavaScript-based rich internet applications.

21. eXist-db

eXist-db is built using XML technology. It stores XML data according to the XML data model & features efficient, index-based XQuery processing.

About the Author

I have more than 10 years of experience in IT industry. Linkedin Profile

I am currently messing up with neural networks in deep learning. I am learning Python, TensorFlow and Keras.

Author: I am an author of a book on deep learning.

Quiz: I run an online quiz on machine learning and deep learning.