Category Archives: General – Techy

This category will have general technical information apart from SharePoint

Grow Your Technical Skills with Google

https://techdevguide.withgoogle.com/

Advertisements

Selecting an Enterprise Content Management (CMS) – Part 2

In continuation to my previous article on – “Selecting a Content Management System that supports Your Business”, I thought of writing this article on selecting an Enterprise CMS. Now days, Mobile, Big Data and E-Commerce are causing drastic changes in the business landscape and all those companies who ignored their online presence are at the risk of losing customers and revenue. That is why many companies are looking to invest in Content Management Systems.

In my view, the business objective is to extend the reach and engagement of the customers, and the system must be secure and flexible enough to cater to the changing business needs.

In this article, I have tried to explain the following key considerations while choosing a Content Management System:-

  1. Enterprise hosting
  2. Security
  3. Performance
  4. Scalability

Hosting Environment

When it comes to configuring your hosting environment, there are many options and possibilities depending on number of expected visitors during peak traffic loads, application size in terms of number of pages and content items, business logic computations, security considerations, the business cost of application downtime, etc.

There can be scenarios where a single machine hosts many websites and the same machine runs both the web application and the database. However, this type of configuration is more suitable for development environments and not recommended for production environments.

The more available RAM for the SQL Server, the better your website will perform. That is because you will have more memory available for data caching. It is a good idea to use multiple high-speed hard drives for the database server. Dedicate one drive to store database logs, another for data files, another for temporary storage (e.g. tempdb) and another for the server operating system. One of those hard disks can be used to store regular backups of the database or it can be dedicated to backup storage. Note that those are just performance optimization tips for the SQL Server. You can start with a common hard drive for everything, and then offset the load on different hard drives for better I/O of the server as database size and number of queries grow.

Load-Balanced Environment

If you are having two or more web application servers, it is always recommended to host these servers in a load-balanced environment with one dedicated database server and a second one on standby in a failover configuration. This configuration provides better performance during peak traffic load times and eliminates the single point of failure on your application and database servers.

It is also possible to achieve a highly available and scalable environment by eliminating all single points of failure, including the load balancer. The recommended practices are-

  1. Always store the code base on a distributed file system.
  2. Use load balancers and firewalls configured in High-Availability mode (Active/Passive)
  3. Configure output and client-side caching
  4. Use a Content Delivery Network (CDN) for static content and cache everything on the CDN’s front edge servers.

Security

Security is the major concern that needs to be taken into account as it covers the software, environment, people and processes. The focus must be given on data and application security and no organization can compromise on these concerns. The recommended practices are-

  1. Check for Authentication and Single Sign-0n (SSO) mechanism of the CMS
  2. Check for the compliance of the CMS with the industry standards (For E.g. – Compliance with FIPS – Federal Information Processing Standards)
  3. Check for common threats (For E.g. – OWASP threats) that whether the CMS is capable enough to address these types of security threats.

Performance

Users have ever-increasing expectations about browsing speed. Performance is a critical responsibility shared by the application, the hardware, the developers and the administrators. Hitting load-time goals at the desired millisecond level can only be achieved with alignment between software features, optimization best practices and the right hosting solution.

A content management system is at the centre of this entire process. Your CMS must enable developers to gain full control over how the HTML, CSS and JavaScript are handled, provide configuration options to administrators at the granular level, and facilitate caching at scale and expose APIs and mechanisms that align any custom development with the core framework.

The challenge is to achieve a very dynamic content management in the backend, while appearing static to visitors, regardless of the scale of content, users or hardware.

The CMS that you selected must provide the following:-

  1. Rich configuration options for browser and output caching.
  2. Sophisticated content-aware cache invalidation mechanisms.
  3. Tight integrations with various storage cloud providers.
  4. Scalability to cater hundreds of concurrent users.

Scalability

It is not uncommon for a business to have to scale to thousands of users, and while this is a good problem to have, it usually requires thinking in terms of scaling up with hardware, which should not break your bank if you have the right software optimizations in place.

Having the right load balancing support is crucial to meeting those scalability demands—and load balancing is not only responsible for routing different people to different servers. Its main, yet very subtle, responsibility is to provide the integrity of content and sessions regardless of how the load-balancer distributes the requests.

The selected CMS should take care of output cache synchronization and should support various hardware devices and software frameworks.

An important aspect of large-scale projects is to separate the staging servers from the production servers and enabling content authors to prepare and synchronize content on an as-needed basis, usually in low traffic time-frames.

At last, I want to mention that the CMS, which you have chosen for your organization, must adheres to the above basic considerations.

Selecting a Content Management System that supports your Business

Recently, one of the customer asked for a Content Management System (CMS), and being a SharePoint developer and consultant, I proposed SharePoint Server as CMS. Afterwards, by analysing different CMS in the market, I thought of writing this article and will focus mainly on a CMS named – “Sitefinity” (http://www.sitefinity.com/).

Why Invest in a CMS?

Before deciding to buy a Content Management System (CMS), you want to get a clear idea of how a new platform will support your business goals. What kind of technology do you need to look for? Moreover, is it possible to predict what will work and what will not in a year?

What to look for

The key parameters that I think should be taken into consideration when choosing a CMS are-

  1. Managing experiences
  2. Extensibility and integration with key business systems
  3. Costs and pricing models
  4. Multi-device strategies
  5. Content creation and multi-channel publishing
  6. Governance and reporting tools

Managing experiences

Questions to consider:-

  1. What does my customer journey look like and where are the digital touchpoints?
  2. How does the CMS support personalization?
  3. How does the CMS support content through multiple channels?
  4. How does the CMS allow me to track and report user behaviour?
  5. How will the CMS become an asset in my overall customer experience management?

Extensibility and integration with key business systems

Questions to consider:-

  1. Is the CMS designed to integrate out of the box?
  2. Is it possible to integrate user data with analytics from other platforms?
  3. How often will I need to update and integrate with new applications?
  4. How often will I need to update functionalities?
  5. Which business systems do I need to integrate with?
  6. How many of my required functionalities are standard in the CMS?
  7. Will I have the support of in-house developers or will I need to buy outside help when integrating or developing? 

Costs and pricing models

Questions to consider:-

  1. What is the total cost of ownership, including licences, support, development, hosting?
  2. Does the license scale with additional servers without adding extra cost?
  3. What is the cost of upgrades and if applicable new modules?
  4. What will it cost you to maintain and support your mobile endeavours.
  5. What kind of licensing model will fit your organization


Multi-device strategies

While deciding for multiple devices, the first and foremost should be always mobile and tablets. Start with implementing the mobile touchpoints where you gain the most. When looking at a new enterprise CMS, look at how it can support customer experience management with respect to mobile. You want to look at whether the backend allows you to track, assess, develop, test and preview on multiple devices.

Content creation and multi-channel publishing

Questions to consider:-

  1. How user-friendly is the dashboard?
  2. How easy is it to create new content?
  3. Can you manage the customer journey?
  4. How easily can the content be reused and published in multiple channels? 

Governance and reporting tools

Questions to consider:-

  1. How user-friendly is the dashboard?
  2. How seamless is the back-end user experience?
  3. Can you set up user administration that fits your organization?
  4. What kind of workflows can you set up?
  5. Is the CMS born with quality management and reporting tools, or does it integrate easily with third party tools?

Summary: I would suggest the following steps, which needs to be followed before buying a CMS:-

  1. Define goals and strategies
  2. Define your business case
  3. Know your data or content
  4. Talk to your users
  5. Organisation and governance
  6. Resources
  7. Requirements

 About Sitefinity

Sitefinity is a Web Content Management System (Licensed, free for a limited time) of the company Telerik. It is much like SharePoint Server and having almost all the features required for a content management system.

Below are some of the important links for Sitefinity:-

  1. Sitefinity Support – http://www.telerik.com/support/sitefinity
  2. Sitefinity System Requirements – http://www.sitefinity.com/resources/system-requirements

If you will download the free trial, you will be given a Project Manager called “Sitefinity CMS Project Manager” in which you can create multiple projects or applications.

 

In addition, for custom development, Sitefinity provides an addin called “Sitefinity Thunder” which will be added in Visual Studio:-

 

Google Spreadsheet – How to put indent to a spreadsheet cell

Today I was working in Google spreadsheet (Google Sheet) for preparing effort estimation for one of the project. Then I realized the need of indentation to move the text of one of the cell to right (to visually show grouping), however I struggle with this for so long but didn’t found any option. After more of exploration on Internet, found a very interesting solution and thought of sharing the same in this blog.

The best solution is to write a script.

To do this open up the spreadsheet and select menu item “Tools” –> “Script Editor”
Once the script editor opens copy and paste the following code into the “Code.gs” window:

var ss = SpreadsheetApp.getActiveSpreadsheet();

function indentText() {
  var values = ss.getActiveRange().getValues();
  var newValues = new Array();
 
  for (i = 0; i < values.length; i++) {
    if (values[i][0] != ”) {
      newValues.push([‘=CONCAT(REPT( CHAR( 160 ), 5),”‘ + values[i][0] + ‘”)’]);
    } else {
      newValues.push([”]);  
    }
  }  
  ss.getActiveRange().setValues(newValues);  
};function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : “Indent Text”,
    functionName : “indentText”
  }];
  sheet.addMenu(“Indent Text”, entries);
};

Go to menu “File” –> “Save”

Return to your spreadsheet and reload the browser.  You should now see a new menu item called “Indent Text” to the right of the “Help” menu.

What this code does is add a menu to the spreadsheet document called “Indent Text”.
Within this menu it will create a menu item called “Indent Text”.
When the “indent Text” menu item is selected any cells within a single column selection will be indented by 5 spaces.

You can increase or decrease the number of spaces the text is indented by changing the line below so that the “5” is changed to a larger or smaller number (depending on your preference)

newValues.push([‘=CONCAT(REPT( CHAR( 160 ), 5),”‘ + values[i][0] + ‘”)’]);

Hope people find this useful. 🙂

Top 10 Websites To Learn Coding Online

Below is the information about 10 websites that can teach you programming languages like HTML, CSS, PHP, Ruby and even iOS. Pick up tips, screen-casts and even best practices from industry professionals.

Codecademy
Codecademy is indisputably the most famous website to teach you to code interactively, thanks to its helpful interface and well-structured courses. Upon visiting the main page, you can already start tasting the programming right away, with its motivating on-screen console. Pick a course that Codecademy offers from Web Fundamentals, PHP, JavaScript, jQuery, Python, Ruby and APIs.
Inside each lesson is a panel that explains necessary code and instruction. Another panel allows you to get your hands dirty by writing acceptable code, then checking if you are doing the right thing. Don’t worry about making mistakes, as both instruction and code panels will warn you of errors, and provide hints. It is as if there’s a kind teacher right beside you.
Code Avengers
Code Avengers is designed to make you love programming. Though it only offers HTML5, CSS3 and JavaScript course for now, each of the courses is carefully designed to truly entertain you while leveling your programming skills painlessly. At the end of each lesson you also get to play a mini game to release your cumulated stress, and keep you going for longer.
Code Avengers has a gradual approach to interactive learning. It does not explain too much knowledge that isn’t essential for beginners, just a bit of code and playful instruction, making things very easy to digest. You also get to play with the code, then see the impact of the changes immediately. It is carefully crafted with the beginner’s comfort in mind.
Code School
After you finished courses in Codecademy or Code Avengers, and you are ready to further expand your capabilities, Code School is the next quality website you should land on. Unlike most interactive learning sites, Code School offers more in-depth courses to train and turn you into an expert with the industry’s best practices.
Overall, the courses are categorized into 4 main paths, and they are
1.Ruby
2.JavaScript
3.HTML/CSS
4.iOS
Almost all courses are aggressively polished with impressive design and informative screencasts, though the challenges after the screencast might bit a bit hard for amateurs. Luckily, there are hints and answers to refer to. While most of the offered courses are free, certain ones will require you to spend $25/month to access the entire course including all screencasts and challenges, and also all other courses in Code School.
Treehouse
Treehouse courses are more project-oriented than language-oriented, so they are perfect for novice programmer with a planned purpose, such as building a website, or an application. For example, the Websites course is all about building a responsive website, interactive website or even WordPress theme – a very practical and efficient way to master related languages. Nonetheless, they have released a plethora of foundation courses with a video-then-quiz approach.
For Treehouse, every course is divided into different stages or modules, and beyond every first stage the learner will be invited to pay a monthly subscription fee of $25 to access all courses with 650+ videos, and an exclusive Treehouse Members Forum as a bonus. If you are serious about your programming future, you could subscribe the $49 monthly plan to obtain in-depth interviews with leading industry pros and cutting-edge workshops.
LearnStreet
If you are that kind of personnel who do not fancy playful design and prefer to deal with cold hard codes, LearnStreet is probably your thing. It currently offers JavaScript, Python and Ruby courses at beginner level. With a click on the ‘Start Course’ button you will start the lesson with an exercise, a code interpreter and a glossary panel (for new programming terms).
LearnStreet adopts command prompt-styled code interpreters with human language to explain function and encourage you whenever possible, the kind of command prompt you want for your own local machine. However, the code interpreter could be as rude as standard command prompt, as most of the times it requires you to type in the absolute same code and content it asks for.
Other than that, it’s truly friendly and enjoyable, and most importantly, free.
Udacity
Udacity is the unification of insightful video lectures and improved quizzes to achieve the interactive feel for students, so it’s ideal for those who don’t like to read but rather get explanations from industry professionals such as Google employees.
You will be given a screencast from pros discussing the topics and instructions, then you will take either logic or programming quizzes to strengthen your understanding or forge it into a skill. The good thing about Udacity is it provides more videos than any other site, and the instructors are either real-life professors or industry veterans.
The only pitfall here is most courses are not much related to each other, so Udacity is probably not your starting point, but a virtual university to further your study.
CodeHS
At this point all websites you read here are mainly dedicated to web development and computer science, but CodeHS is one with simple and fun game programming lessons that involve problem solving, JavaScript, animation, data structures, game design and puzzle challenges.
The advantage of CodeHS is it teaches you to think, and solve a problem like a programmer with its first course, Programming with Karel. The lessons are fun as you will learn how to use the code to move the dog, Karel to complete given tasks and puzzles like picking up ball and building a towel. It plants a solid concept of programming and the way it solves the problem systematically in your mind.
Other than the course mentioned above, you must sign up first with $25 per month to continue your learning journey, but it’s a perfect site to learn basic game programming effectively.
Khan Academy
Although Khan Academy’s courses are not as structured as CodeHS, it serves as an open playground for both novice and amateurs particularly interested in learning drawing, animation and user interaction with code. It does not preach any specific programming language, but the code pattern it adopts can be applied anywhere, as a majority of languages share the similar programming pattern.
You can first join the Programming Basics course to watch and learn basic concepts, then explore the given code after the video tutorial to validate your doubts. With Khan Academy, you can save your modification as a Spin-Off for everyone to enjoy and customize. There have been hundreds of spin-offs just from one lesson in one course, so imagine the community size, and the lesson’s effectiveness.
Scratch 2.0
Think CodeHS and Khan Academy are still too hardcore for your child, who has no comprehension beyond basic English? No worries, there is something even easier for your aspiring next-gen programmer, and it’s called Scratch. Previously an offline software that allow kids to create, upload and share their projects proudly, Scratch is now fully online with its 2.0 successor.
It’s not about programming though, but a combination of visual blocks of commands that tell assigned objects how to behave, such as telling the cat to move 10 steps, or yell ‘meow’ when it touches the owner’s leg. By using this visual programming method, the young programmers will form a habit of breaking a problem into smaller blocks, and solve them one by one logically.
SQLZOO
Structured Query Language (SQL) is just a language purely designed to store and retrieve data from a database, so imagine the boredom you will experience when programming a warehouse. Yet SQLZOO wants you to learn SQL happily with its interactive interface and smileys.
Since there is really nothing too deep to explain for a straightforward language like SQL, the site will only ask you to replace the variables like city names or population number, and raise the difficulty from that level. One huge let-down will be the shortage of hints, answers and forum, so you are probably doomed if you fail to solve any one of the quizzes, just like old times.