At Canonical we’re increasingly invested in gccgo. While testing various packages built with gccgo we ran across test failures which we traced to an innocent looking piece of code. package main import "fmt" type T struct { i int } func (t *T) readInt32() int32 { t.i += 4 return 42 // not important } […]
15 Nov 2013
14 Nov 2013
In a previous post I blogged about the cover tool coming in Go 1.2 and a bash helper function I use to make the tool a little easier to use. Since then I’ve extended these helpers so I wanted to blog about the improvements. Passing arguments to the testing tool cover () { t=$(tempfile) go […]
13 Nov 2013
This is a brief post highlighting a curious aspect of the declaration syntax in Go. Most Go programmers know that the following of import declarations are equivalent import "fmt" import "math/big" // same as import ( "fmt" "math/big" ) The same applies to const declarations const FORTYTWO = 42 const TRUE = 1 // same […]
11 Nov 2013
I bet you’ve heard about the awesome Atlassian Hackathons (“ShipIt days”), which regularly influence the product roadmaps. These hackathons last roughly 28 hours, and end with presentations to the entire company – voting and plastic trophies included. That’s all great if your team consists of 20 or more developers. But what if you’re only, say, […]
10 Nov 2013
In CPU design, most successful teams have a fairly long lineage and rely heavily on experienced engineers. When we look at CPU startups, teams that have a successful exist often have a core team that's been together for decades. For example, PA Semi's acquisition by Apple was a moderately successful exit, but where did that team come from? They were…
9 Nov 2013
When there is a problem with your software, the first thing you usually ask for is a log showing what happened (provided you write debuggable code), and the version of the software that was running. But it is easy to … Continue reading →
8 Nov 2013
As a developer I’ve used a variety of APIs and as a Developer Advocate at Bazaarvoice I help developers use our APIs. As a result I am keenly aware of the importance of good tools and of using the right tool for the right job. The right tool can save you time and frustration. With […]
In the last twenty years there has been a lot of research in a subfield of machine learning called Bandit Learning. The name comes from the problem of being faced with a large sequence of slot machines (once called one-armed bandits) each with a potentially different payout scheme. The problems in this field all focus on one central question: If…
7 Nov 2013
A few days ago I was working on an example program for the sftp package and found I needed to implement subcommand handling. https://twitter.com/davecheney/status/397686194462396416 The response was fantastic, no less than 12 different packages. I haven’t had the chance to review any of the packages in detail, but I wanted to list them here as […]
6 Nov 2013
Let’s supose you want to develop your own URL shortener, like Bit.ly for example. You can, of course, use the ID as a integer, like, 1, 2, 3, etc. If you have 12.345 rows in your database table, you will need 5 digits, like http://example.com/12345. Large applications like Youtube, have much more entries, so, to … Continue reading Generating IDs…
As noted at the Mozilla blog, OTOY and Amazon along with Autodesk and Mozilla have announced the next step in Amazon and OTOY’s GPU/cloud effort. Demo videos: This means developers can get started using ORBX.js with GPU-cloud encoding and downloadable decoding on all modern Web clients. It also means that any of the Hollywood Six … Continue reading "Today I…
5 Nov 2013
How to get a Raspberry Pi up and running with PubNub and Raspbian for the purpose of connected/embedded device demos
4 Nov 2013
Generally assets are stored in your public directory, right? They are public, so anyone can get access to them. But nowadays the performance is a very important factor when deploying a new app. I strongly recommend you to minify and cache your assets, like CSS files, Javascript files and Images. If you are using 11 … Continue reading Managing assets…
On April 21st, 2014, I’m going to run the Boston Marathon. If you want to show your support, please donate to a good cause for cancer research. Anyone who wants to give is welcome. 🙂 So many people have been affected by cancer, including members of my own family. The Dana-Farber Cancer Institute funds basic […]
With the release of go1.2rc3 last week I have now merged the autobench-next branch into master in the autobench repository. Go 1.2 is not expected to bring performance improvements of the same magnitude of Go 1.1, but moderate improvements are expected due to improvements in code generation, the runtime, the garbage collector, and the standard […]
31 Oct 2013
For Halloween 2013 I decided to be the Dread Pirate Roberts from the movie The Princess Bride: I even grew a slight moustache to help make the character believable: But to be clear, I wasn’t just any old Dread Pirate Roberts. I decided to be the Silk Road Dread Pirate Roberts. So if you want […]
30 Oct 2013
How to build a real-time stock quote streaming application with PubNub using PHP and JavaScript and a stock quote API.
As I noted last year, one of the biggest challenges to open source software has been the patent status of video codecs. The most popular codec, H.264, is patent-encumbered and licensed by MPEG LA, under terms that prevent distributing it with open source products including Firefox. Cisco has announced today that they are going to … Continue reading "Cisco’s H.264…
28 Oct 2013
startups The software world is always atwitter with predictions on the next big piece of technology. And a lot of chatter focuses on what venture capitalists express interest in. As an investor, how do you pick a good company to invest in? Do you notice quirky names like “Kaggle” and “Meebo,” require deep technical abilities, or value a charismatic sales…
27 Oct 2013
What's the first thing you do when you find a bug or see a missing feature in an open source project? Check out the project page and submit a patch! Oh. Maybe their message is so encouraging that they get hundreds of pull requests a week, and the backlog isn't that bad. Maybe not. Giant sucker than I am, I…
23 Oct 2013
How to build a secure chat application using Access Manager for fine grain, serverless control over chat users.
I had a fun weekend analysing car parking data in Westminster at the Future Cities Hackathon along with Amit Nandi Bart Baddeley Jackie Steinitz Ian Ozsvald Mateusz Łapsa-Malawski Apparently in the world of car parking where Westminster leads the rest of UK follows. For example Westminster is rolling out individual parking bay monitors. Our analysis … Continue reading Parking in…
To lighten the mood: But actually, I’m serious. People are rightly concerned about what is going on in the W3C with DRM, as couched in the Encrypted Media Extensions (EME) proposal. Please read Henri Sivonen’s explanation of EME if you haven’t yet. As usual for us here at Mozilla, we want to start by addressing … Continue reading "The Bridge…
Both our Android and iOS teams use the reactive programming paradigm to simplify asynchronous, concurrent code in our native mobile apps…
22 Oct 2013
We're pleased to announce the launch of Access Manager, adding serverless access control to your PubNub web or mobile app
Realtime Conf 2013: Where innovation meets whimsy in the world of tech conferences.
20 Oct 2013
Over on the Twilio Engineering Blog, I have a new post about optimizing your HAProxy configuration. I wrote this mostly because we had some confusion in our configuration about setting options, and if I had it I figured others would as well. Here's a sample: When I said a 30 second connect timeout meant HAProxy […]
This is a quick post explaining how to install Ubuntu 12.04 on your Udoo Quad board (I’m sure the instructions can be easily adapted to the Dual unit as well). The Udoo folks have made available two distributions, Linaro Ubuntu 11.10 and Android 4.22. The supplied Linaro distribution is very good, running what looks like […]
17 Oct 2013
Every year Bazaarvoice holds an internal technical conference for our engineers. Each conference has a theme and as a part of these conferences we invite noted experts in fields related to the theme to give presentations. The latest conference was themed “unlocking the power of our data.” You can read more about it here. Nick […]
15 Oct 2013
This post explains how the Go build process works using examples from Go’s standard library. The gc toolchain This article focuses on the gc toolchain. The gc toolchain takes its name for the Go compiler frontend, cmd/gc, and is mainly used to distinguish it from the gccgo toolchain. When people talk about the Go compilers, they […]
14 Oct 2013
A few weeks ago, after learning about the NSA’s efforts to undermine encryptionsoftware, I wrote a long post urging developers to re-examine our open source encryption software. Then I went off and got distracted by other things. Well, I’m still distracted by other things, but people like Kenn White have been getting organized. Today I’m proud to announce the ……
One of the best improvements of the PHP 5.4 was the built-in web server. Like in Ruby On Rails, now you do not need Apache or Nginx inside your development machine. To start a web server is easy: php -S localhost:8000 Remember you can choose the port you want. You can use localhost:8000 or localhost:8080 … Continue reading Working with…
So, this is the all-new UP version. It is more based on my own blog in some way, which is some kind of branch of the theme.
I just give a talk at Wicked Good Ruby Conf in Boston. I’m sure the talk will be online soon, but I figured it would be interesting to discuss it a bit further in a blog post. The format was a bit different than usual, I had a 40 minute slot and divided in 2, I made my points for…
13 Oct 2013
Preface The intended audience of this article is someone who knows something about Machine Learning and Artifical Neural Networks (ANNs) in particular and who recalls that fitting an ANN required a technique called backpropagation. The goal of this post is to refresh the reader’s knowledge of ANNs and backpropagation and to show that the latter … Continue reading Backpropogation is…
12 Oct 2013
When developing Go packages that rely on specific features of the underlying platform or processor it is often necessary to provide a specialised implementation. Go does not have a preprocessor, a macro system, or a #define declaration to control the inclusion of platform specific code. Instead a system of tags and naming convention defined in the go/build […]
11 Oct 2013
Some of y’all may have caught our previous blog post announcing the release of our Java JSON transformation library, Jolt. Jolt is a powerful tool that can accomplish a variety of useful transformations on JSON data, and even chain multiple transformations together. Jolt has additional functionality that is useful for working with JSON including the […]
Picture the following scenario: You have an Enterprise Application Archive (EAR) which contains an EJB module and a WAR file. The web application uses a Spring application context and the same application context must be – for some reason – shared with your EJB. Using the beanRefContext.xml which points to […] The post Sharing the Spring application context from a…
10 Oct 2013
One of the stated goals of Go was to provide a language which could be built without Makefiles or other kinds of external configuration. This was realised with the release of Go 1, and the go tool which incorporated an earlier tool, goinstall, as the go get subcommand. go get uses a cute convention of embedding the […]
9 Oct 2013
Here is PubNub’s guide on how to build a C# game server to manage the game state of multiplayer games.
In this tutorial, we'll show you how to build the iOS client side for iOS games using Objective-C. In this example, we'll build a iOS poker game.
This two part series on building an iOS app with a client-server model was developed by our two summer ...
8 Oct 2013
7 Oct 2013
Did you know that Go 1.2 will ship with a built in test coverage tool ? The tool is integrated into go test and works similarly to the profiling tool, producing an output file which is interpreted by a second command. If you have Go 1.2rc2 or tip installed, you can use this short shell […]
Sketchy is a spam-fighting, open-source software framework developed by SoundCloud engineers Matt Weiden, Rany Keddo, and Michael Brückner…
5 Oct 2013
I learned very quickly while working on a large open source project is that it is important to make my code hard to break. The primary line of defense for this is a comprehensive test suite, but I think it’s also very important to create functions that are easy to use and difficult to damage. I find I even code…
4 Oct 2013
You ever notice that there's this funny threshold for getting to the front page on sites like HN? The exact threshold varies depending on how much traffic there is, but, for articles that aren't wildly popular, there's this moment when the article is at N-1 votes. There is, perhaps, a 60% chance that the vote will come and the article…
3 Oct 2013
Every year Bazaarvoice holds an internal technical conference for our engineers. Each conference has a theme and as a part of these conferences we invite noted experts in fields related to the theme to give presentations. The latest conference was themed “unlocking the power of our data.” You can read more about it here. In […]
1 Oct 2013
A guest blog post by Christiaan Brand, CTO at Entersekt, Cape Town Managing user identities in a corporate setting is often pretty challenging — even more so if the company is expanding rapidly and trying to integrate some of the best Cloud-hosted tools into their environment. I’m Christiaan Brand, the CTO for Entersekt, a young, […]
30 Sept 2013
A lot of people who like functional programming often give the reason that the functional style is simply more elegant than the imperative style. When compelled or inspired to explain (as I did in my old post, How I Learned to Love Functional Programming), they often point to the three “higher-order” functions map, fold, and filter, as providing a unifying…
26 Sept 2013
Every year Bazaarvoice holds an internal technical conference for our engineers. Each conference has a theme and as a part of these conferences we invite noted experts in fields related to the theme to give presentations. The latest conferences was themed “unlocking the power of our data.” You can read more about it here. The […]
Someone recently asked me how I manage my to-do list, so I thought I’d write up the software that I use. Fundamentally I use Google Tasks as the backend, but with extensions and apps that improve on the basic functionality in Google Tasks. Chrome I use a couple different extensions for Chrome: – Better Google […]
ECMAScript 5’s Function.prototype.bind is a great tool that’s implemented in all modern browser JavaScript engines. It allows you to modify the context, this, of a function when it is evaluated in the future. Knowing what this refers to in various contexts is key to being a professional JavaScript developer; don’t show up to an interview without knowing all about it.…
25 Sept 2013
Actually this post is a outflow and at the same time an advice. I have seen some PHP developers that are completely OUT of what is happening in the PHP world, besides committing some mistakes that cannot be accepted. PHP 5.3+ If you are entitled as a PHP developer you must to update. In my … Continue reading Be a…
24 Sept 2013
Our new project makes use of Maven as build management tool. Eclipse (STS edition) is used for the development process. A part of the project consists of a transformation process which converts XML files to Java POJOs. Because of the given XML structure we used JAXB in combination with EclipseLink […] The post Unit tests inside Eclipse succeed, unit tests…
23 Sept 2013
22 Sept 2013
Introduction I recently purchased a Beaglebone Black (BBB) as a replacement for a Raspberry Pi which was providing the freebsd/arm builder for the Go build dashboard. Sadly the old RPi didn’t work out. I’m hoping the BBB will be a better match, faster, and more reliable. The BBB is a substantial upgrade to the original […]
21 Sept 2013
It feels a little odd even to write this post, but I receive quite a few emails asking me for advice on how to get better at programming, how to get through interviews, whether it’s better to be a generalist or a specialist etc. I want to make it very clear right from the start, … Continue reading Career and…
Clearly I’m biased when it comes to the popularity of Go, so here is another data point. [line_chart title=”#golang tweets per month” v_title=”tweets” width=”600px” height=”400px” scale_button=”true”] [‘Month’, ‘Tweets’], [ ‘2009-11’ , 60 ], [ ‘2009-12’ , 31 ], [ ‘2010-01’ , 14 ], [ ‘2010-02’ , 36 ], [ ‘2010-03’ , 56 ], [ ‘2010-04’ […]
Go 1.2 is on target for a December release and the Go team have just cut their first release candidate. You can find the draft (no twitterverse, Go 1.2 isn’t released yet) release notes for Go 1.2 online here. I have updated my unofficial ARM tarball distributions page with prebuilt go1.2rc1 tarballs. You can find them by following the link…
This blog post looks at how you can scale and add real-time features to your WebSockets application, while making it faster and more reliable.
20 Sept 2013
In today’s news of the weird, RSA (a division of EMC) has recommended that developers desist from using the (allegedly) ‘backdoored’ Dual_EC_DRBG random number generator — which happens to be the default in RSA’s BSafe cryptographic toolkit. Youch. In case you’re missing the story here, Dual_EC_DRBG (which I wrote about yesterday) is the random number generator voted most likely to…
SoundCloud has a service-oriented architecture, which allows us to use different languages for different services. With concurrency and…
19 Sept 2013
Note: this blog post has now been turned into a video by Webucator, to go alongside their C# classes. (I’ve ended up commenting on this issue on Stack Overflow quite a few times, so I figured it would be worth writing a blog post to refer to in the future.) There are lots of ways … Continue reading Casting vs…
This post is about the Twitter change from Ruby to Java, some years ago, fact that, sadly, is still being used by some people to say that Ruby sucks and Java is the best language in the world.
18 Sept 2013
The Dual_EC_DRBG generator from NIST SP800-90A. Update 9/19: RSA warns developers not to use the default Dual_EC_DRBG generator in BSAFE. Oh lord. As a technical follow up to my previous post about the NSA’s war on crypto, I wanted to make a few specific points about standards. In particular I wanted to address the allegation that … Continue reading The…
I have updated my unofficial ARM tarball distributions to Go version 1.1.2. You can find them by following the link in the main header of this page.
These days I’m thinking about productivity and the use of PHP frameworks. I’ve read some posts about framework X or Y, defending a framework instead of another one. I know people that use a framework like Zend Framework to develop a simple website just to say they’re using it, and not an “easy” framework. I … Continue reading Solve the…
An all too familiar scenario Imagine you’re a developer working for Widgets n’More. The marketing team just came up with a new cross platform social media promotion. It’s going to involve collecting user generated content in the form of ratings and reviews. As luck would have it you remember your friend on the Ecom Team […]
17 Sept 2013
We're pleased to announce our Series B round of funding to fuel the growth of our global real-time network.
Unraveling the tangled web of WordPress pharma hacks.
15 Sept 2013
Troll? That's how people write Verilog1. At my old company, we had a team of formal methods PhD's who wrote a linter that typechecked our code, based on our naming convention. For our chip (which was small for a CPU), building a model (compiling) took about five minutes, running a single short test took ten to fifteen minutes, and long…
12 Sept 2013
Introduction The planet Mercury has a highly elliptical orbit with a perihelion of about 0.31 AU and an aphelion of about 0.47 AU. This ellipse is not stationary but itself rotates about the Sun, a phenomenon known as the precession of the perihelion. A calculation carried out using Newtonian mechanics gives a value at variance … Continue reading The Precession…
11 Sept 2013
(This post is by Devin Carr, one of our Summer 2013 interns.) Working as a Developer Advocate intern on the Bazaarvoice Developer Relations team has been a great learning opportunity. At the beginning of the Summer I discussed with my mentors, Chas Peacock and Frederick Feibel, what I wanted to learn while interning. We decided […]
10 Sept 2013
AnglarJS is great! But when dealing with large lists containing complex data structure, things can get very slow! We ran into that problem when migrating our core admin screens to AngularJS. The screens were supposed to work smoothly when displaying some 500 rows. But the first approach took up to 7 seconds to rende. Terrible! […]
We've built an integration which allows you to instantly extend the reach of your RabbitMQ deployment to the web.
Readers of this blog will know this has been an interesting couple of days for me. I have very mixed feelings about all this. On the one hand, it’s brought this blog a handful of new readers who might not have discovered it otherwise. On the other hand, it’s made me a part of the … Continue reading A note…
9 Sept 2013
My First Paper I’m pleased to announce that my first paper, titled “Anti-Coordination Games and Stable Colorings,” has been accepted for publication! The venue is the Symposium on Algorithmic Game Theory, which will take place in Aachen, Germany this October. A professor of mine once told me that everyone puts their first few publications on a pedestal, so I’ll do…
The port of Juju to Go is a project I’ve been involved in at Canonical for some time now. The power behind Juju is charms, which are part configuration management and part reliable workflow engine. One non-conventional use of Juju is something I cooked up a while ago when traveling, a Juju charm that compiles […]
Following my previous posts with basic Javascript aspects, like context and variable hoisting, I’ll try to write some basic concepts of the Ruby language. I decided to start with something that usually confuses new Ruby users (sometimes they don’t even know that they are confused, by the way): the Ruby nil object.
Background When we started to work on the new version of our mobile web app, we knew we wanted to run unit tests on a wide variety of…
7 Sept 2013
It looks like Go 1.4 will remove support for Go packages containing C code (as described below, don’t confuse this with CGO), so enjoy it while it lasts. This is a short post designed to illustrate how Go package authors can write package level functions in C and call them from Go code without using […]
Verilog is the most commonly used language for hardware design in America (VHDL is more common in Europe). Too bad it's so baroque. If you ever browse the Verilog questions on Stack Overflow, you'll find a large number of questions, usually downvoted, asking “why doesn't my code work?”, with code that's not just a little off, but completely wrong. Lets…
6 Sept 2013
Let me tell you the story of my tiny brush with the biggest crypto story of the year. A few weeks ago I received a call from a reporter at ProPublica, asking me background questions about encryption. Right off the bat I knew this was going to be an odd conversation, since this gentleman seemed … Continue reading On the…
4 Sept 2013
A few days ago a post entitled Autoworkers of Our Generation floated across my radar. In his post, Greg Baugues argues that as developers, we have a short term advantage, and would do well to view our lot as a temporary anomaly. In this article I’d like to engage with his post, and respond. The key […]
This article is the second of a series of n articles, where n could be any given number between 1 and 2 (inclusive).
3 Sept 2013
Some relatives were visiting this past week, so my inbox has a triple digit backlog. That’s after aggressive pruning of mailing lists and so on. Nearly all of those emails mention me in a “to:” or “cc:” line and request a response. Some observations: – roughly 40% of those emails are from the outside world […]
2 Sept 2013
Imagining a world where remote work reigns: the ripple effects on society and cities.
1 Sept 2013
About The Blog This started out as a way to jot down thoughts on areas that seem interesting but underappreciated. Since then, this site has grown to the point where it gets millions of hits a month and I see that it's commonly cited by professors in their courses and on stackoverflow. That's flattering, but more than anything else, I…
31 Aug 2013
A lot of code I come across consists of relatively few, but long, methods. The code does what it is supposed to do. However, it could be improved a lot. Refactoring to use more methods can produce better structured programs … Continue reading →
30 Aug 2013
This week, we published "Why Business Intelligence Tools Need a Real-time Service Provider," looking at the emergence of real-time business intelligence too
29 Aug 2013
Business intelligence has evolved dramatically as a system over time. As a result of this evolution, along with the exponential development of real-time tec
As part of our internal BV I/O conference we’ve previously profiled on the blog, we had Adrian Cockroft, Cloud Architect at Netflix, come give us an overview of a lot of Netflix’s architecture as well as information on their multitude of open source projects and the ways Netflix is engaging the community to contribute. He […]
28 Aug 2013
Node.js is a great runtime for writing applications in JavaScript, the language I primarily develop in. CoffeeScript is a programming language that compiles to JavaScript. Why would we write a reusable piece of code, a module , in CoffeeScript? CoffeeScript is a very high level language and beautifully brings together my favorite aspects of JavaScript, Ruby, and Python. In this…
27 Aug 2013
Create a Backbone model or collection and have them synchronize with every other client instance of those models or collections in real time.