Showing posts with label itconsulting. Show all posts
Showing posts with label itconsulting. Show all posts

Wednesday, October 15, 2014

Real-Time Communications via WebRTC

Your modern web browser is fabulous for consuming data: text, audio, and video; all natively. However, for the web's promise of real-time audio/video communication with others, you will need a browser plugin (e.g. Flash) or a different application altogether (e.g. Skype).   
The recent trend in application development is to create applications as a service and access via the web browser.  Users demand functionality found in traditional, native applications for example, drag & drop found in Windows and OS X applications.  The latest HTML 5 specifications meet many of these requirements, however, there still remains a gap in functionality. 


To enable native RTC functionality in browsers, Google Engineers have been busy developing and integrating an API into their Chrome web browser that allows developers to natively add peer-to-peer video conferencing, file sharing, and screen share functionality without plugins.  Additionally, there is work by W3C to standardize this API.  Both Firefox, and Opera already support experimental versions of WebRTC; however, Microsoft has no plans to support this API and instead plans to introduce its own competing API.  It will be interesting to see how this turns out, but given Google's clout over browser standards, WebRTC has a good chance of ultimately becoming the RTC standard for browsers. 


The possibilities for building, rich, collaborative, web applications, are significantly enhanced by this API, and is yet another step in establishing the web browser as one of the most powerful tools available to you. 


Tuesday, June 17, 2014

Leadership vs. Management

Throughout my career I’ve been fortunate enough to have great managers (and not so great ones) from which I’ve, equally, learned something: from the great ones what true leadership means and what it takes to be a good leader; from the not so great ones I’ve learned what mistakes to avoid. This is what I’d like to share with in this short post, and because I believe quotes are the best way to share the wisdom of ages, I’ll use them extensively.

A Leader Is...
“A good leader is a person who takes a little more than his share of the blame and a little less than his share of the credit.” — John C. Maxwell
This is one of the many quotes that best define what a true leader is, and what differentiate it from a manager. The true leader is selfless in the pursuit of team’s goals and success, often giving up personal goals and aspirations in the process. Be humble and people will notice your leadership more often than if you’re trying to make them aware of your achievements.

Boldness and Courage
"Courage is the enforcing virtue, the one that makes possible all the other virtues common to exceptional leaders: honesty, integrity, confidence, compassion and humility." — John McCain
I don’t think there is better way to say it. Courage is about taking (calculated) risks, going where no one has gone before, opening up new paths and trying new things. A true leader is one who doesn’t fear failing, but rather embraces failure because he/she can learn a lot from it. Leaders are those who not only go outside their comfort zone themselves, but who encourage and help others overcome they fear and do it.

Challenges and Difficulty
"Leaders aren’t born, they are made. And they are made just like anything else, through hard work. And that’s the price we’ll have to pay to achieve that goal, or any goal." — Vince Lombardi
Those who think leaders are only born are those who seek excuses all the time; excuses for not trying get better, for not searching to self-improve, for not trying new things. The path to leadership is very hard, that’s why those who succeed being good leaders are special and people around recognize them right away.

Character
"Character makes trust possible, and trust is the foundation of leadership." — John Maxwell
Character is the only attribute a great leader can’t learn. You either have it or not. Enough said.

Communication
"Earn the right to be heard by listening to others. Seek to understand a situation before making judgments about it." — John Maxwell
The art of communication is important not only to leaders. I personally believe that everyone should work on being a communicator to be successful in life. It’s incredible how many things one can achieve just by being able to say the right things; make no mistake though: I’m not talking here about being able to deceive others through carefully crafted words, but rather being able to convey to other what you truly hold in your heart.

There are so many other things to talk about leadership, but I promised to myself to keep this short and concise so I’ll end with two quotes that I love very much:

"The challenge of leadership is to be strong, but not rude; be kind, but not weak; be bold, but not bully; be thoughtful, but not lazy; be humble, but not timid; be proud, but not arrogant; have humor, but without folly." — Jim Rohn

"I've learned that people will forget what you said, people will forget what you did, but people will never forget how you made them feel." — Maya Angelou

We hope you have found this week’s edition of "To The Point" by Claudiu Tomescu to be helpful and informative. Look out for our next week instalment as we continue to explore unique topics from business to the latest technology.

We want to hear your point! If you have any ideas, suggestions or any questions about our weekly blog, please contact us at: info@pointalliance.com.

Warm regards,

Point Alliance Team

Tuesday, June 10, 2014

Exploring NoSQL database. What are they and how do they work?

Most modern applications use databases to store data in what’s known as a Relational Database Management Systems (RDBMS). RDBMS have evolved significantly since they were introduced in the 1970’s. They do have some drawbacks with certain types of applications. The relational model is too heavy as it has to parse, lock, log, keep track of buffer pools and spawn a lot of threads. In many types of applications however, RDBMS systems are perfect for the task.

NoSQL is non-relational, distributed with the ability to horizontally scale, high performance and highly scalable.

You would use a RDBMS if you need to have structured data, transactions, ACID capability, and simple or complex aggregations.

You would use NoSQL if you need high read/write throughput and unstructured or semi-structured data. NoSQL databases are usually simpler to implement as you don’t need to have an architect to design a relational model.

NoSQL databases provide schema free storage and allow indexing of individual fields for fast data retrieval. Data is stored in JSON (Binary JSON to be more specific). This means that you can store arrays and arrays inside arrays, making it very flexible for many types of applications.

If we were to build a simple blogging application that used NoSQL as a backend database.
We would need to create a Collection (table) that contains the blog information like Title, Date Published, Content, array of meta tags, array of comments by anonymous users.

When loading a specific blog, you have all the data with one query.

A JavaScript like language is used to query NoSQL databases. If you know JavaScript the syntax is easy to pick up.

An interesting fact about JavaScript: You can now write a complete end to end product using JavaScript. Web Browser and/or Apache Cordova for mobile, back end API with NodeJs, Database system with NoSQL.

What really sets NoSQL apart is the ability to distribute the data to multiple servers known as data sharding. Imagine that you have a multi-terabyte SQL database with millions or billions of rows of data in each table. Querying this much data becomes very expensive and tricky on a RDBMS system. You would need to have the right team with the right skillset and a big server or cluster of servers.

With a NoSQL solution, this is much easier. You would need to buy a bunch of commodity servers with lots of memory, and an initial configuration to shard your data. Your millions and billions of rows of data are now distributed between your physical commodity servers. For example, let’s say that you have 6 servers/virtual machines and 6 billion rows in total.
Once your data sharded each server will contain 1 billion rows of data that it can query. There are no changes to the application, your application still sees all 6 billion rows or data due to the underlying architecture of the NoSQL platform. If this was a RDBMS, it would need to keep track of all 6 billion rows of data.

A NoSQL system can offer a lot of ease when dealing with large data to scale horizontally and a quick start because the relational model does not need to be defined upfront (the application logic defines database model).

Some of the popular NoSQL database servers are MongoDB and CouchBase.

We hope you have found this week’s edition of "To The Point" by Fetbi Irsat to be helpful and informative. Look out for our next week instalment as we continue to explore unique topics from business to the latest technology.

We want to hear your point! If you have any ideas, suggestions or any questions about our weekly blog, please contact us at: info@pointalliance.com.

Warm regards,

Point Alliance Team

Tuesday, June 3, 2014

The internet browser challenge

In early 2001 I embarked on a project to build a centralized line of business application for a customer. The customer had numerous decentralized applications of varying technologies across their divisions globally. In an effort to make faster and better informed decisions and ensure no conflicts of interest occurred between their locations, the customer embarked on building a centralized application to serve their needs. Their chosen technology for any application development was java which required installing java and the application on each user’s desktop. This was not ideal, as there were challenges with managing the various java versions and the applications that used them as well as the IT support required to roll out the application and subsequent updates to each user’s desktop which numbered in the thousands. By this time, developers were also finding they could not build new applications using the latest version of java because installing java updates often broke existing applications. Java wasn’t the only one with this problem either, Microsoft (pre .NET) had similar issues. This was termed “dependency hell” or specifically “DLL hell” and ”JAR hell”.

At this time, internet browsers, although in in their early years of maturity, were showing promise as a platform for business applications. Thus the business case was made to build this customer’s solution as a browser based application. The business case looked at a number of factors for example:
  • Reduced IT support costs due to (a) Internet browser installed with the Windows operating system automatically and (b) the line of business application didn’t’ need to be installed on the user’s workstation
  • Globally accessible
  • Centralized business logic, security and data
  • Internet browser supported the level of UI required for the line of business application
  • Internet browser standards were supported across multiple browser with the creation of W3C (World Wide Web Consortium) and HTML 4 became an ISO standard
  • Eliminated dependency hell
  • Cross platform compatibility
Moving forward to 2014, we have followed a browser compatibility road of ups and downs, twists and turns. Even though leading browser vendors have been involved in the creation of web standards since the W3C was formed, these same vendors often failed to uniformly support those standards. This lack of conformity has caused a great deal of frustration for developers and users alike. Decisions on which browsers and browser versions to support have become critical to a project as those decisions can affect the budget of that project. It’s a decision based on whether the cost of development and testing is too high vs. the number of potential users that would be turned away.

Today, considerations are also needed for supporting mobile devices especially with the movement towards BYOD. Some organizations are even providing tablets instead of computers to their employees. HTML 5 and responsive design standards are starting to show promise for improved cross browser compatibility including mobile device browsers. However, HTML 5 and responsive design aren’t always the answer for some browser-based applications on mobile devices as they are too complex in functionality and too difficult to maneuver on a small screen. Additionally, a mobile device can easily be disconnected from their network (cellular or Wi-Fi) and thus the user could potentially lose any data they were entering into the browser-based application. Native applications installed on the mobile device are proving to be the better way to go for some functions including banking. But the diverse mobile device operating systems and their native development languages are providing challenges in containing IT development and support costs.

Organizations are still needing to contain IT development and support costs. Finding ways to help organizations achieve that goal is critical to helping those organizations stay current in their technology and achieving and maintaining their competitive edge. Decisions are still required to be made on which platforms to support. Do you support tablets and smartphones? Do you support Apple, Google, Microsoft and Blackberry? Which OS versions do you support? The emergence of cross platform application development environments for the major mobile device platforms is beginning to show promise with the ability to build one application that can be installed across multiple device platforms.

As technology advances and standards change, we constantly seem to be in a state of flux, never seeming to reach that goal of full standards compliance and cross platform compatibility. However, today we are definitely closer to achieving those goals than we were even a few years ago which provides better opportunities and fewer challenges for organizations wanting to modernize their older applications and web sites leveraging the newer standards.

We hope you have found this week’s edition of "To The Point" by Jan Crowe to be helpful and informative. Look out for our next week instalment as we continue to explore unique topics from business to the latest technology.

We want to hear your point! If you have any ideas, suggestions or any questions about our weekly blog, please contact us at: info@pointalliance.com.

Warm regards,

Point Alliance Team

Tuesday, May 20, 2014

MVC Bundling

The amount of style sheets and JavaScript files included with a website these days is staggering. As you develop solutions, it is becoming important to be aware of the amount of different style sheets and JavaScript files you are forcing the user to download on each request. A simple way of limiting the amount of these requests, while keeping your code separated in a logical way, is to implement bundling in your MVC Project.

If you have 12 different CSS files and 8 different JavaScript files in your solution, it’s easy to combine these into two different requests. In your App_Start folder, create a new class called BundleConfig. Within the class, create a public static void method called RegisterBundles() which will accept a BundleCollection object as a parameter. You then will add a ScriptBundle collection, and a StyleBundle collection to the BundleCollection.

See example below.

MVC Bundling - Screen Capture 1

Now, in your Application_Start() method within the Global.asax file, you call your bundling provider. A good idea is to enable optimizations only when building in release mode. When optimizations are enabled, the bundle will automatically combine each ScriptBundle and StyleBundle into one request, as well as minify each result.

MVC Bundling - Screen Capture 2

The last step is to modify your _layout.cshtml file to reference the bundles. In the BundleConfig file that we created, we created a name for each of the ScriptBundle and StyleBundles. You reference these in your layout using the following format.

MVC Bundling - Screen Capture 2

That’s it! You have now optimized your website, limiting the amount of requests done per page per user while allowing separation of your style sheets and scripts during development.

We hope you have found this week’s edition of "To The Point" by Kevin Doig to be helpful and informative. Look out for our next week instalment as we continue to explore unique topics from business to the latest technology.

We want to hear your point! If you have any ideas, suggestions or any questions about our weekly blog, please contact us at: info@pointalliance.com.

Warm regards,

Point Alliance Team