Tuesday, September 13, 2016

A Side-by-Side Comparison of AWS, Google Cloud and Azure

cloud services compared

Three main players of business cloud services have an array of products covering all you can possibly need for your online operations. But there are differences not only in pricing but also in how they name and group their services, so let’s compare one next to another and find out what they offer.

We'll focus on services provided by Amazon Web Services (AWS), Google Cloud Platform (GCP) and Microsoft Azure. We won't cover all of them, or get into much detail about the infrastructure of cloud computing. However, you will be exposed to many of the products you can use, and hopefully get familiar with some cloud concepts.

Why the Cloud

Iconic companies from both the public and the private sector --- such as Netflix, AirBNB, Spotify, Expedia, PBS, and many, many more --- rely on cloud services for supporting their online operations. This allows them to better focus on doing what they're known for, and let many of the technicalities be taken care of by an infrastructure that already exists and is constantly being upgraded. If they had to implement the physical infrastructure they actually need for their operations themselves, they would need an army of technicians, lots of extra budget and time, and many startups would never get past these technical challenges.

For everyone

But this is not limited to big names. Today, we live in a world in which both a huge business, and two youngsters at home with virtually no initial capital, can access world-class infrastructure for storage, computing, management and more, to make the next massive online service, and pay as they go --- literally --- by the hour.

Flexible (and sometimes intricate) pricing

What you pay will vary a lot depending and how much processing power you demand, how many instances (that is, how many virtual servers) you deploy, and where you deploy them (more on this on the “Locations” section). There will also be significant discounts for bulk usage. In any case, you'll have these advantages most of the time:

  • no upfront costs
  • no termination fees
  • pay only for what you use
  • per minute billing

For precise details, you'll need to read the pricing fine print of AWS, GCP and Azure.

Products vs Solutions

We will use the terms "products" and "services" rather indistinctly; a solution, however, is a more specific concept that you'll hear a lot about when dealing with cloud services. Simply put, a solution is a set of preconfigured products oriented to a very specific need, with plentiful documentation, use cases and testimonials that will guide you through the process of adopting the cloud infrastructure.

Some typical "canned" solutions are:

Let's Compare!

cloud service logos

Amazon introduced "commoditized" cloud computing services through its first AWS service launched back in 2004, and ever since then they kept innovating and adding features, which somehow allowed them having the upper hand in the business by building the most extensive array of services and solutions for the cloud. They are also, in many regards, the most expensive.

Google, and later Microsoft, came into the game and are quickly coming up to par, bringing their own infrastructure and ideas, offering deals, and pulling the prices down.

In this video, representatives of each company discuss their cloud strategies: Cloud Wars: Amazon (AWS) vs. Google (GCP) vs. Microsoft (Azure):

Compute

cloud services analytics compute

This is what computers are for, after all: to calculate, to process data --- to compute. If you need faster processing for graphics rendering, data analysis or what have you, you can either buy more hardware, or you can go on the cloud.

Sure, if you buy the hardware you own it, it's an asset, but you're also paying for all of the idle time when the computers are not doing any actual processing, plus all of the maintenance that comes with it, which can go really high if you build a data center.

When you go on the cloud, on the other hand, you just pay for what you use and you can scale to thousands of processing nodes in a few minutes (and blow your credit card while at it, if you're not careful).

Elastic Compute Cloud (EC2) is Amazon's flagship for scalable computing on demand, competing with Google's Compute Engine and Azure's Virtual Machines and Virtual Machine Scale Sets. Amazon's service is the most comprehensive, but as mentioned, the pricing for EC2 can get very intricate, and the same goes for Azure's VMs pricing. Google's offering is somewhat less flexible, but the pricing is a lot easier to follow (see pricing section).

There's also the option of renting computing processes for web and mobile apps, which can offer significant savings when used instead of EC2 or Compute Engine if your apps fit in the specs of this service (see AWS Elastic Beanstalk and Google App Engine for more details).

If you want to deploy software containers with Docker, you should look at Amazon's EC2 Container Service (ECS) and EC2 Container Registry (ECR); Google's equivalent are Container Engine and Container Registry. Azure's also on board with Docker with its Container Service, though at the moment they are not providing a facility for private Docker registries.

Azure, since it's Microsoft's, also allows you to deploy Windows client apps with its RemoteApp service.

Continue reading %A Side-by-Side Comparison of AWS, Google Cloud and Azure%


by Lucero del Alba via SitePoint

How to Create a Freelance Contract that Benefits You & Your Clients

Signing a contract

Welcome, my fellow freelancers — let’s start with a simple question:

How often do you make sure you’ve got a signed contract in place with a client before doing any work?

Chances are, it’s not every time. Certainly, from speaking with my peers and asking around in freelance communities, contracts are seen at best as a “necessary evil” and at worst as “not necessary at all.”

And that’s a problem — because used well, contracts not only protect you and your client, they’re also a way to build trust, manage expectations, and keep everyone happy. Yes, freelance contracts can actually be a force for good. If you spend some time creating a great freelance contract, getting it in place becomes easy.

A note: Before we go on, it’s important to state — I am not a lawyer! I’m just a simple freelance writer who has carried out research and created a contract of my own that I use successfully with clients. Naturally, if you want to check your contract over with a lawyer, you should do so. Nothing I am saying here constitutes legal advice, and you shouldn’t take it as such. OK, back to the article…

The Benefits of Having Your Own Freelance Contract

Contracts don’t just have to be legal prose, designed to inoculate you from a bad client. Yes, protecting yourself is certainly part of what a contract does, but they have several other benefits too:

  • A contract protects the client as well — A contract doesn’t just have protections for you, it also tells your client the protections they have. It defines the terms both you and your client are working to and makes sure you both have a common approach.
  • A contract manages expectations — A contract is a formalized agreement. Once it's signed, it tells both you and your client what they can expect, when they can expect it, to what quality, and for what price. It’s an essential part of a project, as it helps you set the scope.
  • A contract is a document to refer to in case of disagreement — Disagreements happen. If you’ve got something noted in your contract, it’s your fallback position. It helps you clarify exactly what you will and won’t do.
  • A contract holds you and your client to certain standards — You can set certain requirements in a contract, for example how quickly a client needs to respond to reviews and revisions. These requirements can make a freelancer’s life much easier.
  • A contract is mutually beneficial — Ultimately, a contract should make any working relationship better, for everyone involved. It builds confidence in your client and makes sure the freelance services you provide are properly compensated.

Why You Can’t Just Wait for a Client to Send You Their Contract

Clients don’t often have contracts of their own. In my time as a freelance writer, I would estimate around 80% of my clients haven’t had a contract they want me to sign. That could be because it’s their first time hiring a freelancer, or, more likely, they haven’t taken through the time to set one up.

Going to a client with a contract makes you look more professional and prepared and saves you time so you can get on with your work. Having a contract also means you’ll never work without one, something all freelancers should avoid. We’ve all heard stories of disputes and freelancers that haven’t been paid. Having your own contract will help you avoid some of those issues.

Good Practices for Writing a Contract

In my time researching what makes a good contract and what should be included, I discovered some useful approaches:

  • Language needs to be specific — Avoid ambiguity in a contract at all costs. Any language you use should be as specific as possible.
  • Clearly define everything you’re going to do — Make sure you clearly set out all of the work you’re going to complete, together with timescales, quality expectations, deadlines, and prices.
  • Include roles and responsibilities — It’s vital that both your client and you as a freelancer know what to expect from each other.
  • Use plain English — Although some legal terms are inevitable, use plain, simple English as much as possible. Make your contract easy to read and understand.
  • Format your contract well — Use appropriate headings and subheadings. Make sure your contract flows logically from point to point. Use lists and bullet points to break up complex areas.

A Freelance Contract, Broken Down and Explained

Below, I’ve included each part of the freelance contract I use and explained each section. The text from the contract itself is shown in italics, and I’ve commented where relevant. Please feel free to take what you want from this and adapt it to your needs. Replace anything in curly brackets with information that’s relevant to your business.

Title

Freelance {services} contract for {client name}

This is the title at the top of your contract explaining the type of contract and who it’s with.

Introduction

This contract, terms and conditions are designed to be easy to read and to create a reliable, straightforward, and understandable business relationship between the writer and the client. This document sets out the contract, terms and conditions for providing professional {service type} services between:

  • {your name}, a {your title} working via {your company name, if applicable} (the freelancer)
  • and {client name} at {business name} (the client).
  • This contract is entered into on: {date}

This is all self-explanatory — just put your own details in here for each particular client.

About this piece of work, project or ongoing agreement

The freelancer agrees to provide freelance services to the client to the scope, quality, deadline and prices as outlined between them in writing via email and via this contract (see appendix A).

Work scope, services, turnaround times, services, and pricing

Please see appendix A at the end of this document for details of the scope, turnaround time, services provided and the schedule of fees. If the scope or other aspects of the work change beyond what was originally agreed between the writer and the client, services and rates may be renegotiated to take into account changes to the work.

In my contract I separate out the specific terms, scope, pricing and so on into a separate part of the document (appendix A) as that limits the amount of the contract I need to change. If you don’t have extensive services, or they’re easily explained, you can incorporate them into the body of the contract.

Continue reading %How to Create a Freelance Contract that Benefits You & Your Clients%


by Paul Maplesden via SitePoint

Pragmatic Uses of Monkey Patching in JavaScript

Have you ever worked with third-party code that worked well except for one little thing that drove you nuts? Why did the creator forget to remove those pesky console logs? Wouldn't it be great if that API call could do just one more thing? If so then you know it can be difficult (or impossible) to get your changes implemented by the maintainer. But what about changing the code yourself? How can you do that if you don't have the sources and don't want to host them by yourself? Welcome to a journey into the world of Monkey Patching in JavaScript!

In this article we'll look at what Monkey Patching is and work through some different examples, using it to change the functionality of a third-party widget to suit our requirements.

What is Monkey Patching?

Monkey Patching (hereafter referred to as MP) is a technique to override, extend or even suppress the default behavior of a code segment without changing its original source code. This is done by replacing the original behavior with a fixed version.

This article will use an existing feedback box widget which displays a simple, slide-able Popup, as seen in the figure below, containing a feedback form.

A feedback form widget, which is going to be monkey patched

The source code was modified to include use-cases which act as the MP targets. By target I mean a specific piece of functionality, feature or, at the lowest level, method which we are going to patch.

Another modification I made was to remove the immediately invoked function expression (IIFE) surrounding the code. This was done in order to focus on the techniques of MP.

You can find the whole example, including the monkey patches discussed in this article, as a Plunker.

Isn't Monkey Patching a Bad Practice?

Let's get one thing straight before diving into business: Yes, MP is considered a bad practice -- so is the evil eval, imperative programming, mutable data structures, two-way binding and so on.

If you use any of those there will likely be a decent-sized group to tell you you're doing it wrong and should change this or that to fit a better condition. But as always, there are different tools and techniques available which vary in their suitability for certain scenarios. What seems extreme, crazy, or simply bad sometimes may be the last resort for a specific case. Unfortunately, because some practices are seen as bad you won't even find a lot of articles describing how to do the wrong thing the right way.

The situation described here might be an unnatural one, driven to the extreme with a fake widget, to show what your options are. You, as the reader, then have to decide whether you like what you see or not. If nothing else, after reading this you will have a better understanding in order to argue against MP.

Targets for Monkey Patching

Before we dive into the techniques let us first examine what we'd like to achieve. The modified widget has a few code smells we'd like to work around.

Hardcoded background color

The first of them is a method called toggleError which is supposed to change the background color of an element based on a boolean parameter

FeedbackBox.prototype.toggleError = function(obj, isError) {
  if(isError) {
    obj.css("background-color", "darkgrey");
  } else {
    obj.css("background-color", "");
  }
}

As you can see it sets the background-color property via the jQuery method css. That's a problem since we'd like to have this specified via stylesheet rules.

Pesky console logs

While developing the widget, a console log was used give the dev hints about what currently is executing. What might be a nice approach during development, for sure is not the nicest thing to do in a production use. As such we need to find a way to strip all those debug statements.

Intercepting ad-server calls

The widget is great, but it has one strange behavior. Each time you initialize the script, it will make a request to a strange ad server and display unnecessary bloat on our page.

Continue reading %Pragmatic Uses of Monkey Patching in JavaScript%


by Vildan Softic via SitePoint

Creative Monarchy

We are a team of two freelancers. A website developer and a digital designer and UX specialist. We are a new start up agency in the UK and are looking to offer our clients a simple website solution for their businesses without charging an arm and a l


by csreladm via CSSREEL | CSS Website Awards | World best websites | website design awards | CSS Gallery

Adios Portfolio WordPress Theme

Adios is a minimal, clean and modern WordPress Template for anyone who wants to build an amazing & modern portfolio website. It is suitable for any corporate, creative freelancer or business agency.


by csreladm via CSSREEL | CSS Website Awards | World best websites | website design awards | CSS Gallery

Laura Geley

UX/UI Designer and Art Director, I make the Internet look smarter and prettier since 2010. Such wow. Much cool.


by csreladm via CSSREEL | CSS Website Awards | World best websites | website design awards | CSS Gallery

Sunday Grind

Digital product design portfolio of Diana Lopez


by csreladm via CSSREEL | CSS Website Awards | World best websites | website design awards | CSS Gallery