Today we’ve added support for our new HTML5 widget to the oEmbed endpoint. Aside from a brand new user interface with lots of improvements, the HTML5 widget doesn’t require Adobe Flash anymore. That means the widget will load much faster and finally work well on most mobile platforms, including Android & iOS. And we won’t stop here. We’ll continue to…
9 Jan 2012
8 Jan 2012
Rectangles, Trapezoids, and Simpson’s I just wrapped up a semester of calculus TA duties, and I thought it would be fun to revisit the problem of integration from a numerical standpoint. In other words, the goal of this article is to figure out how fast we can approximate the definite integral of a function $ f:\mathbb{R} \to \mathbb{R}$. Intuitively, a…
3 Jan 2012
Last month we attended Music Hack Day London 2011. A special one, Music Hack Day was born in London 3 years ago and we were happy to attend a hack day again in it’s homeland. Picture For those who do not know of Music Hack Day, it’s a great weekend-long event aimed at music and sound hackers. Anyone can attend…
1 Jan 2012
And a Pinch of Python Next semester I am a lab TA for an introductory programming course, and it’s taught in Python. My Python experience has a number of gaps in it, so we’ll have the opportunity for a few more Python primers, and small exercises to go along with it. This time, we’ll be investigating the basics of objects…
30 Dec 2011
We’re quite eager to get to applications of algebraic topology to things like machine learning (in particular, persistent homology). Even though there’s a massive amount of theory behind it (and we do plan to cover some of the theory), a lot of the actual computations boil down to working with matrices. Of course, this means we’re in the land of…
Today, I asked on Twitter what non-technical books I should read in 2012. I was nicely surprised to see so many of my followers send recommendations. Here is a list of 25 books that like-minded people suggested I read. Hopefully you will find a book or two to read too. Feel free to send more recommendations via the comments. 1Q84…
24 Dec 2011
Take a moment to count the number of unique scrollbar widget types there are in Adobe Photoshop. You may be surprised. ”You can measure software maturity by the number of UI toolkits it implements.” I’ve counted four in Adobe Photoshop CS5.
23 Dec 2011
One of the most annoying things I get in touch with software development beside the question How can I format this date is How can I put my database under version control? If you have not already read K. Scott Allens Database series, do it now. At first follow his […] The post Databases in developers environment – Versioning and…
22 Dec 2011
Streamline your SSL setup: Realtime and web on one port.
21 Dec 2011
Recently I asked a friend of mine to give me pointers on how to develop a curriculum (he used to teach an education PHD program), after discussing his response on Twitter, people asked me to put it somewhere, so here it is: Process to develop a curriculum: Purpose. Know why you’re doing what you’re doing. You know how to do…
19 Dec 2011
We are about to begin a series where we analyze large corpora of English words. In particular, we will use a probabilistic analysis of Google’s ngrams to solve various tasks such as spelling correction, word segmentation, on-line typing prediction, and decoding substitution ciphers. This will hopefully take us on a wonderful journey through elementary probability, dynamic programming algorithms, and optimization.…
18 Dec 2011
Last weekend I finished the free on-line course Introduction to Databases taught by Professor Jennifer Widom of Standford University. The course was given entirely over the web, with pre-recorded video lectures, and assignments and exams that were automatically graded when submitted. … Continue reading →
Organize software delivery around outcomes, not roles: continuous delivery and cross-functional teams. When implementing continuous delivery, it’s easy to focus on automation and tooling because these are usually the easiest things to start with. However continuous delivery also relies for its success on optimizing your organizational structure for throughput. One of the biggest barriers we at Thoughtworks have seen to…
9 Dec 2011
At SoundCloud we like to invent new ideas. But we’re not adverse to implementing really great tried and tested ideas like the 20% time…
1 Dec 2011
Travel opens my mind to new perspectives and allows me to recontextualize existing systems of thought. I had casually studied Roman history over the course of a few years, prior to my travels to Italy. My understanding was built upon a small collection of books and two excellent podcast series. While one can learn a great deal from books, podcasts,…
25 Nov 2011
A Study In Data Just before midnight on Thanksgiving, there was a murder by gunshot about four blocks from my home. Luckily I was in bed by then, but all of the commotion over the incident got me thinking: is murder disproportionately more common on Thanksgiving? What about Christmas, Valentine’s Day, or Saint Patrick’s Day? Of course, with the right…
21 Nov 2011
Proper and effective error tracking is a common issue for front-end JavaScript code compared to back-end environments. We felt this pain as…
18 Nov 2011
This is a natural follow-up to our first gallery entry on the impossibility of tiling certain chessboards with dominoes. Problem: Suppose we remove two squares from a chessboard which have opposite color. Is it possible to tile the remaining squares with 2-by-1 dominoes? Solution: Notice that if we remove two squares of opposite color, then there is only one way…
OmniAuth is a great little Rack library that standardizes multi-provider authentication for web applications. As OmniAuth says, “it was created to be powerful, flexible, and do as little as possible.” I use it constantly on hacks that mash up multiple API providers. You can now add SoundCloud to the growing list of strategies OmniAuth 1.0 supports.
16 Nov 2011
Elevate your command-line scripts with these simple yet powerful tips.
15 Nov 2011
Product Ownership is very difficult. Take a big step away from the Agile Manifesto and think for a moment about project stakeholders, user stories, and how they don't fit together as neatly in real life as they do in Mike Cohn's User Stories Applied, as awesome as that book is. How in the world is it possible for there to…
14 Nov 2011
Competitions are a great way to get your fans involved around a particular theme or release. They encourage original content creation and tend to be extremely viral due to the high level of self-promotion involved with participating. The infrastructure you choose to throw these contests on should be accessible from any device while also providing a nice aesthetic backdrop to…
Today we’re excited to announce a big update to our JavaScript SDK. Aside from improving the existing functionality like authentication, API…
12 Nov 2011
Explore how to build a Cordova and PubNub powered multipleayer game using real-time API's
Explore how to build a Cordova and PubNub powered multipleayer game using real-time API's
We'll show you how to build a HTML5 multiplayer game foundation for creating your own HTML5 games and applications with real-time data streaming.
We'll show you how to build a HTML5 multiplayer game foundation for creating your own HTML5 games and applications with real-time data streaming.
11 Nov 2011
Last weekend was another successful Music Hack Day Boston jam-packed with cool hacks, and hackers alike. We are always excited to get involved, meet new and interesting people, and of course hack!
10 Nov 2011
As a trainer, I have noticed that when I start the "Roles, Personas and Goals" discussions, attendees in the room are 40% more likely to start surreptitiously checking e-mail their smartphones than they when we talk about comparatively exciting topics such as "stand up meetings," "story boards," the "burn up versus burn down chart" debate, or "evolutionary design." I had…
9 Nov 2011
We at SoundCloud want to build the best sound player for the web, and we want to do that using the Open Web standards. While working on the…
8 Nov 2011
During RubyConf Argentina 2011 in Buenos Aires, Argentina Matt Aimonetti gave a talk entitled Inside Ruby: concurrency & garbage collection explained. ##Description of the talk: Concurrency in Ruby and Python implementations is quite a hot topic nowadays. In this talk, Matt will explain how concurrency works for a language that uses a Global Interpreter Lock and it means concretely. Finally…
7 Nov 2011
Note, while the problem below arose in ring theory (specifically, Euclidean domains), the proof itself is elementary, and so the title should not scare away any viewers. In fact, we boil the problem down to something which requires no knowledge of abstract algebra at all. Problem: Show that the ring $ \mathbb{Z}[\sqrt{2}]$ has infinitely many units. Solution: An element of…
3 Nov 2011
Recalling our series on Conway’s Game of Life, here is an implementation of Life within Life. Unfortunately, it does not “prove” what I hoped it might, so unless a reader has a suggestion on what this demonstration proves, it doesn’t belong in the proof gallery. But it sure is impressive.
Small teams, big wins: The secret to programmer productivity.
2 Nov 2011
Machiavelli's timeless wisdom: Lessons for modern leadership.
27 Oct 2011
With excitement building for the Velocity Conference in Berlin, we are happy to announce a pre-event meet up on Monday, November 7 at the…
25 Oct 2011
Problem: Show 1 = 2 (with calculus) “Solution”: Consider the following: $ 1^2 = 1$ $ 2^2 = 2 + 2$ $ 3^2 = 3 + 3 + 3$ $ \vdots$ $ x^2 = x + x + \dots + x$ ($ x$ times) And since this is true for all values of $ x$, we may take the derivative…
Uncover hidden iPad traffic and block pesky ads with this tech-savvy guide.
Not long ago we released a sharing kit for Android. Today, we’re equally excited to announce a similar sharing kit for iOS. With the sharing kit, you can add SoundCloud sharing to your iPhone and iPad apps with only a few lines of code. We provide everything you need to let your users share their sounds to SoundCloud, including authentication,…
18 Oct 2011
After my recent RubyConf talk and follow up post addressing the Ruby & Python’s Global Interpreter Lock (aka GVL/Global VM Lock). a lot of people asked me to explain what I meant by “data safety”. While my point isn’t to defend one approach or the other, I spent a lot of time explaining why C Ruby and C Python use…
14 Oct 2011
We just signed the corporate contributor license agreement (CCLA). SoundCloud always was big on open source – we nearly exclusively use open…
13 Oct 2011
Mike Gualtieri threw down an enjoyable gauntlet this week with his Forrester blog post, "Agile Software is a Cop-Out, Here's What's Next" Gualtieri put some provoking words around two sentiments I've agreed with for some time, namely:
12 Oct 2011
From comic book stores to Facebook to message boards, it seems that the “Keep Calm and Carry On” poster is living a new life as pop-culture cool while people remix its’ message with both quirky or banal messages. This attempt tries to speak most directly to its underlying message of consumerism, amidst the current climate of the Occupy Movement.
11 Oct 2011
I decided to save myself a session to the shrink and instead just write down my reflection on management. Who knows, some of you might help me and/or challenge my thought process. I recently read a great management book called the five dysfunctions of a team by Patrick Lencioni . Instead of telling you what to do, the author highlights…
8 Oct 2011
Preamble: This proof is not particularly elegant or insightful. However, it belongs in this gallery for two reasons. First, it is an example of the goal of most mathematics: to classify things. In the same way that all natural numbers can be built up from primes, every group can be built up from simple groups. So if we want to…
3 Oct 2011
During RubyConf 2011, concurrency was a really hot topic. This is not a new issue, and the JRuby team has been talking about true concurrency for quite a while . The Global Interpreter Lock has also been in a subject alot of discussions in the Python community and it’s not surprising that the Ruby community experiences the same debates since…
2 Oct 2011
or, How I Learned to Love Functional Programming We recognize that not every reader has an appreciation for functional programming. Yet here on this blog, we’ve done most of our work in languages teeming with functional paradigms. It’s time for us to take a stand and shout from the digital mountaintops, “I love functional programming!” In fact, functional programming was…
Problem: Determine an arithmetic expression for $ \binom{n}{2}$. Solution: The following picture describes a bijection between the set of yellow dots and the set of pairs of purple dots: In particular, selecting any yellow dots and travelling downward along diagonals gives a unique pair of blue dots. Conversely, picking any pair of blue dots gives a unique yellow dot which…
1 Oct 2011
“Der Benutzer besitzt nicht den benötigten Anmeldetyp auf diesem Computer” beim Zugriff auf Netzwerkzugriff von Windows 7
SchakkoAm Wochende ist mal wieder Netzwerkparty gewesen und wie jedes Mal gab es Probleme mit dem Zugriff auf die Netzwerkfreigaben. Diesmal hatten wir das Problem, das beim Zugriff von Windows 7 auf andere Windows 7 Netzwerkfreigaben der Fehler “Der Benutzer besitzt nicht den benötigten Anmeldetyp auf diesem Computer” erschien. Die […] The post “Der Benutzer besitzt nicht den benötigten Anmeldetyp…
During RubyConf 2011 in New Orleans, LA Matt Aimonetti gave a talk entitled Complex Ruby concepts simplified. ##Description of the talk: Programming languages, such as Ruby, are natural and elegant. But to achieve this elegance, things have to happen under the hood. Garbage Collection, concurrency, Global Interpreter Lock, metaprogramming, C extensions are just some of the things happening with or…
30 Sept 2011
The tabulated simulation results. Total games played=10000000, total rounds=259722851, took 7204 seconds. Games that never needed 15 cards on the table: 3124823 (31.2 percent of all games). Games where no cards remain on the table at the end: 118583 (1.2 … Continue reading →
The tabulated simulation results. Total games played=10000000, total rounds=259703553, took 6916 seconds. Games that never needed 15 cards on the table: 3141851 (31.4 percent of all games). Games where no cards remain on the table at the end: 121973 (1.2 … Continue reading →
The tabulated simulation results. Total games played=10000000, total rounds=259143969, took 6919 seconds. Games that never needed 15 cards on the table: 3301418 (33.0 percent of all games). Games where no cards remain on the table at the end: 151438 (1.5 … Continue reading →
In Peter Norvig’s interesting post The Odds of Finding a Set in The Card Game SET, he concludes that the odds against there being no set in 12 cards, during a game, is 16:1. This is an average value, but it … Continue reading →
27 Sept 2011
"Uncover memory leaks with ease: objgraph to the rescue!"
26 Sept 2011
18 Sept 2011
Negotiating lives: Insights from an FBI hostage negotiator's memoir.
16 Sept 2011
Tame your git branch jungle with these handy tips.
15 Sept 2011
"Unleash the power of Django profiling with this easy guide."
14 Sept 2011
In some cases, you might have a bunch of apps running on different domains/subdomains and/or ports and you would like to make ajax requests between these services. The problem is that browsers wouldn’t let you make such requests because of the Same Origin Policy which only allowed them to make request to resources within the same domain. However, most browsers…
12 Sept 2011
When we started the Mobile project early 2011, unit testing JavaScript was one of the goals to tackle on the technical side. The history of…
7 Sept 2011
Are you an Android developer and want to integrate SoundCloud in your own app? With the new Android Sharing Kit this has become very easy.
5 Sept 2011
Recently I wrote a small DSL that allows the user to define some code that then gets executed later on and in different contexts. Imagine something like Sinatra where each route action is defined in a block and then executed in context of an incoming request. The challenge is that blocks come with their context and you can’t execute a…
4 Sept 2011
Warning: this proof requires a bit of familiarity with the terminology of propositional logic and graph theory. Problem: Let $ G$ be an infinite graph. Show that $ G$ is $ n$-colorable if and only if every finite subgraph $ G_0 \subset G$ is $ n$-colorable. Solution: One of the many equivalent versions of the Compactness Theorem for the propositional…
2 Sept 2011
Berlin is playing host to the oh-so-sold-out JSConf.eu conference happening October 1-2. Some members of the SoundCloud engineering crew…
31 Aug 2011
Sumeet Moghe, Training Manager, Thoughtworks, shares the key to success in Agile teams. Feedback in peer groups facilitates a shift from ‘forming, storming and norming’ to the most effective stage in the Tuckman's model - performing. This aspect, an important concern of luminaries in the Agile world such as Esther Derby, Johanna Rothman, Norman Kerth, Alistair Cockburn and Martin Fowler…
30 Aug 2011
Recently I had to build a new app as part of my research & development job at LivingSocial. My goal was to get the app up and running in just a few weeks, solid application architecture and graphic design included. When you need to build an app quickly and you want it to have some solid foundations, Rails is quite…
28 Aug 2011
A quick virtual heads-up for developers, hackers and coding enthusiasts in the Berlin-area: SoundCloud is very happy to support the upcoming…
24 Aug 2011
The recent outage of SoundCloud was the result of everybody doing the right thing. This totally jives with John Allspaw’s message that…
22 Aug 2011
The Problem The mobile version of SoundCloud is a consumer of our own API dog food. That decision was made with the intention to deploy a…
17 Aug 2011
I want to thank all my readers for visiting Math ∩ Programming as often as you do, and doubly thank those who are kind enough to leave a comment. Unfortunately over the next few weeks I may not have time to do work as much on this blog as I have in the past two months. After driving 3,000 miles…
14 Aug 2011
Problem: Show that $ \sqrt{2}$ is an irrational number (can’t be expressed as a fraction of integers). Solution: Suppose to the contrary that $ \sqrt{2} = a/b$ for integers $ a,b$, and that this representation is fully reduced, so that $ \textup{gcd}(a,b) = 1$. Consider the isosceles right triangle with side length $ b$ and hypotenuse length $ a$, as…
11 Aug 2011
This post assumes some basic familiarity with Euclidean geometry and linear algebra. Though we do not assume so much knowledge as is contained in our primer on inner product spaces, we will be working with the real Euclidean inner product. For the purpose of this post, it suffices to know about the “dot product” of two vectors. The General Problem…
10 Aug 2011
"Decoding the Python 2 Unicode puzzle: A practical guide."
We will orient our dash of Python around the first and simplest problem from ProjectEuler.net. Installing Python To get Python on your computer, go to python’s website and follow the instructions for downloading and installing the interpreter. Most Window’s users can simply click here to download an installer, Mac OS 10.6 – 10.7 users can click here to get their…
8 Aug 2011
I’ve posted the final slides from my talk this year at DEFCON and Black Hat, on breaking out of the KVM Kernel Virtual Machine on Linux. Virtunoid: Breaking out of KVM from Nelson Elhage [Edited 2011-08-11] The code is now available. It should be fairly well-commented, and include links to everything you’ll need to get the exploit up and running…
6 Aug 2011
So far on this blog we’ve assumed familiarity with the programming languages used (at the time of this writing, this is Mathematica and Java). This is unfair for the mathematicians who have little to no programming experience, and we admit that some readers tend to skim those technical sections with source code. As our work on this blog progresses, we…
3 Aug 2011
2 Aug 2011
Until early this year, there was a gap. A gap between the desktop-targeted main SoundCloud site, what we call the ‘mothership’, and the…
31 Jul 2011
There is no Agile in a Box
30 Jul 2011
This primer exists for the background necessary to read our post on RSA encryption, but it also serves as a general primer to number theory. Oh, Numbers, Numbers, Numbers We start with some easy definitions. Definition: The set of integers, denoted $ \mathbb{Z}$, is the set $ \left \{ \dots -2, -1, 0, 1, 2, \dots \right \}$. Definition: Let…
29 Jul 2011
This post assumes working knowledge of elementary number theory. Luckily for the non-mathematicians, we cover all required knowledge and notation in our number theory primer. So Three Thousand Years of Number Theory Wasn’t Pointless It’s often tough to come up with concrete applications of pure mathematics. In fact, before computers came along mathematics was used mostly for navigation, astronomy, and…
Für ein aktuelles Projekt entwickeln wir mit .NET Framework 3.5 und ASP.NET MVC 2. Um von der fest-codierten Instanzierung von Objekten Abstand zu nehmen (u.a. für das Mocking) und die Applikation frei konfigurierbar zu machen, habe ich mir mal Unity 2.0 angeschaut. Leider beziehen sich die meisten Tutorials und Blog-Posts […] The post Unity 2.0 in eine ASP.NET MVC 2…
The venerable O’Reilly Velocity Conference is coming to Berlin on the 8th and 9th of November. SoundCloud is doing what we can to help…
28 Jul 2011
Problem: Show that every natural number can be unambiguously described in fewer than twenty words. “Solution”: Suppose to the contrary that not every natural number can be so described. Let $ S$ be the set of all natural numbers which are describable in fewer than twenty words. Consider $ R = \mathbb{N}-S$, the set of all words which cannot be…
27 Jul 2011
This post assumes familiarity with the terminology and notation of linear algebra, particularly inner product spaces. Fortunately, we have both a beginner’s primer on linear algebra and a follow-up primer on inner products. The Quest We are on a quest to write a program which recognizes images of faces. The general algorithm should be as follows. Get a bunch of…
26 Jul 2011
Für ein aktuelles Projekt wollte ich gestern mal wieder Visual Studio 2008 benutzen, da ich in C# eine Funktionalität implementieren musste. Ich startete also Visual Studio öffnete die Projektmappe und bekam den Fehler “Der Projekttyp wird von dieser Installation nicht unterstützt”. Das Projekt nutzte das ASP.NET MVC -Framework und so […] The post Visual Studio 2008: "Der Projekttyp wird von…
It is now possible to share all public tracks and playlists to the connections of the authenticated user. So if a user is already connected e.g. with Facebook on SoundCloud, this connection can be used from your app to share a track.
25 Jul 2011
Vector spaces alone are not enough to do a lot of the interesting things we’d like them to do. Since a vector space is a generalization of Euclidean space, it is natural for us to investigate more specific types of vector spaces which are more akin to Euclidean space. In particular, we want to include the notion of a dot…
UPDATE: We made some changes to how we manage the App Gallery. Read about them here: The Next App Gallery Update So you’ve built a fantastic app that you would like to get showcased in the SoundCloud App Gallery? Here’s what you can do to improve your chances of getting your app featured and increase the likelihood of SoundCloud users…
23 Jul 2011
We present a video on Möbius transformations and the geometry of the sphere. Anyone who has taken or will take complex analysis (that means you engineers!) should watch this. It shows not only the beautiful correspondence between the two, but it reveals the intuition behind a lot of complex analysis, when more often than not a student is left in…
22 Jul 2011
Today we announce new activities available over the API. As a reminder: Activites are the items on your Dashboard.
20 Jul 2011
“Tonight’s the Night” A large volume of research goes into the psychological and behavioral analysis of criminals. In particular, serial criminals hold a special place in the imagination and nightmares of the general public (at least, American public). Those criminals with the opportunity to become serial criminals are logical, cool-tempered, methodical, and, of course, dangerous. They walk among us in…
Today we announce a better way to share sounds in SoundCloud via the API. The new interface resembles the way sharing happens on the website. You can retrieve, create, update and delete sharings to other users on SoundCloud based on user_id or email address for your tracks and playlists.
19 Jul 2011
It seems that false proofs are quickly becoming some of the most popular posts on Math ∩ Programming. I have been preparing exciting posts on applications of graph coloring, deck stacking, and serial killers. Unfortunately, each requires resources which exist solely on my home desktop, which is currently dismantled in California while I am on vacation in Costa Rica. Until…
Corruption, hacking, and a mysterious death: The News Corp scandal takes a dark turn.
16 Jul 2011
Problem: Show that all horses are of the same color. “Solution”: We will show, by induction, that for any set of $ n$ horses, every horse in that set has the same color. Suppose $ n=1$, this is obviously true. Now suppose for all sets of $ n$ horses, every horse in the set has the same color. Consider any…
15 Jul 2011
I like to say that feature branches are evil in order to get people’s attention. However in reality I lack the determination and confidence to be a zealot. So here is the non-soundbite version.
14 Jul 2011
How many colors are required to color the provinces of Costa Rica? A common visual aid for maps is to color the regions of the map differently, so that no two regions which share a border also share a color. For example, to the right is a map of the provinces of Costa Rica (where the author is presently spending…