You are here
There is a bit of sticker shock out there. No, it’s not the big IaaS public cloud bill that will make you gasp, it’s the price of changing applications to take advantage of cloud-native features as they move to the cloud.[ InfoWorld explains: What is cloud-native? The modern way to develop software. | Get started: Azure cloud migration guide. • Tutorial: Get started with Google Cloud. | Keep up with the latest developments in cloud computing with InfoWorld’s Cloud Computing newsletter. ]
There are three basic ways to deal with application migration to the cloud:
Microsoft has released the beta Version 4.5 of F#, which supports the Span value type from .Net Core to improve code.[ Get started with functional programming, including examples in F#. • Discover 14 excellent reasons to use F#. | Keep up with hot topics in programming with InfoWorld’s App Dev Report newsletter. ]Next version: What’s new in F# 4.5 beta
Span, aka Span<T>, enables the representation of contiguous regions in arbitrary memory. With Span, Microsoft wants F# to have better code generation particularly for byref-like constructions and full parity with .Net Core performance innovations. Interoperability with high-performance code also is a goal.
Apache Flink is a framework for implementing stateful stream processing applications and running them at scale on a compute cluster. In a previous article we examined what stateful stream processing is, what use cases it addresses, and why you should implement and run your streaming applications with Apache Flink.
Over the last couple of years, Rust has gone from a curiosity brewed up in the lab of a Mozilla employee to a strong contender for writing the next generation of native apps and bare-metal solutions. But those advances come from Rust providing its own tool chain and component management system—along with its own features and quirks.
This article walks through the basics of setting up a working environment in Rust, configuring an IDE, and making the most of the tool set Rust provides for app development.[ What is Rust? The way to do safe, fast, and easy software development. | Keep up with hot topics in programming with InfoWorld’s App Dev Report newsletter. ] Related video: Developing safer software with Rust
Get up to speed quickly on newcomer Rust, designed to create fast, system-level software. This two-minute animated explainer shows how Rust bypasses the vexing programming issues of memory and management.
The Apache Software Foundation has released the producton version of its NetBeans Version 9.0 IDE, with support for the Java Module System introduced with Java 9 last year. Modules comprised the premier capability in JDK 9, which was released in September 2017.[ The new Java versions are here! Learn everything you need to know about what’s new in Java SE 9 and what’s new in Java EE 8. | Keep up with hot topics in programming with InfoWorld’s App Dev Report newsletter. ]
The open source IDE’s new features include:
Angular provides dependency injection, particularly useful for assembling data services for applications, along with use of an HTML template to compose components. In Angular, developers still compose components with an HTML component that connects to TypeScript code for imperative parts of the program.
Developers participating in the evolution of standard Java may soon have a new source-code management system for the project, with the community set to investigate alternatives—including Git—to the current Mercurial repository scheme.
The effort, dubbed Project Skara, is intended to help contributors to OpenJDK, including seasoned committers and relative newcomers, be more productive. Under Skara, alternative source control management and code review management options would be explored, with Git an option.[ Git essentials: Get started with Git version control. • 20 essential pointers for Git and GitHub. | Keep up with hot topics in programming with InfoWorld’s App Dev Report newsletter. ]
Git, created by Linux founder Linus Torvalds, already anchors the popular code-sharing site GitHub, which has become an informal standard for collaborating on open source projects.
Upending the entire structure of modern computing isn’t easy. First, you need to invent technologies that can chill things to temperatures colder than anything else in the universe, then you need to find a particle that’s its own antiparticle, before braiding them into stable quantum computing engines. Then, of course, you need to program them.
A while back I took a first look at Q#, Microsoft’s experimental quantum computing programming language. It takes familiar computing constructs and patterns, using them to build low-level quantum circuits that embody the problem we’re trying to solve. If you’ve written code using functional programming languages like F# or systems programming languages like Go, you’ll find much of Q# familiar—until it starts to veer off in the direction of silicon-design languages like Verilog.
It’s 2:00 a.m. A pager goes off in a suburban home. A bleary-eyed woman makes her way to a terminal hooked up to a 1200-baud modem. She works until 6:00 a.m. to fix the system problem remotely, this time just having to edit and restart a data load job, then monitoring the log to ensure that things are fixed.
If you’re thinking that’s so 1980s, you’re right. However, substitute “smartphone” for “pager” and “laptop with Wi-Fi” for “1200-baud terminal,” and you’re not that far off from how things are done today on the cloud.[ What is cloud computing? Everything you need to know now. | Also: InfoWorld helps you identify the right tools for the job: AWS cloud services guide • Microsoft Azure services guide. • Google Cloud Platform services guide. ]
It’s called cloud operations (aka cloudops), the ability to maintain cloud-based systems in good working order. It is typically a mix of proactive and reactive work, with data-load job failures, missing directory entries, and user- or developer-caused problems taking up your 10-to 12-hour work day.
Key to TypeScript Version 3.0, released in late July 2018, is a project references capability, which lets projects depend on other projects. With this capability, tsconfig.json files can reference other tsconfig.json files. By specifying these dependencies, it becomes easier to split code into smaller projects, with TypeScript and tools able to understand build order and output structure. As a result, builds become faster. Developers also gain support for transparently navigating and editing across projects.
ASP.Net Core is an open source, cross-platform, lean, and modular framework for building high-performance web applications. Kestrel is a cross-platform web server for ASP.Net Core that is include by default. However, it has limitations.
To get around those limitations, I suggest you use HTTP.sys, a Windows-only HTTP server based on the HTTP.sys kernel driver that is more mature, secure, and scalable.[ Microsoft .Net Core 2.0: Everything you need to know. | Why .Net Core is finally ready for prime time. | .Net Framework or .Net Core? Learn when to use which. | Keep up with hot topics in programming with InfoWorld’s App Dev Report newsletter. ]Why you should use HTTP.sys
Typically, you need HTTP.sys when you have to expose your server to the outside world sans IIS (Microsoft Internet Information Services). The requests first come to the HTTP.sys—built on the HTTP.sys Kernel mode driver. HTTP.sys in turn creates a queue as well as an individual application pool for each request based on the request.
Kubernetes will save us all. If only we could work out how to install and maintain it. For the uninitiated, Kubernetes (also known as K8s to your local neighborhood hipster developer) is an open-source platform for running and orchestrating container-based applications and services. These are most often deployed in Docker containers, but other container runtimes—such as Containerd and Rkt—are supported.
Google has accumulated a great deal of knowledge about running containers in their operations over the past decade and a half. Kubernetes represents the third generation of container management systems at Google, after Borg and Omega, and has emerged as the principal container platform these past few years, pushing past other offerings such as Mesos and Docker’s Swarm. For the enterprise, Kubernetes offers something close to the Holy Grail: “What if OpenStack, but it actually works?”
Google wants to make its Go language (Golang) a staple of cloud application development with its open source Go Cloud project, featuring a library and tools to build apps that can be ported across different clouds. Available in a very early beta version, Go Cloud is not yet suitable for production use.
Go offers cloud development benefits, including low latency and built-in concurrency. Go Cloud, meanwhile, provides APIs to write simpler, more-portable applications.[ Also on InfoWorld: What’s the Google Go language really good for? Find out! • Deep Dive PDF: What you need to know about Google Go. • Changelog: What’s new in Google Go. • Tap the power of Google’s Go language. • The best Go language IDEs and editors. ]
A set of generic APIs now cover:
Devops needs cloud, and the cloud needs devops. Having one wthout the other means you don’t get the full potential of either.
Why? Well the ability to build applications at the “speed of need” that devops provides, if done properly, won’t have the value unless you have an agile platform like the cloud to deploy the applications on. In the same manner, the cloud needs fast and agile development, which devops provides.[ Devops best practices: The 5 methods you should adopt. • How to align test automation with agile and devops. • InfoWorld explains monitoring in the age of devops. • What is devops, exactly? Discover how to transform software development. ]
I’ve made this argument before, but now there is evidence that the two together are greater than the sum of their parts. A new study by managed services provider Claranet found that 74 percent of enterprises that had migrated to the cloud had experienced challenges with ops teams limiting the potential of devops. The reason: There was no cloud at the end of the devops processes and tool chains.
Python inventor Guido van Rossum shocked the Python world on July 12 when he stepped down as the language’s so-called BDFL (benevolent dictator for life). At the time, he cited acrimony over a recent Python enhancement proposal for a language expressions capability as motivating his exit.
But van Rossum, who invented Python in 1990, remains confident that the language will continue on just fine without his leadership. A principal engineer at Dropbox in his day job, the 62-year-old van Rossum spoke about his decision to move on with InfoWorld Editor at Large Paul Krill.
One key to efficient data analysis of big data is to do the computations where the data lives. In some cases, that means running R, Python, Java, or Scala programs in a database such as SQL Server or in a big data environment such as Spark. But that takes some fairly technical programming and data science skills not often found among business analysts or SQL programmers. In addition, if you have to extract, transform, and load your datasets from your data warehouse to another data store for machine learning, you introduce delays in the process.[ Get started with TensorFlow machine learning. • TensorFlow review: The best deep learning library gets better. • See what’s new in the latest version of TensorFlow. | Keep up with hot topics in programming with InfoWorld’s App Dev Report newsletter. ]
To that end, Google has announced a beta release of BigQuery ML, a SQL-based extension to its enterprise data warehouse service, for building and deploying machine learning models. This is important because it lowers the barriers to training certain kinds of models and deploying predictive analytic services, both reducing the time required and bringing it within reach of data analysts and statisticians.
Niraj Tolia is co-founder and CEO of Kasten.
The widespread misconception that Kubernetes was not ready for stateful applications such as MySQL and MongoDB has had a surprisingly long half-life. This misconception has been driven by a combination of the initial focus on stateless applications within the community and the relatively late addition of support for persistent storage to the platform.
Further, even after initial support for persistent storage, the kinds of higher-level platform primitives that brought ease of use and flexibility to stateless applications were missing for stateful workloads. However, not only has this shortcoming been addressed, but Kubernetes is fast becoming the preferred platform for stateful cloud-native applications.