Archive for the ‘Google’ Category
Go was created in 2007 at Google as an experimental project. It was designed to be a fun language and at the same time it is productive, practical, expressive and powerful. Google Go can be considered the result of a rather conservative language evolution from languages such as C and C++.
Recently, there have been criticisms about the value of using Node.js in a high-performance, networked application environment, and some developers have moved to the Go language. Not only developers but also some well-known companies, such as Google, DropBox, Docker, DigitalOcean and more have picked up Go for some of their projects.
Certainly, Node.js is still used by a much wider audience, has more modules, is easier to use and isn’t going anywhere anytime soon. However, Go is gaining more and more popularity. In this article we will take a look at the differences between Node.js and Go to reveal the strengths and weaknesses of each environment.
Due to JS’s dynamically-typed nature Node cannot reach the raw performance of CPU or memory bound tasks that Go can achieve in many tests. Go is about 3 times faster and more lightweight than Node.js in a production environment. Not to say that Node.js is slow, it’s fast enough for most use cases, but when you do hit a limit, Go can still go a long way.
One of the language’s peculiarities is the presence of goroutines, functions that can be executed concurrently with one another.
These can be launched simply by using a keyword. Go runtime contains a scheduler that coordinates the execution of an arbitrary number of goroutines on an arbitrary number of system threads (the M:N model). In this way it is possible to carry out rapid context switches in order to take advantage of all CPU cores. So, in a hypothetical web application written in Go a single process will be able to continue serving requests even if one of these is trying to execute a blocked operation.
Ease of use
Node.js is a much simpler platform to use, especially if you are already a JS developer. For Go you will need to learn some new programming concepts, such as: coroutines, channels, strict typing (with compilation), interfaces, structs, pointers, and some other differences.
Both platforms have pretty active and growing ecosystems, but as Node.js has been around much longer and certainly it has a broader community of users and more tools that make certain software projects a lot easier and/or cheaper to implement.
Go is a younger language, however, it dynamically develops: the number of standard Go packages is growing steadily, currently at over 100, and the Go community packages can be searched easily.
In conclusion, I’d like to say that there is no ideal language/framework/tool that could be used by everyone otherwise there would be only one programming language and there wouldn’t be such debates as Go vs Node.js:) Every language is tailored to be used for specific use cases. But we need to admit that there are some things Go performs better in, at the same time it lacks some characteristics that Node.js provides.
And what advantages and disadvantages of using Node.js and Go have you come across?
Business Development Manager
Professional Software Development
Posted March 15, 2016on:
Whether you’re building apps for the browser, mobile or desktop, Aurelia can enable you to not only create amazing UI, but do it in a way that is maintainable, testable and extensible.
Retrospective and today
Aurelia is a project of Rob Eisenberg, the author of a very popular MV * – framework for Caliburn.Micro XAML-platforms, Durandal. Understanding all the disadvantages of Durandal, Eisenberg engaged in the development of so-called NextGen framework. In 2014 he began to work in Angular team on the second version of the framework. However, several months later, Rob decided to leave the Angular team since the direction of Angular 2, in his opinion, had changed a lot. He gathered a large team and returned to work on the framework of his dreams. And Aurelia is the result of that work.
By using modern tooling Aurelia was written from the ground up in ECMAScript 2016. This means you have native modules, classes, decorators and more at disposal.
Aurelia’s code is open sourced under the MIT License, a very permissive license used by many popular web projects today. The starter kits are available under the Creative Commons 0 license. There is also a Contributor for those who wish to join the team in working on Aurelia. Ultimately, this means that you can use Aurelia without fear of legal repercussions and it can be build in the same confidence.
Benefits of Aurelia
• Convention over Configuration – Simple conventions help developers follow solid patterns and reduce the amount of code they have to write and maintain. It also means less fiddling with framework APIs and more focus on their app.
• Simple, But Not Simplistic – Because of the simple design developers are able to learn a very small set of patterns and APIs that unlock limitless possibilities.
• Promotes the “-ilities” – Testability, maintainability, extensibility, learnability, etc.- Aurelia’s design helps developers to naturally write code that exhibits these desirable characteristics.
• Amazingly Extensible – Aurelia is highly modular and designed to be customized easily, so developers will never hit a roadblock or have to “hack” the framework to succeed.
• Integrates Well with Others – Easily integrated with any 3rd party library or framework: for instance, with jQuery, React, Polymer, Bootstrap, MaterializeCSS and much more.
• TypeScript Support – Each Aurelia library is released with its own d.ts files. There are also official TypeScript beginner kits and production quality starter kits.
• An Official Product with Commercial Support – Being an official product of Durandal Inc., it has commercial and enterprise support available, so you can use Aurelia for building core technology for your business.
Aurelia, Angular and React.js – what’s common and what’s different?
Aurelia vs. Angular
Similarities between Aurelia and Angular 2:
Differences in vision details and options range:
Aurelia vs. React.js
Aurelia vs. Angular and React
It goes without saying why these three frameworks are so popular. They all have a lot of strong advantages. Eventually, I’m favoring Aurelia: there’s solid documentation available and the overall philosophy is the same with Angular 2, but Aurelia is a better choice from the syntax and execution point of view. The architecture and syntax vision of Aurelia team seems to be more clear than the vision of the Angular team. The company and enterprise support of Aurelia is also a big pro.
What is your personal experience with these frameworks? Which one would you choose for your projects and why? What’s your prediction “who” will win the crown in the nearest future? Please feel free to share your thoughts with us.
Thank you in advance!
Business Development Manager
Professional Software Development
The Go Programming Language (Go) is an open-source programming language sponsored by Google and created by Robert Griesemer, Rob Pike, and Ken Thompson that makes it easy to build simple, reliable, and efficient software.
Go has gained popularity since it was first announced in 2009, and it’s now being used by many companies worldwide and for a variety of applications; Dropbox, Google, SoundCloud, CloudFlare, Docker and Cloud Foundry are some of the Go programming users.
Like any technology, though, it has its adherents and critics. Here are some key benefits and perceived drawbacks of the language as told by experts familiar with it.
- It is fast. And not only fast in the sense that programs written in it run fast when compared to other common languages; but also fast in the sense that its compiler can compile projects in the blink of an eye. You can even edit and run Go programs directly on the Web.
- It is a garbage-collected language. This puts less pressure on the developer to do memory management, as the language itself takes care of most of the grunt work needed.
- It has built-in concurrency, which allows parallelism in an easier way than is possible in other languages. Go has the concept of goroutines to start concurrent work and the concept of channels to permit both communication and synchronization.
- Go has documentation as a standard feature. That makes it easier for developers to document their code and generate human-readable data out of source code comments.
- Go has a rich standard library which covers a lot of areas. In fact, Go is probably the only language that can claim to have a fully working Web server as part of its standard library.
- Go’s built-in build system is both elegant and simple. No need to mess with build configurations or makefiles.
- Go is still a very young language and has a very young ecosystem. This means there aren’t many libraries for it yet, leaving developers to write libraries themselves. There is also a shortage of books and online courses on the language.
- Go is simple to the point of being superficial. Go’s simplicity is mostly superficial, and in its effort to find simplicity, it threw away decades of valuable programming language progress.
- Although Go is a high-level language, it still has low-level features such as pointer-arithmetic which does not rule out the chance of doing systems and OS programming.
- Go’s tooling is really weird, on the surface it has some really nice tools, but a lot of them, when you start using them, quickly show their limitations.
- It is still not so easy to learn Go and it’s difficult to handle errors in it.
What is your attitude to Go? Is it worth learning? What do you think are Go’s advantages and disadvantages? Can you tell us about a real use you have given to this programming language? Please, feel free to share your thoughts here below.
Business Development Manager
Professional Software Development
The infrastructure-as-a-service (IaaS) market has exploded in recent years. Google stepped into the fold of IaaS providers, somewhat under the radar. The Google Cloud Platform is a group of cloud computing tools for developers to build and host web applications.
It started with services such as the Google App Engine and quickly evolved to include many other tools and services. While the Google Cloud Platform was initially met with criticism of its lack of support for some key programming languages, it has added new features and support that make it a contender in the space.
Here’s what you need to know about the Google Cloud Platform.
Google recently shifted its pricing model to include sustained-use discounts and per-minute billing. Billings starts with a 10-minute minimum and bills per minute for the following time. Sustained-use discounts begin after a particular instance is used for more than 25% of a month. Users receive a discount for each incremental minute used after they reach the 25% mark.
2. Cloud Debugger
The Cloud Debugger gives developers the option to assess and debug code in production. Developers can set a watchpoint on a line of code, and any time a server request hits that line of code, they will get all of the variables and parameters of that code. According to Google blog post, there is no overhead to run it and “when a watchpoint is hit very little noticeable performance impact is seen by your users.”
3. Cloud Trace
Cloud Trace lets you quickly figure out what is causing a performance bottleneck and fix it. The base value add is that it shows you how much time your product is spending processing certain requests. Users can also get a report that compares performances across releases.
4. Cloud Save
The Cloud Save API was announced at the 2014 Google I/O developers conference by Greg DeMichillie, the director of product management on the Google Cloud Platform. Cloud Save is a feature that lets you “save and retrieve per user information.” It also allows cloud-stored data to be synchronized across devices.
The Cloud Platform offers two hosting options: the App Engine, which is their Platform-as-a-Service and Compute Engine as an Infrastructure-as-a-Service. In the standard App Engine hosting environment, Google manages all of the components outside of your application code.
The Cloud Platform also offers managed VM environments that blend the auto-management of App Engine, with the flexibility of Compute Engine VMs.The managed VM environment also gives users the ability to add third-party frameworks and libraries to their applications.
Google Cloud Platform networking tools and services are all based on Andromeda, Google’s network virtualization stack. Having access to the full stack allows Google to create end-to-end solutions without compromising functionality based on available insertion points or existing software.
According to a Google blog post, “Andromeda is a Software Defined Networking (SDN)-based substrate for our network virtualization efforts. It is the orchestration point for provisioning, configuring, and managing virtual networks and in-network packet processing.”
Containers are especially useful in a PaaS situation because they assist in speeding deployment and scaling apps. For those looking for container management in regards to virtualization on the Cloud Platform, Google offers its open source container scheduler known as Kubernetes. Think of it as a Container-as-a-Service solution, providing management for Docker containers.
8. Big Data
The Google Cloud Platform offers a full big data solution, but there are two unique tools for big data processing and analysis on Google Cloud Platform. First, BigQuery allows users to run SQL-like queries on terabytes of data. Plus, you can load your data in bulk directly from your Google Cloud Storage.
The second tool is Google Cloud Dataflow. Also announced at I/O, Google Cloud Dataflow allows you to create, monitor, and glean insights from a data processing pipeline. It evolved from Google’s MapReduce.
Google does routine testing and regularly send patches, but it also sets all virtual machines to live migrate away from maintenance as it is being performed.
“Compute Engine automatically migrates your running instance. The migration process will impact guest performance to some degree but your instance remains online throughout the migration process. The exact guest performance impact and duration depend on many factors, but it is expected most applications and workloads will not notice,” the Google developer website said.
VMs can also be set to shut down cleanly and reopen away from the maintenance event.
10. Load balancing
In June, Google announced the Cloud Platform HTTP Load Balancing to balance the traffic of multiple compute instances across different geographic regions.
“It uses network proximity and backend capacity information to optimize the path between your users and your instances, and improves latency by connecting users to the closest Cloud Platform location. If your instances in one region are under heavy load or become unreachable, HTTP load balancing intelligently directs new requests to your available instances in a nearby region,” a Google blog post said.
Taken from TechRepublic
In the last year, Google has stampeded toward the enterprise. With advancements in Chromebooks and Chromeboxes, improved security, and incentive pricing; it’s obvious that Google is working hard to build out its portfolio of enterprise customers.
Another product that Google has been making more accessible to its business customers is its Cloud Platform. While Google has added value with new features, it is still uncertain whether or not it will be able to compete in a market dominated by Amazon AWS and Microsoft Azure.
The Google Cloud Platform is Google’s infrastructure-as-a-service where users can host and build scalable web applications. The Cloud Platform is technically a group of tools that cover the gamut of what most people need to build a business online. Currently, these are the tools that make up the Cloud Platform:
- Google App Engine
- Google Compute Engine
- Google Cloud Storage
- Google Cloud Datastore
- Google Cloud SQL
- Google BigQuery
- Google Cloud Endpoints
- Google Cloud DNS
Brian Goldfarb, head of marketing for the Google Cloud Platform, said that Google is working to leverage its “history and investments” in data centers and data processing technology to bring what they have learned to the public. The most exciting part for Goldfarb is the breadth of possibilities that the infrastructure provides for businesses.
“The beauty of being an infrastructure provider is that the use cases are, essentially, limitless,” Goldfarb said.
At the 2014 Google I/O developer conference keynote, Urs Hölzle and Greg DeMichillie announced a few more developer tools for Cloud Platform users. Google Cloud Dataflow is a way to create data pipelines that succeeds MapReduce. They also introduced a few minor tools such as Cloud Save, Cloud Debugger, and Cloud Trace.
According to James Staten, an analyst at Forrester, Google has been building its cloud offerings out for a while, but it has struggled to differentiate its products from its competitors.
“They continue to unveil some interesting things for developers, particularly those that are doing big data, which seems to be their only major differentiation as a cloud platform right now. So, they’re building on that,” Staten said.
When it comes to the numbers that Forrester has on cloud platform users, Google isn’t at the bottom of the list, but they are no where near the top five because of its lack of differentiation.
According to Goldfarb, however, Google differentiates itself in three key ways:
1. Price and performance. Google offers automatic discounting and unique aspects in its business model for the Cloud Platform.
2. Technical capability. “We are a cloud first company,” Goldfarb said. He notes that Google builds tools for their engineers to work on cloud production, which then get translated to the public-facing products.
3. Innovation. Customers will be the first to receive what Goldfarb calls “unique competitive advantages,” new technical features as soon as they are created by Google. For example, when speaking of the new Cloud Dataflow he said, “There is nothing like it in the world.”
Still, one of the primary issues is that the Google Cloud Platform wasn’t initially geared to accommodate bigger enterprises.
As a platform-as-a-service, it primarily appealed to startups as it only supported Python and didn’t have as robust an offering as needed by bigger companies. According to Staten, enterprises code not only in Python, but in PHP, Ruby, and Java as well; and if you only support one of those, it’s not very appealing.
Of course, Google has grown to accommodate other languages, and the appeal has gone up slightly; but, Staten said that Google still only has the basics. He said the real value for cloud platforms today is the ecosystem surrounding the infrastructure, and Google doesn’t yet have the ecosystem around the the Cloud Platform that it needs to be competitive.
“The battle is no longer around base infrasture-as-a-service,” Staten said. “It’s not about how many data centers you have, how fast those compute instances are and so forth. It’s all a battleground now around the services that are available above and beyond that platform and, more importantly, the ecosystem around those services.”
This is part of the reason why enterprise customers go to AWS or Azure. They go to those platforms because their peers are using it. They can draw on the experiences of their colleagues and peers for advice and best practices. Staten also notes that there are tons of available partners that many enterprises already know, and are already comfortable with. Some businesses are simply more comfortable working with companies such as Amazon, IBM, RackSpace, and Microsoft.
Still, some companies do trust their cloud offerings to Google. While its portfolio may not include as many Fortune 500 companies as some of its competitors, Google still boasts the likes of Khan Academy, Rovio, Gigya, Pulse, and Snapchat.
“Our fundamental goal with partners in the ecosystem is to empower them,” Goldfarb said.
Goldfarb noted that working with its partner ecosystem and engaging the open source community are some of Google’s highest priorities. He also believes that the heavy focus on open source is also a differentiator for Google among it competitors.
The first step, Staten said, is for Google to make a play around it’s existing products. For an ecosystem to grow and flourish, Google will need to give potential Cloud Platform customers a reason to use their other products.
“Right now if I want to build Android applications, or I want to extend the Google applications, or I want to take advantage of any Google technologies, there’s not a compelling reason for me to do that on their Cloud Platform,” he said. “In fact, it’s going to be easier, and more effective, for me to do that on Amazon or any of the other cloud platforms that are out there.”
Conversely, Google also needs to focus on getting companies that are using its other products to use the Cloud Platform as well. Google needs a sticky value proposition if they want a strong enterprise appeal. Staten mentioned that this could play out as a suite offering or something similar.
It’s not that Google has a poor reputation among business customers. The bigger issue is that most of these incumbent enterprise partners have built a deeper trust among the enterprise by working with them for so long. In order to further build trust, Google will need to take a serious look at its ad-heavy revenue model.
Staten said, “the enterprise hates advertising. So, they’re very much on the antithesis of the Google historical model.” Which means that Google will have to change its approach to accommodate more enterprise customers, so that it’s known as more than just an advertising company. That could even serve to help diversity Google’s revenue model.
Google has done a good job, so far, with much of its pricing and aggressiveness going after deals, but there are some things it can do to better its interactions with the enterprise.
“The biggest thing for Google is understanding that having a relationship with an enterprise is way different than having a relationship with a consumer,” Staten said.
What Staten believes is that Google doesn’t sell like an enterprise sales organization. Enterprise customers don’t want to operate within a consumer-style sales model. Business customers value things like a specific, named sales rep that they can easily contact.
Enterprise customer also tend to be more apt to go where they can get customized support. They need customer support that doesn’t involve getting in line behind thousand of consumers with the same questions, and they, rightfully, expect the potential for custom SLAs. But, according to Goldfarb, Google recognizes the difference between enterprise and consumer customers.
“We’ve done a lot of the last 12 months to build out or enterprise sales and services support,” Goldfarb said.
Regarding enterprise customers of the Cloud Platform, Google offers a technical account management team with the potential for business customers to get connected to a specific, named sales representative. Goldfarb also mentioned a 24/7 multi-language support system and a team of more than 1,000 people dedicated to handling enterprise accounts.
According to Staten, Google certainly can compete with AWS and Azure, but they have some catching up to do if they want to be truly competitive.
“I think they are making some progress, but they probably are not making it as fast as they think they need to in this market,” Staten said. “What they have to do is balance catching up with Amazon, with differentiating their offering. That balance is tricky, and it’s not entirely obvious where that balance is.”
What do you think? Do you think the Google Cloud Platform can compete with products like AWS and Azure? Do you think Google is doing enough to accommodate enterprise customers?