Saturday, May 30, 2015

Stuffs on Development


Apache Cassandra
The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages. Cassandra's data model offers the convenience of column indexes with the performance of log-structured updates, strong support for denormalization and materialized views, and powerful built-in caching.

NoSQL (often interpreted as Not only SQL) database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. Motivations for this approach include simplicity of design, horizontal scaling, and finer control over availability. The data structures used by NoSQL databases (e.g. key-value, graph, or document) differ from those used in relational databases, making some operations faster in NoSQL and others faster in relational databases. The particular suitability of a given NoSQL database depends on the problem it must solve.
NoSQL databases are increasingly used in big data and real-time web applications.[3] NoSQL systems are also called "Not only SQL" to emphasize that they may also support SQL-like query languages. Many NoSQL stores compromise consistency (in the sense of the CAP theorem) in favor of availability and partition tolerance. Barriers to the greater adoption of NoSQL stores include the use of low-level query languages, the lack of standardized interfaces, and huge investments in existing SQL.[4] Most NoSQL stores lack true ACID transactions, although a few recent systems, such as FairCom c-treeACE, Google Spanner (though technically NewSQL database), FoundationDB and OrientDB have made them central to their designs.

Your Ultimate Guide to the Non-Relational Universe!

Build powerful concurrent & distributed applications more easily. Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM. The power of Akka is also available on the .NET Framework and Mono via the Akka.NET project.


AngularJS is a JavaScript framework. It can be added to an HTML page with a script tag. 
AngularJS extends HTML attributes with Directives, and binds data to HTML with Expressions.

Sencha Ext JS is the most comprehensive MVC/MVVM JavaScript framework for building feature-rich cross-platform web applications. Ext JS leverages HTML5 features on modern browsers while maintaining compatibility and functionality for legacy browsers.Ext JS features hundreds of high-performance UI widgets that are meticulously designed to fit the needs of the simplest as well as the most complex web applications. Ext JS templates and layout manager give you full control over your display irrespective of devices and screen sizes. An advanced charting package allows you to visualize large quantities of data. The framework includes a robust data package that can consume data from any backend data source. Ext JS also offers several out-of-the-box themes, and complete theming support that lets you build applications that reflect your brand. It also includes an accessibility package (ARIA) to help with Section 508 compliance.


Representational State Transfer (REST) is a software architecture style consisting of guidelines and best practices for creating scalable web services.[1][2] REST is a coordinated set of constraints applied to the design of components in a distributed hypermedia system that can lead to a more performant and maintainable architecture.[3]
REST has gained widespread acceptance across the Web [4] as a simpler alternative to SOAP and WSDL-based Web services. RESTful systems typically, but not always, communicate over theHypertext Transfer Protocol with the same HTTP verbs (GET, POST, PUT, DELETE, etc.) used by web browsers to retrieve web pages and send data to remote servers.[3]
The REST architectural style was developed by W3C Technical Architecture Group (TAG) in parallel with HTTP 1.1, based on the existing design of HTTP 1.0.[5] The World Wide Web represents the largest implementation of a system conforming to the REST architectural style.
A widely established design pattern for REST interfaces involves a number of resources (e.g. '/person/paul') that can be operated upon with standard HTTP verbs (e.g. "DELETE /person/paul").

SOAP, originally an acronym for Simple Object Access protocol, is a protocol specification for exchanging structured information in the implementation of web services in computer networks. It usesXML Information Set for its message format, and relies on other application layer protocols, most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP), for message negotiation and transmission.

Data Interchange Format
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.
JSON is built on two structures:
  • A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.
  • An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.
These are universal data structures. Virtually all modern programming languages support them in one form or another. It makes sense that a data format that is interchangeable with programming languages also be based on these structures.

XML is a markup language for documents containing structured information.
Structured information contains both content (words, pictures, etc.) and some indication of what role that content plays (for example, content in a section heading has a different meaning from content in a footnote, which means something different than content in a figure caption or content in a database table, etc.). Almost all documents have some structure.
A markup language is a mechanism to identify structures in a document. The XML specification defines a standard way to add markup to documents.

json vs xml

Arduino is an open-source computer hardware and software company, project and user community that designs and manufactures kits for building digital devices and interactive objects that can sense and control the physical world. Arduino boards may be purchased preassembled, or as do-it-yourself kits; at the same time, the hardware design information is available for those who would like to assemble an Arduino from scratch.
The project is based on a family of microcontroller board designs manufactured primarily by SmartProjects in Italy, and also by several other vendors, using various 8-bitAtmel AVR microcontrollers or 32-bit Atmel ARM processors. These systems provide sets of digital and analog I/O pins that can be interfaced to various expansion boards (so-called shields) and other circuits. The boards feature serial communications interfaces, including USB on some models, for loading programs from personal computers. For programming the microcontrollers, the Arduino platform provides an integrated development environment (IDE) based on the Processing project, which includes support for C and C++ programming languages.

Node.js is an open source, cross-platform runtime environment for server-side and networking applications. Node.js applications are written in JavaScript, and can be run within the Node.js runtime on OS X, Microsoft Windows, Linux, FreeBSD, NonStop, IBM AIX, IBM System z and IBM i. Its work is hosted and supported by the Node.js Foundation, a Collaborative Project at Linux Foundation.
Node.js provides an event-driven architecture and a non-blocking I/O API that optimizes an application's throughput and scalability. These technologies are commonly used for real-time web applications.
Node.js uses the Google V8 JavaScript engine to execute code, and a large percentage of the basic modules are written in JavaScript. Node.js contains a built-in library to allow applications to act as a Web server without software such as Apache HTTP Server or IIS.
Node.js is gaining adoption as a server-side platform and is used by IBM, MicrosoftYahoo!WalmartGroupon, SAP, LinkedIn, Rakuten,PayPal, Voxer, and GoDaddy.

Jenkins is an open source continuous integration tool written in Java. The project was forked from Hudson after a dispute with Oracle.
Jenkins provides continuous integration services for software development. It is a server-based system running in a servlet container such as Apache Tomcat. It supports SCM tools including AccuRevCVSSubversionGitMercurialPerforceClearcase and RTC, and can execute Apache Ant and Apache Maven based projects as well as arbitrary shell scripts and Windows batch commands. The primary developer of Jenkins is Kohsuke Kawaguchi.[2] Released under the MIT License, Jenkins is free software.
Builds can be started by various means, including being triggered by commit in a version control system, scheduling via a cron-like mechanism, building when other builds have completed, and by requesting a specific build URL.

Sunday, May 24, 2015

The PMP - How it Ruined Project Management

There has always been a class of worker that is paid for their labor, not for their expertise. There is a reason they were called “laborers”. The IT professional used to be part of the workforce where they were highly skilled and earned a premium for their experience. Now employers, often while employing contract IT labor through agencies, look for a few base criteria, and then differentiate only on price. The IT professional might not be digging ditches, but they are now a “laborer”.
There are several reasons for this. The first is the rise in “Certification”. As a Project Manager, I used to earn a healthy consultant’s rate while using my experience as an engineer, to implement complex technical solutions. I had to be able to communicate with the developers, architects, DBAs, Network, Operations, and I could, because I had already served my apprenticeship as a developer and Systems Engineer. I was now the Lead of a group of IT staff, themselves skilled and experienced. Then along came the PMP. About 2007/8 I noticed jobs that needed the PMP qualification. There is value for a young neophyte in Project Management in pursuing the qualification since it would help develop them as a PM. Instead, I (without a PMP) was losing out to being presented for consultant opportunities. Agencies would explain, “We love your 20 year experience, but they will throw us out if we present anyone without a PMP.” They explained that it was better to present a resource with 5 years experience and a PMP, than a 20 year veteran without a PMP. So I begrudgingly got the PMP. It wasn’t that hard, but now I faced the issue of being presented against someone who had little experience in Project Management, or Engineering, or Management. Hey -We both had the PMP so we must be equally qualified, right! And I (no surprise) am more expensive with 20 years experience than someone who has only been out of school for 5 years. I had become a commodity, and when you are an expensive commodity, you are facing a tough road.
The result in hiring cheap, inexperienced PMs has now degraded the profession. You can’t assign leadership of a complex project to a “green bean” with a PMP, so instead of hiring an experienced PM, you dumb down the job requirement. The duties of a PM have switched from someone who identifies and solves your problems, and lead solutions, to someone who can maintain the project schedule, arrange meetings, and track actions on spreadsheets.  The Project Manager is now a low level functionary, so I have been struggling to give myself a more accurate title. I thought about calling myself a System Integrator, since that is often used by the Big 4 as they trundle in their high priced consultants, since the perception is that only a Big 4 company has the expertise to deliver on complex projects. Unfortunately, behind the curtain of the Senior Partner of the Big 4, is a school bus filled with eager, intelligent newbies, who can carry your water, but don’t expect them to identify and solve problems. To be fair to them, they just haven’t had the advantage of experience or maturity to develop enough wisdom to know how to be insightful or versatile. In the new paradigm, if they are called ‘Project Managers”, what can I call myself to try and highlight the difference in quality? Project Director perhaps, a nod to the fact that I have operated at Director or VP level ? Maybe “Program Manager” since there is a connotation that a Program is bigger than a project. Unfortunately, the Program manager has suffered the same degradation in responsibilities and now is responsible for managing the Methodology. 
The Curse of the Methodology:  Instead of having the PM work out what needs to be done and then the PM taking care of it, (all behind the scenes), there emerged methodologies (PMP or otherwise) that try to ensure that the PM follows the menu of daily activities. Don’t get me wrong, a lean methodology to enforce good governance is a good thing, but on my last engagement, every project (big or small) had to lodge a minimum of 21 documents, and often as many as 40. These documents are lengthy, repetitive, and take weeks of the PM and other team members to fill out. Then they all go into the archive where they will never be read. I even heard the head of the PMO complain that they thought a step was common sense until the inexperienced PMs kept missing it, so they instead developed another document and checklist to try and generate the activity. Instead of tackling the symptom, they should be tackling the illness – inexperienced (but certified!) PMs. The most important part was that the documents were completed, not that they were read or were useful. The document load got so great, they even developed a portal to keep track of all the documents that were submitted. The documents were poor quality since everybody knew they weren’t useful, so the PMO then started layering multiple signoffs for each document by individuals or committees. The number of people needed to deliver on simple projects now mushroomed, all dependent on the paperwork mill. It was not in anyone’s interest to challenge this since the PMO and the governance committees were dependent on this activity for their existence at the company. Reduce the burden on the project, and you would have to let go 75% of the non-productive overhead.  
And this is just my story. It could be said for all the IT profession. When you hire a developer, you look to see if they have specific experience in a particular language. They do, but when they arrive, they are only as useful as the direction you can give them, and since the PMs themselves are equally inexperienced, the product is inadequately formed. The experienced developer (who would have intuitively known and guided the Product manager what was best for the product development) is him/herself trying to differentiate on experience but losing on price to the cheapest commodity.
The solution for these problems is for hiring managers to rise up, reject the cheapest candidates presented by the vendor management system, and explain that they need experienced assistance from IT professionals.  You should expect more of your IT professional and then make sure you get candidates who can meet those expectations; don’t dumb down all these professions. In the end, you get what you pay for, and I’m still the cheapest insurance against failure you can get.

Consultant Project Executive

Friday, May 8, 2015

Want a $9 computer?

The cost of computing keeps getting lower as a project to launch a $9 machine takes to Kickstarter. 

 Image: Next Thing Co.

If you thought the $35 Raspberry Pi was as cheap as computing could get, then think again. How about a board for just $9?
Launched on Kickstarter, CHIP will pack a 1GHz processor, 512GB of RAM, 4GB Flash storage, 802.11n Wi-Fi and Bluetooth 4.0 connectivity into a tiny machine measuring 4cm by 6cm, or 1.5 by 2.3 inches.
The US-based makers claim the board's low price stems from using an Allwinner A13-based chip, which is already used in large volumes in Android tablets, set-top boxes and Linux-based mini-PCs.
On paper, the board should be faster than a first-generation Raspberry Pi Model B+, due to the higher clock speed and more modern ARM-based architecture of its Allwinner R8 system on a chip.
The machine is being pitched as a general-purpose PC, suited to writing documents, browsing the web, playing simple games and learning to code.
However, reviews of the low-cost Android tablets based on the same Allwinner A13 core as the board complain about lag in apps, hitching when browsing heavy web pages and dropped frames in more demanding 3D games such as Raging Thunder. But video playback at 1080p was found to be flawless.
The board comes with the Linux-based Debian OS and Chromium browser, GIMP image editor, LibreOffice, Scratch programming tools and other software pre-installed.
Its designers are describing the board as "totally open source", saying the hardware design files, PCB layout and bill of materials are free to download, modify and use. However, the choice of an Allwinner chip is likely to be unpopular with some, due to Allwinner's run-ins with the open-source community over how it manages code for its boards.

CHIP can also be turned into a portable machine by fitting it inside a case with a small keyboard and touchscreen. The PocketCHIP case will include a 4.3-inch 470 x 272 resistive touchscreen, small QWERTY keyboard and a 3,000mAH battery. PocketCHIP is available for $49. If that's too expensive, for $19 the board can be ordered with a 3,000 mAH LiPo battery that CHIP's makers say supports hours of use
Peripherals can be connected to the single USB port and displays hooked up via the built-in composite port or using an adapter for VGA or HDMI. CHIP can be powered via battery, 5V DC wired input or the microUSB port. For hardware hackers the board has eight general-purpose input-output pins, one PWM pin, SPI, TWI, UART, USB, MIPI-CSI, Parallel LCD output, touchpanel input, and power rails in and out.
However there are several caveats. Like all Kickstarter projects, there is no guarantee of receiving a finished product and the board is not due to ship to most backers until one year from now.
Also, while the board might cost just $9 on its own, shipping outside America costs $20, compared with $5 within the US.
The project is currently funded almost three times over, having raised more than $140,000 against a $50,000 goal.