Home Blog Page 791

Distributed Tracing for Polyglot Microservices

Distributed tracing is a critical tool for debugging and understanding microservices. But setting up tracing libraries across all services can be costly—especially in systems composed of services written in disparate languages and frameworks. In this post, we’ll show you how you can easily add distributed tracing to your polyglot system by combining linkerd, our open source RPC proxy, with Zipkin, a popular open source distributed tracing framework.

Why distributed tracing? As companies move from monolithic to multi-service architectures, existing techniques for debugging and profiling begin to break down. Previously, troubleshooting could be accomplished by isolating a single instance of the monolith and reproducing the problem. With microservices, this approach is no longer feasible, because no single service provides a complete picture of the performance or correctness of the application as a whole. We need new tools to help us manage the real complexity of operating distributed systems at scale.

Read more at Buoyant.io

How the Internet Works: Submarine Fibre, Brains in Jars, and Coaxial Cables

Ah, there you are. That didn’t take too long, surely? Just a click or a tap and, if you’ve some 21st century connectivity, you landed on this page in a trice.

But how does it work? Have you ever thought about how that cat picture actually gets from a server in Oregon to your PC in London? We’re not simply talking about the wonders of TCP/IP, or pervasive Wi-Fi hotspots, though those are vitally important as well. No, we’re talking about the big infrastructure: the huge submarine cables, the vast landing sites and data centres with their massively redundant power systems, and the elephantine, labyrinthine last-mile networks that actually hook billions of us to the Internet.

And perhaps even more importantly, as our reliance on omnipresent connectivity continues to blossom, the number of our connected devices swells, and our thirst for bandwidth knows no bounds, how do we keep the Internet running? How do Verizon or Virgin reliably get 100 million bytes of data to your house every second, all day every day?

Well, we’re going to tell you over the next 7,000 words…

Read more at Ars Technica

Year 2038 Fixes Still Being Worked On for The Linux Kernel

The Linux kernel has been working on many Year 2038 fixes for a while now but the work is not over. Another pull request was sent in for the Linux 4.7 kernel in trying to prepare the VFS layer with Y2038 fixes. Arnd Bergmann has submitted a batch of Y2038 fixes for the Linux 4.7 merge window for the VFS code. He commented, “This is a preparation series for changing the VFS infrastructure to use time64_t in inode timestamps…

Read more at Phoronix

Five-Minute Screencasts to Learn Kubernetes

Containers are disrupting the way we develop applications and the way we manage them in our datacenter. Docker provides a great user experience for developers, who can develop, package, ship, and run applications easily. However creating a truly distributed application made of several dozens, hundreds, or more containers is a challenge. While Docker Swarm allows you to create a cluster of Docker hosts and start distributed applications, Kubernetes is an alternative solution worth a look.

Learning all these new technologies takes a lot of time. To try to ease your pain, I created a set of short screencasts to introduce Kubernetes. Watching a five-minute video should save you a lot of time.

Read more at DZone

Creating a Neural Network in Python

Neural Networks are very complicated programs accessible only to elite academics and geniuses, not something which an average developer would be able to work with, and definitely not anything I could hope to comprehend. Right?

Well, no. After an enlightening talk by Louis Monier and Gerg Renard at Holberton, I realized that neural networks were simple enough even for just about any developer to understand and implement. Of course the most complicated networks are huge projects and their designs are elegant and intricate, but the core concepts underlying them are more or less straightforward. Writing any network from scratch would be challenging, but fortunately there are some excellent libraries that can handle the grunt work for you.

neuron.png

A neuron in this context is quite simple. It takes several inputs, and if their sum passes a threshold, it fires. Each input is multiplied by a weight. The learning process is simply the process of adjusting the weights to produce a desired output. The networks we’re interested in right now are called “feed forward” networks, which means the neurons are arranged in layers, with input coming from the previous layer and output going to the next.

network.png

 

There are other kinds of networks, like recurrant neural networks, which are organized differently, but that’s a subject for another day.

The type of neuron described above, called a perceptron, was the original model for artificial neurons but is rarely used now. The problem with perceptrons is that a small change in the input can lead to a dramatic change in the output, due to their stepwise activation function. A negligible reduction in its input value can cause that value to no longer exceed the threshold and prevent that neuron from firing, leading to even bigger changes down the line. Fortunately this is a relatively easy problem to resolve with a smooth activation function, which most modern networks use.

perceptron activation function

sigmoid activation function

However, our network will be simple enough that perceptrons will do. We’re going to create a network that can process an AND operation. That means it requires two input neurons and one output neuron, with relatively few neurons in the middle “hidden” layer. The image below shows its design, which should be familiar.

andnet.png

Monier and Renard used convnet.js to create browser demos for their talk. Convnet.js creates neural networks directly in your browser, allowing you to easily run and manipulate them on almost any platform. Of course there are drawbacks to using a javascript solution, not the least of which is speed. So for this article, we’ll use FANN (Fast Artificial Neural Networks). There is a python module, pyfann, which contains bindings for FANN. Go ahead and install that now.

Import FANN like so:

>>> from pyfann import libfann

And we can get started! The first thing we need to do is create an empty network.

>>> neural_net = libfann.neural_network()

Now, neural_net has no neurons in it, so let’s go ahead and add some. The function we’re going to use is libfann.create_standard_array(). Create_standard_array() creates a network where all neurons are connected to all the neurons for their neighboring layers, which we call a “fully connected” network. As a parameter, create_standard_array takes an array of the number of neurons in each layer. in our case, this array will be [2, 4, 1].

>>> neural_net.create_standard((2, 4, 1))

Then, we set the learning rate. This reflects how much the network will change its weights on a single iteration. We’ll set a pretty high learning rate, .7, since we’re giving it a simple problem.

>>> neural_net.set_learning_rate(0.7)

Then set the activation function, as discussed above. We’re using SIGMOID_SYMMETRIC_STEPWISE, which is a stepwise approximation of the tanh function. It’s less precise and faster than the tanh function, which is okay for this problem.

>>> neural_net.set_activation_function_output(libfann.SIGMOID_SYMMETRIC_STEPWISE)

finally, run the training algorithm and save the network to a file. The training command takes four arguments: the file containing the data that will be trained on, the maximum number of times the training alorithm will run, the number of times the network should train before it reports its status, and the desired error rate.

>>> neural_network.train_on_file(“and.data”, 10000, 1000, .00001)
>>> neural_network.save(“and.net”)

The file “and.data” should look as follows:

4 2 1
-1 -1
-1
-1 1
-1
1 -1
-1
1 1
1

The first line contains three values: the number of examples contained in the file, the number of inputs, and the number of outputs. The rest of the file consists of examples, each line alternating between input and output.

One your network has trained successfully, you’re going to want to try it out, right? Well, first, let’s load it from the file we stored it to.

>>> neural_net = libfann.neural_net()
>>> neural_net.create_from_file(“and.net”)

Next, we can simply run it like so:

>>> print nn.run([1, -1])

which should output [-1.0] or a similar value, depending on what happened during training.

Congratulations! You just taught a computer to do basic logic!

How to Write a Job Posting for an Open Source Office Lead

By Benjamin VanEvery

I ran into several folks this past week at OSCON who expressed a keen interest in creating a dedicated role for Open Source at their respective companies. So what was stopping them? One simple thing: every single one of them was struggling to define exactly what that role means. Instinctively we all have a feeling of what an employee dedicated to Open Source might do, but when it comes time to write it down or try to convince payroll, it can be challenging. Below I have included a starting point for a job description of what a dedicated Open Source manager might do. If you are in this boat, I’d highly recommend that you also check out the slides from our talk at OSCON this year. In addition, the many blog posts we’ve published about why our respective companies run Open Source.

Also, on top of reusing what is below, we are collecting open source office job descriptions on GitHub from the industry that you can learn from.

The Job Posting Template

Side note: if you use this template, try running it through analysis on https://textio.com/talent/ first.

The Mission

Our open source effort is currently lead by a multi-functional group of engineers and we are looking for a motivated, visionary individual to lead this effort and take Company Open Source to the next level.

In this role, you’ll work with our Engineering (Dev & Ops), Legal, Security, Business Ops, and Public Relations teams to help define what Open Source at Company means and build our open source community. Your day to day responsibilities will alternate between programming and several forms of program management. This is an exciting opportunity to work with all levels of the organization and leave a lasting impact here and on the engineering community at large.

A good match might have (a)…

  • 8 years experience coding in or leading software engineering environments
  • Experience working on at least one successful and widely recognized open source project
  • Excellent communication and organizational skills
  • Familiarity with GitHub and open source CI tooling (Travis CI, Coveralls, etc)
  • Understanding of open source licenses
  • Experience and familiarity with multiple programming languages
  • Real passion for quality and continuous improvement

Some things you might find yourself doing

  • You will lead and streamline all aspects of the outgoing open source process. This encompasses people processes to tooling automation.
  • You will own and handle our open source presence and reputation on GitHub and beyond
  • You will steer involvement and recognition of the open source program internally
  • You will work alongside product and business leadership to integrate Open Source goals with company goals. Overall, working to build Open Source mentality into our DNA.
  • You will build awareness of Company Open Source externally and increase overall involvement in the open source community.
  • You will establish Company as an actively contributing member of industry-leading Open Source initiatives. This involves taking active parts in TODO Group initiatives.
  • You will run our process for evaluating incoming open source code for use in our product.

This article originally appeared at TODO 

Netronome Integrates P4 and C Programming on Production Server NICs

Netronome introduced a P4 and C compliant Integrated Development Environment (IDE) for dynamically programming new networking capabilities on its Agilio CX and LX family of intelligent server adapters (ISAs).

The news is significant because bringing SDN capabilities into a server NIC could help identify and resolve tenant application performance bottlenecks rapidly, enabling cloud service providers to maintain high levels of user experience.

For telco NFV deployments, Netronome said its solution enables a significantly higher degree of dynamic data center traffic observability, helping telco operators to pinpoint issues related to call drops or poor call and video quality in 4G and 5G networks. AT&T and Netronome are presenting and demonstrating this use case at the P4 Language Consortium workshop this week at Stanford University.

“Server-based networking has evolved as the most widely deployed form of SDN; its fundamental tenets are feature velocity and control – important requirements for data center operators,” said Sujal Das, senior vice president and general manager, marketing and corporate strategy. “As a pioneer in hardware-accelerated, server-based networking solutions, we take great pride in being the first in the industry with shipping products that can truly help customers realize the value of integrated P4 and C programming for their data center applications.”

Read more at Converge Digest.

How Newegg is Winning the Battle Against Patent Trolls [Video]

As Lee Cheng explained in his keynote speech at the Collaboration Summit held March 29-31 in Lake Tahoe, California, fighting patent trolls as part of his job at Newegg Inc. is a natural progression from his earliest legal involvement in civil rights advocacy.

In 1994, a non-profit organization that Cheng helped form “filed a lawsuit against the San Francisco Unified School District in Federal Court,” recalled Cheng. “This was the first legal windmill that I tilted against, and I’ve been looking for others ever since.”

Cheng, who is now Chief Legal Officer, SVP of Corporate Development and Corporate Secretary at Newegg, said, “When I joined Newegg in 2005, I was very surprised to get our first patent lawsuit, because we don’t actually make anything.”

Nonetheless, Cheng has spent much of his time at Newegg fighting pernicious patent trolls — more than 30 claims over the past decade — about various aspects of e-commerce and websites, which were often basic functions like an Internet shopping cart, drop-down menus, and search boxes.

“Each troll only wanted a very small percentage of all of our online sales or profits despite the fact that they contributed absolutely nothing to our success,” said Cheng. “They all very generously offered to settle for initially high six figures or low seven figures, and they explained to us that litigation costs and risks were so high that we should just cut the check.”

Not knowing any better when the claims first started hitting Newegg in 2006, “I started to ask questions. I soon concluded that patent trolling was just a total scam. Settling with trolls might save a little bit of money on the front end but would encourage more lawsuits,” said Cheng. “Settling frivolous lawsuits and paying plaintiffs off simply fed the beast of patent trolling while stifling innovation and entrepreneurship.”

Cheng’s approach included finding ways to reduce Newegg’s legal costs, such as using small boutique law firms, doing as much legal work in-house as possible, and using alternative fee arrangements.

Newegg’s victories included a 2010 shopping cart case against Sovereign, who had already received multi-million dollar decisions from leading e-retailers like Amazon, CDW, Gap, and Zappos. “We actually haven’t lost a case of any kind after appeal since 2006,” said Cheng.

According to Cheng: “Patent trolls don’t sue Newegg anymore, except ones that are literally too stupid to realize that they sued Newegg. Believe it or not, that actually happens. We had two patents cases filed against Newegg since 2013. In one case, a patent troll sued us in mid-2013, and they dropped the case shortly after one of the younger associates at the plaintiff’s firm explained to their senior partners what Newegg does to patent trolls.”

Currently, Newegg “We now mostly focus on pursuing fee motions against patent trolls. We are trying to get the fees that we spent back under Section 285 of the Patent Act, and we try to support other companies, especially small and medium sized business who are still being plagued by abusive patent asserters  — people who really try to extend specious intellectual property rights to achieve commercial advantage. … We are willing to engage in what I guess can be called corporate pro bono work, because Newegg doesn’t just appreciate technological innovation, we actually need it.”

Whether it’s fighting patent trolls or pursuing civil rights, “Don’t assume that you can’t make a difference,” said Cheng, “or that there’s an insurmountable reason for tolerating something that doesn’t look or feel right to you. Don’t be afraid to lead… Your presence here today means that you are part of one of the greatest collaborative efforts in history, one that crosses borders and languages and cultures.”

Watch Lee Cheng’s full keynote below:

https://www.youtube.com/watch?v=X-yUZW-v0io?list=PLGeM09tlguZQ17kXq679jthIhf12Tkat9

linux-com_ctas_may2016_v2_collab.png?itok=Mj86VQnX

How to Fight and Beat Patent Trolls (and Why We Do It) by Lee Cheng

https://www.youtube.com/watch?v=X-yUZW-v0io?list=PLGeM09tlguZQ17kXq679jthIhf12Tkat9

In his talk at Collaboration Summit, Newegg’s chief legal officer Lee Cheng describes the work Newegg is doing to fight patent trolls and frivolous lawsuits.

What Containers and Unikernels Can Learn from Arduino and Raspberry Pi

I had always viewed Arduinos and Raspberry Pi as these cool, little, specialized devices that can be used to make all kinds of fun gadgets. I came from the software side of the world and have always considered Linux on x86 and x86-64 “general purpose.” The truth is, Arduinos are not specialized. In fact, they are very general purpose. They are fairly small, fairly cheap, and extremely flexible—that’s why they caught on like wildfire. They have all kinds of I/O ports and expansion cards. They allow a maker to go out and build something cool really quickly. They even allow companies to build new products quickly.

The unit price for an Arduino is much higher than a printed circuit, but time to a minimum viable idea is much lower. With a printed circuit, the unit price can be driven much lower but the upfront capital investment is much higher. So, long story short, the answer is—it depends.

Read more at OpenSource.com