September 23, 2016 — Carlo Giacometti, Kernel Developer, Algorithms R&D

I have always liked listening to music. In high school, I started wondering how it is that music seems to be so universally pleasing, and how it differs from other kinds of sounds and noises. I started learning to play guitar, and later at the University of Trieste, I learned about acoustics and signal processing. I picked up the guitar in high school, but once I began learning to program, the idea of being able to create and process any sound using a computer was liberating. I didn’t need to buy expensive and esoteric gear; I just needed to write some (or a lot!) of code. There are many programming languages that focus on music and sound, but complex operations (such as sampling a number from a special distribution, or the simulation of random processes) often require a lot of effort. That’s why the audio capabilities in the Wolfram Language are special: the ability to deal with audio objects is combined with all the knowledge and computational power of the Wolfram Language!

First, we needed a brand-new atomic object in the language: the `Audio` object.

March 31, 2016 — Devendra Kapadia, Kernel Developer, Algorithms R&D

*Picture of Green’s Windmill by Kev747 at the English language Wikipedia.*

In 1828, an English corn miller named George Green published a paper in which he developed mathematical methods for solving problems in electricity and magnetism. Green had received very little formal education, yet his paper introduced several profound concepts that are now taught in courses on advanced calculus, physics, and engineering. My aim in writing this post is to give a brief biography of this great genius and provide an introduction to `GreenFunction`, which implements one of his pioneering ideas in Version 10.4 of the Wolfram Language.

January 7, 2016 — Devendra Kapadia, Kernel Developer, Algorithms R&D

Partial differential equations (PDEs) play a vital role in mathematics and its applications. They can be used to model real-world phenomena such as the vibrations of a stretched string, the flow of heat in a bar, or the change in values of financial options. My aim in writing this post is to give you a brief glimpse into the fascinating world of PDEs using the improvements for boundary value problems in `DSolve` and the new `DEigensystem` function in Version 10.3 of the Wolfram Language.

The history of PDEs goes back to the works of famous eighteenth-century mathematicians such as Euler, d’Alembert, and Laplace, but the development of this field has continued unabated during the last three centuries. I have, therefore, chosen examples of both classical as well as modern PDEs in order to give you a taste of this vast and beautiful subject.

November 13, 2015 — Oleksandr Pavlyk, Manager of Probability and Statistics, Mathematica Algorithm R&D

Picking random points on the surface of a sphere so that the points are uniformly distributed is not as straightforward as you might think. Naively picking random spherical coordinates ϕ and θ will not give a uniform distribution of points. The problem is important enough to warrant a dedicated article in encyclopedias, such as Wolfram *MathWorld* (see Sphere Point Picking). Uniform sampling from Sphere[] is now available in the Wolfram Language with the `RandomPoint` function:

In fact, `RandomPoint` can be used to uniformly sample from any bounded geometric region, in any dimension. In 2D:

September 2, 2015 — Giulio Alessandrini, Mathematica Algorithm R&D

I’ve taken pictures numerous times, either with a camera or with my phone, only to find out that the colors were completely off—they had bluish, reddish, or even greenish tints. Before I started working on image and color processing, this was quite mysterious to me. Moreover, I’d always noticed on my cameras a white balance setting that, when played with, produced results very much like my skewed-color photographs. Could it be these two were related?

That camera setting is indeed the key to correcting a color cast, and it has been added to the Wolfram Language with the `ColorBalance` function.

Here is a simple example of how it works:

August 12, 2015 — Gopal Sarma, Advanced Research Group

The Wolfram Language has had extensive support for string manipulation since *Mathematica* 5, and in Version 10 it provided uniform symbolic access to a huge repository of computable data via the Wolfram Knowledgebase. Taking advantage of both of these fundamental capabilities, along with new machine learning functionality with `Classify` and `Predict`, we’re excited to be making further inroads into the rich domains of natural language processing and text analytics with `TextCases`, new in Version 10.2.

`TextCases`, like its sister functions `Cases` and `StringCases`, finds instances of patterns in a given input. Whereas `Cases` operates on Wolfram Language expressions and `StringCases` on strings, `TextCases` assumes that the input is human understandable text, from which one can extract known syntactic and semantic entities. These include basic textual types such as words, sentences, and paragraphs, but also more sophisticated semantic types such as countries, cities, and numbers.

As a simple example, let’s use `TextCases` to find instances of countries in a sentence:

July 16, 2015 — Bob Sandheinrich, Software Engineer, Connectivity Group

Despite the ever-growing list of tools I have for communication, email remains one of the most important. I depend on email to find out about all sorts of things: my ultimate Frisbee game is rained out, flights to Denver are only $80, my Dropbox account is almost full, my neighbor’s cat is missing (again). While filters are able to hide the pure junk and sort everything else into reasonable categories, reading and responding to email still requires a lot of manual interaction. The new mail receivers in the Wolfram Language finally let me automatically interact with email.

`MailReceiverFunction` is a Wolfram Language function that I deploy to the cloud to operate on incoming emails. When I deploy a function, I get an email address. Emails sent to that address will be processed by the function.

July 9, 2015 — Nick Lariviere, Kernel Developer, Core Mathematica Engineering

A classic problem in numerical date notation is that various countries list year, month, and day in different orders, which was one of the motivations for the introduction of the ISO-8601 date element and interchange formats (Randall Monroe has a nice summary in this xkcd comic). In the upcoming release of the Wolfram Language, we’ve added built-in support for these ISO date formats:

The ISO specification also provides some alternative date representations, such as week dates (year, week of year, and day of week) and ordinal dates (year and day of year):

May 21, 2015 — José Martín-García, Research Staff Member

A brilliant aspect of the Wolfram Language is that not only you can do virtually anything with it, you can also do whatever you want in many different ways. You can choose the method you prefer, or even better, try several methods to understand your problem from different perspectives.

For example, when drawing a graphic, we usually specify the coordinates of its points or elements. But sometimes it’s simpler to express the graphic as a collection of relative displacements: move a distance *r* in a direction forming an angle *θ* with respect to the direction of the segment constructed in the previous step. This is known as turtle graphics in computer graphics, and is basically what the new function `AnglePath` does. If all steps have the same length, use `AnglePath`[{*θ*1,*θ*2,...}] to specify the angles. If each step has a different length, use `AnglePath`[{{r1,*θ*1},{r2,*θ*2}, ...}] to give the pairs {length, angle}. That’s it. Let’s see some results.

May 15, 2015 — Christopher Wolfram, Connectivity Group

Cryptography has existed for thousands of years, but before serious computers came around, only specific kinds of messages were worth encrypting. Now that computers routinely manage a huge amount of communication, there is little downside to invisibly applying cryptography to almost everything, from verifying where information comes from to exchanging information securely. Because of cryptography’s widespread use, we added the basic building blocks of modern cryptography to the Wolfram Language with functions using OpenSSL for key generation, symmetric encryption/decryption, and asymmetric encryption/decryption.

The notion of a key in cryptography is similar to the way we use keys in everyday life, in that only someone with a certain key can perform a certain action. One very simple way of arranging this is to have a single key that is used to encrypt as well as decrypt, much like the locking and unlocking of a door: