At SoundCloud, we’re building an ecosystem where creativity thrives. Developers are an important part of that ecosystem. We’re continually…
16 Jun 2015
15 Jun 2015
“If you don’t know how compilers work, then you don’t know how computers work. If you’re not 100% sure whether you know how compilers work, then you don’t know how they work.” — Steve Yegge There you have it. Think about it. It doesn’t really matter whether you’re a newbie or a seasoned software developer: if you don’t know how…
13 Jun 2015
Today I was devastated to learn of yet another women being driven from the tech industry. This is so far from being all right it does not even register on the same scale. The tech industry is a sick, male dominated, misogynistic, flaccid void that continues to permit weak, small, frightened men to abuse and […]
12 Jun 2015
Here's May 2015's monthly analysis of the pushes to our Mozilla development trees. You can load the data as an or as a . The number of pushes decreased from those recorded in the previous month (8894) with a total of 8363. HTML page json file Trends Highlights General Remarks Records 8363 pushes 270 pushes/day (average) Highest number of pushes/day:…
11 Jun 2015
Check out the UDOO Neo, an IoT embedded board that combines the power of Arduino and Raspberry Pi with Bluetooth and WiFi connectivity.
How to control Raspberry Pi LEDs from a web browser in real time. This is a basic Raspberry Pi LEDs remote configuratio tutorial using Python.
10 Jun 2015
How to build a real-time weather station with the Intel Edison board, weather sensor, Cylon.js, freeboard.io, and stream to a real-time UI dashboard.
9 Jun 2015
Welcome to the jOOQ Tuesdays series. In this series, we’ll publish an article on the third Tuesday every other month where we interview someone we find exciting in our industry from a jOOQ perspective. This includes people who work with SQL, Java, Open Source, and a variety of other related topics. We have the pleasure … Continue reading jOOQ Tuesdays:…
You’re confident about the core ideas behind Rails. You can write working code, no problem. And you’re learning more about code quality, refactoring, writing great tests, and object-oriented design. By this point, you’re starting to feel like you’re getting it, that you’re on the path to becoming an expert. When you look backwards, you see just how far you’ve come,…
8 Jun 2015
A few months ago I introduced gb as a proof of concept to the audience at GDG Berlin. Since then, together with a small band of contributors and an enthusiastic cabal of early adopters, gb has moved from proof of concept, written mostly on trains during a trip through Europe, to something approaching a usable […]
A while back we featured a post about why learning mathematics can be hard for programmers, and I claimed a major issue was not understanding the basic methods of proof (the lingua franca between intuition and rigorous mathematics). I boiled these down to the “basic four,” direct implication, contrapositive, contradiction, and induction. But in mathematics there is an ever growing…
Requests for playlists have always included the full track objects contained within. This representation may be convenient for playlists…
7 Jun 2015
Here’s the same analysis of estimating population growth using Stan. data { int<lower=0> N; // number of observations vector[N] y; // observed population } parameters { real r; } model { real k; real p0; real deltaT; real sigma; real mu0; real sigma0; vector[N] p; k <- 1.0; p0 <- 0.1; deltaT <- 0.0005; sigma … Continue reading Population Growth…
This is a tale about how we use Docker to test Docker. Yes, I am familiar with the meme. Puhlease. Many of you are familiar with the fact I work on the Docker core team. Which consists of fixing bugs, doing releases, reviewing PRs, hanging out on IRC, mailing lists etc etc etc. But what you may not know is…
Hacking the :visited selector to show unread posts. We'll look at the limitations and my little work-around.
6 Jun 2015
Introduction Let us see if we can estimate the parameter for population growth using MCMC in the example in which we used Kalman filtering. We recall the model. And we are allowed to sample at regular intervals In other words , where is known so the likelihood is Let us assume a prior of then … Continue reading Population Growth…
Learning Go was in my TODO list for a while, and finally I did something about it. This post contains some thoughts about it…
5 Jun 2015
bytes.Buffer is a tremendously useful type, but it’s a bit large1. % sizeof -p bytes Buffer Buffer 112 … and that is just the overhead, we haven’t put any data into the buffer yet. This Friday’s2 challenge is to write a replacement for bytes.Buffer that implements io.ReadWriter and allows the caller to discover the length and capacity of the […]
3 Jun 2015
At the moment, I’m spending a fair amount of time thinking about a new version of the C# API and codegen for Protocol Buffers, as well as other APIs for interacting with Google services. While that’s the context for this post, I want to make it very clear that this is still a personal post, … Continue reading Backwards compatibility…
How Backbone.js’s Model and View architecture can be integrated with to create one such web app which is always alert to real-time changes.
2 Jun 2015
You probably know about “ordinary views” already, but I’m sure you’ll find one or two things in this article that you haven’t thought about in this way yet… What exactly are SQL views? Views in SQL are a means of treating complex queries in the same way as “ordinary” tables. In fact, SQL is all … Continue reading What Exactly…
PubNub's Project EON is an open source JavaScript framework that lets you stream data to create beautiful dashboards, maps, and charts, updated in real time.
The keypress event works maddeningly differently in Chrome/Safari and Firefox, and this is the story of how I spent two hours discovering that, so that hopefully you don’t have to. Keypress what? A keypress event is one of the events you get when you mash on the keyboard. It’s special because according to the spec, you should only get a…
1 Jun 2015
When you use Ruby to wrap an API, you have to have a way to configure it. Maybe the wrapper needs a username and secret key, or maybe just a host. There are a few different ways to handle this. So which one should you choose? The easy, global way You might want your service to act like it’s always…
31 May 2015
Thames Flux It is roughly 150 miles from the source of the Thames to Kingston Bridge. If we assume that it flows at about 2 miles per hour then the water at Thames Head will have reached Kingston very roughly at days. The Environmental Agency measure the flux at Kingston Bridge on a twice daily … Continue reading The Flow…
If you've followed any tech news aggregator in the past week (the week of the 24th of May, 2015), you've probably seen the story about how SourceForge is taking over admin accounts for existing projects and injecting adware in installers for packages like GIMP. For anyone not following the story, SourceForge has a long history of adware laden installers, but…
This is a summary of reasons why you should still use Ruby: It is a language with a terrific community (welcoming and always questioning itself) and ecosystem (a lot of problems already solved), which is beautiful (focus on productivity), a little conservative (in the sense that it is easy to work with), and general purpose (a good choice in most…
30 May 2015
I’m going to be speaking at OSCON this year about Go performance. The title of the talk is High performance servers without the event loop and will focus on the features of the language and its runtime that transparently let Go programmers write high performance network servers without resorting to event loops and callback spaghetti. As the […]
Ruby's regex engine defines a lot of shortcut character classes. Besides the common meta characters (\w, etc.), there is also the POSIX style expressions and the unicode property syntax. This is an overview of all character classes: Meta Chars Char Negation ASCII Unicode . - ¹ Any ¹ Any \X - Any Grapheme clusters (\P{M}\p{M}*) \d \D [0-9] ² ASCII…
29 May 2015
If you take a closer look, you'll notice that Ruby's grammar has quite a few edge-case where its syntax is inconsistent or ambiguous: Binary Minus vs Minus taken as Unary Method Argument >> [1,3,4,5].size - 1 # => 3 >> [1,3,4,5].size -1 # wrong number of arguments(1 for 0) No Simple Rule, if a Symbol can be Displayed Without the…
28 May 2015
How to calculate geolocation proximity to other locations, and compare that first location to surrounding locations using the GoogleMaps API.
There is an operator in Ruby, that does nothing: The unary plus operator. It is part of the language for keeping symmetry with the unary minus operator! This is awesome, an operator for free! How can we utilize it? Update: In Ruby 2.3, the plus operator got its first purpose: Create an unfrozen copy of a string string = "frozen…
27 May 2015
TIL that Bell Labs and a whole lot of other websites block archive.org, not to mention most search engines. Turns out I have a broken website link in a GitHub repo, caused by the deletion of an old webpage. When I tried to pull the original from archive.org, I found that it's not available because Bell Labs blocks the archive.org…
Code Golf is the art of writing the shortest program possible. The less bytes the better. And the competition is just ridiculously strong! Head over to Anarchy Golf if you want to see more! A good beginner's problem is printing out Pascal's Triangle: Spend a few days to get to 45 bytes. Spend a few months to get to 43…
26 May 2015
Go's empty interface: Flexibility at a cost.
Keybase.io is a new service that combines asymmetric cryptography with a social network. It allows users to easily share public keys and authenticate messages by linking keys to profiles on Twitter, GitHub, Reddit, etc. The service provides encrypted messaging and bitcoin wallet pairing to make adopting cryptography seamless.
CMDBuild supports the usage of SQL queries inside the “filter” options if the type is a REFERENCE. Given: A lookup table named “Software Type” [{Code: DBMS}, {Code: App}] A class Application [{Code: MySQL, Type: DBMS}, {Code: PostgreSQL, Type: DBMS}, {Code: Tomcat, Type: App}]; “Type” references the lookup table “Software Type” […] The post Using Subselects with CQL in CMDBuilds “filter”…
Ruby has three default encodings. One of them is the default source encoding, which can be set using a magic comment in the file's first line, or in the second line if the first line is taken by a shebang. Default source encoding (UTF-8): p "".encoding #=> #<Encoding:UTF-8> With encoding comment (file_with_magic_comment.rb): # coding: cp1252 p "".encoding #=> #<Encoding:Windows-1252> See…
25 May 2015
CMDBuild is a free (“free” as in GPL v2) ITIL solution. The installation of the 2.3.1 version has been a pain in the ass. After applying the database information in the setup wizard, I always received an org.cmdbuild.exception.ORMException: ORM_GENERIC_ERROR. CMDBuild stores its log files (cmdbuild.log, cmdbuild_dd_sql.log) in the “logs” folder […] The post Trying to install CMDBuild and receiving an…
Boring languages are underrated. Many appear to be rated quite highly, at least if you look at market share. But even so, they're underrated. Despite the popularity of Dan McKinley's "choose boring technology" essay, boring languages are widely panned. People who use them are too (e.g., they're a target of essays by Paul Graham and Joel Spolsky, and other people…
Ruby clutters its objects a lot with methods for metaprogramming other methods: Class.instance_methods.grep /method/ => [:instance_methods, :public_instance_methods, :protected_instance_methods, :private_instance_methods, :method_defined?, :public_method_defined?, :private_method_defined?, :protected_method_defined?, :public_class_method, :private_class_method, :instance_method, :public_instance_method, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :method,
Interpreters and compilers are interesting programs, themselves used to run or translate other programs, respectively. Those other programs that might be interpreted might be languages like JavaScript, Ruby, Python, PHP, and Perl. The other programs that might be compiled are C, C++, and to some extent Java and C#. Taking the time to do translation to native machine code ahead…
24 May 2015
The CoffeeScript Web Framework Zorium (source) is the web framework we use at Clay.io. This has been one of the most challenging projects I've worked on, with many great lessons learned. What follows is how Zorium came to be what it is today, and an explanation of design decisions in the framework. With Zorium (or any framework), the code is…
If you change one line in Ruby's source, it will support goto statements! You can install a patched version via RVM's patch feature: $ rvm install 2.2.2 -n goto --patch http://git.io/vfxF2 $ rvm use 2.2.2-goto What to do to play around with this new feature? Let's reimplement this famous bug in Ruby: # prepare some dummy data hashCtx = hashOut…
23 May 2015
Tired of good old, but slow Ruby? Try one of Ruby's successors: Name Compiles To Description Crystal Machine Fast Ruby Mirah JVM Fast Ruby in Java Opal JS Ruby for JavaScript CoffeeScript JS JavaScript for Rubyists Elixir BEAM Ruby for Erlang Scala JVM Multi-Paradigm Ruby Rooby Machine Simple Ruby Rubex Machine Ruby Extensions Ruby Goby Machine Go meets Ruby All…
22 May 2015
In this blog post David Gee, a Senior Product Manager on our Product team, discusses challenges to building and maintaining technical partnerships between organizations as well as provides advice on how to overcome those challenges. Every company comes to a point, early or late, where it realizes that it must partner with other companies to […]
In case you haven’t heard, there’s a new SSL/TLS vulnerability making the rounds. Nicknamed Logjam, the new attack is ‘special’ in that it may admit complete decryption or hijacking of any TLS connection you make to an improperly configured web or mail server. Worse, there’s at least circumstantial evidence that similar (and more powerful) attacks might already be … Continue…
In this tutorial I’ll explain how to set a local gerrit server that hosts Android source code. After completing the tutorial you’ll have a fully runnable local AOSP mirror with local Gerrit server. First thing first. we need a Linux server. if you don’t have one available, you can use a pre-installed Ubuntu 15.04 Server I […]
This is a quick Friday blog post to talk about a recent experience I had working on a piece Juju code that needed to capture the data being sent over a net.Conn. Most Gophers know that the net package provides a net.Pipe function which returns a pair of net.Conns representing an in memory network connection. net.Pipe […]
Ruby has a built-in feature that is much like Literate CoffeeScript. In contrast to it, this Ruby option will not ignore literature, but garbage: -x[directory] Tells Ruby that the script is embedded in a message. Leading garbage will be discarded until the first line that starts with “#!” and contains the string, “ruby”. Any meaningful switches on that line will…
21 May 2015
Most of your code is private, internal, proprietary, and will never be exposed to public. If that’s the case, you can relax – you can refactor all of your mistakes, including those that incur breaking API changes. If you’re maintining public API, however, that’s not the case. If you’re maintaining public SPI (Service Provider Interfaces), … Continue reading Do Not…
This tutorial shows you how to remote control your Tessel Servo remotely and track the Tessel Servo movement and current position in real time.
How to receive a Tessel RFID event and act on it, triggering an action in real time. We'll receive and interpret RFID events, & match it against code.
Ruby's URI standard library contains a very sophisticated regex for matching URLs: "At https://idiosyncratic-ruby.com you can learn about the " \ "obscure parts of Ruby"[URI.regexp] # => "https://idiosyncratic-ruby.com" This regex is built in uri/rfc2396_parser.rb and looks like this: $ ruby -v ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux] $ ruby -r uri -e 'p URI.regexp' / ([a-zA-Z][\-+.a-zA-Z\d]*): (?# 1: scheme) (?:…
20 May 2015
“We learn most when we have to invent” —Piaget In Part 2 you created a minimalistic WSGI server that could handle basic HTTP GET requests. And I asked you a question, “How can you make your server handle more than one request at a time?” In this article you will find the answer. So, buckle up and shift into high…
A guide to Ruby's stdlib and available alternatives. Please note: The standard library was turned into gems, see stdgems.org for up-to-date information on all standard gems! Standard Library Overview Library Sources Description Alternatives abbrev mri Small library that finds the shortest abbreviation to identify one string amongst many - base64 mri Encodes and decodes strings to a Base64 representation. Implemented…
19 May 2015
Pay people more! It’s really that simple. If you care so much about retention, put your money where your mouth is.
In this part, we'll use the Tessel to detect a Tessel RFID module scan and send the information in real time to trigger an action.
While the JVM is a stack-based machine, the Java language doesn’t really offer you any way to access that Stack. Even if sometimes, in rare occasions, it would be very useful. An example Method result values are put on the stack. If you look at the following example: If we ignore the halting problem, error … Continue reading How to…
This episode takes a look at the unusual use of symbols in one of Ruby's core APIs: Enumerable#chunk The chunk method splits the receiver object into multiple enumerators, using the rule defined in the block. It keeps together the parts that match in series. It then passes the result of this rule and an enumerator of the successive elements to…
18 May 2015
When addressing the question of what it means for an algorithm to learn, one can imagine many different models, and there are quite a few. This invariably raises the question of which models are “the same” and which are “different,” along with a precise description of how we’re comparing models. We’ve seen one learning model so far, called Probably Approximately…
Ruby's Struct class is a convenient way to create Ruby classes, which already have some attributes defined. If you are not familiar with structs, you should watch Avdi Grimm's introduction to structs! But in many cases there is something better than structs: Gems that Define Attributes for "Plain Old Ruby Objects" Instead of using a specialized struct-class (which has different…
In October 2014, Apple announced that all submissions to the App Store must include 64-bit support by June 1, 2015. The SoundCloud API for…
17 May 2015
Here's a conversation I keep having: Someone: Did you hear that Facebook/Google uses a giant monorepo? WTF! Me: Yeah! It's really convenient, don't you think? Someone: That's THE MOST RIDICULOUS THING I've ever heard. Don't FB and Google know what a terrible idea it is to put all your code in a single repo? Me: I think engineers at FB…
One of Ruby's goals was to replace popular unix stream editors like awk or sed, which both have the concept of manipulating files in a line-based manner. Ruby has the -n option for this: Causes Ruby to assume the following loop around your script, which makes it iterate over file name arguments somewhat like sed -n or awk. while gets…
16 May 2015
It’s a bit of a sensationalistic title, but hear me out. And sorry for the boring-ish example in this article. This is designed to only excite people who really get it. :) AWS Lambda lets you run NodeJS code or any binary (or code of any language) as a fast starting and stopping EC2 instance. You can use it to,…
Ruby allows you to change key functionality of the language. This means, it is also possible to break key functionality! Six examples of Ruby code you should never use: Undefining Core Methods The simplest way to change Ruby's global behavior is monkey patching: Nothing stops you from altering important core methods: class Module; undef append_features; end This line will break…
15 May 2015
At ContaAzul, we had 31 Windows machines powering our Selenium tests - one running the grid and 30 more running clients. Needless to say, this is very expensive.
All Ruby syntaxes¹ that represent the R string literal: (1) Double Quoted Literal "R" (1) Single Quoted Literal 'R' (1) Single Char Literals ?R (9) Heredocs <<"STRING" R STRING <<'STRING' R STRING <<STRING R STRING <<-"STRING" R STRING <<-'STRING' R STRING <<-STRING R STRING <<~"STRING" R STRING <<~'STRING' R STRING <<~STRING R STRING (66) Percent Syntax / Q %Q\0R\0 %Q\x01R\x01…
14 May 2015
How to display broadcasted Android location data on a live-updating map, in real time, using the Android MapBox API
Who doesn’t know them. The good old JFace dialogs in Eclipse that give you a visual representation of what is really a rather simple XML or properties file. In the case of m2e, it looks like this: Unfortunately, this screen is a bit slow to load, and it doesn’t offer much value beyond checking version … Continue reading Use This…
There are two very different ways to create local variables in Ruby. You are probably familiar with the classical way: a, b = "$", "€" a # => "$" b # => "€" It is simple to understand and looks good. But Ruby would not be Ruby, if there weren't for more obscure ways to assign variables: You could rewrite…
Intro # BT is an alright ISP, I get good speeds (150D/40U), never get throttled and have yet to hear anything about my internet activity which involves a fair amount of P2P.. their hardware however is god awful, and the BT HomeHub 5 is no exception to that. I won’t go into how bad it is because if you’re reading…
13 May 2015
illustration by Adrien Griveau Last week, Point Nine Capital invited the CTOs and VPs of Engineering of their portfolio companies. The event took place in Google’s offices in Berlin. I was flattered to get invited and had the opportunity of spending the day next to great people from famous startups such as Morten Primdahl , Co-founder and CTO at Zendesk,…
We’re very happy to announce a guest post on the jOOQ Blog written by Daniel Dietrich, Senior Software Engineer at HSH Nordbank, husband and father of three. He currently creates a pricing framework for financial products as project lead and lead developer. Besides his work, he is interested in programming languages, efficient algorithms and data … Continue reading Functional Programming…
"Unexpected compassion bridges divides in a world of conquest."
Ruby puts a lot of effort into its Enumerable module, offering a lot of different ways of iterating through collections. It is one of the reasons for Ruby's success, but you can also call it idiosyncratic, sometimes. This episode portraits enumerables' three handy slice_* methods. Slicing Enumerables Slicing lets you divide a collection into sub-collections. Take this array: a =…
12 May 2015
Whenever you feel that itch… Can’t I calculate this with SQL? The answer is: Yes you can! And you should! Let’s see how… Calculating time differences between rows Let’s consider the following database containing timestamps (e.g. in a log database). We’re using PostgreSQL syntax for this: Obviously, you’ll be adding constraints and indexes, etc. Now, … Continue reading Use this…
We're hosting an Android webinar! Learn to build a real-time app for Android using the PubNub Java SDK, and other real-time features.
Or “what the hell is this Docker thing?”
Some of IRB's command-line options can be called idiosyncratic as well. Take math mode¹ as an example: It will require the infamous mathn library on start up: $ irb -m >> Math #=> CMath >> 3/2 #=> (3/2) >> !!defined?(Vector) #=> true ¹ Math mode actually has been removed in Ruby version 2.5 And another one surprised me: You can…
11 May 2015
The flickr-set-get command line app makes it easy to download entire Flickr galleries. It uses the Flickr API and Node.js asynchronous programming to download photos in parallel. The post explains the motivation behind the project, the technologies used, and how the asynchronous code works.
In April 2015 I gave a presentation to the GDG Berlin meetup group (slides, video) discussing my views on reproducible builds using the Go programming language. As part of that presentation I demonstrated a replacement build tool that I had been developing, gb. From the feedback I received after the meetup it was clear that […]
How to build a real-time temperature sensor with an Atmel MCU that collects, streams, and visualizes temperature data on a real-time dashboard.
You are here for a collection of 10 advanced features of regular expressions in Ruby! Regex Conditionals Regular expressions can have embedded conditionals (if-then-else) with (?ref)then|else. "ref" stands for a group reference (number or name of a capture group): # will match everything if string contains "ä", or only match first two chars regex = /(.*ä)?(?(1).*|..)/ "Ruby"[regex] #=> "Ru" "Idiosyncrätic"[regex]…
10 May 2015
Like my old post on git, this is somewhat a collection of useful Docker commands/tricks/whatever.
Ruby's ENV object gives you access to environment variables. It looks like normal Ruby hash: ENV["TERM"] #=> "xterm" ENV["SOMETHING"] = "NEW" #=> "NEW" But this is only the surface. Turns out ENV is a special object: ENV.class #=> Object It is hash-like, but lacks some functionality: ENV.flatten # NoMethodError ENV.default = "MyNullObject" # NoMethodError Besides this, it behaves like an…
9 May 2015
I created pre-installed Ubuntu Server 15.04 64bit Virtualbox image to be used for various server side setups. It can be freely downloaded and used by you. all packages were updated to the current date (9/5/15). openssh server was installed and set to default port File can be downloaded from here: Link: UbuntuServer1504VboxImage.tar.bz2 MD5: eff64b08b8e2fc4ceb668a4e1a62b82d The […]
This is an overview of all the special, two-letter (and other) global variables in Ruby, which Ruby inherited from Perl. For the purpose of improving code readability, Ruby comes with English.rb in its standard library (or Deutsch.rb as gem), which provides non-cryptic aliases and some documentation. Ruby also defines some three-letter global variables that mirror CLI options ($-…) Types of…