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 […]
4 Nov 2013
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 […]
The phrase, “we hire really talented people,” is the same line given by any software company these days who is serious about producing great software. I have seen, firsthand, that talent does not necessarily have an Ivy League background or a 4.0 GPA. Creativity and innovation is fostered in an environment where people are able to be their authentic selves,…
2 Nov 2013
A lot of people have asked me what models we use for recommendations at Spotify so I wanted to share some insights. Here’s benchmarks for some models. Note that we don’t use all of them in production. Performance for recommender models This particular benchmark looks at how well we are able to rank “related artists”. More info about models: vector_exp:…
1 Nov 2013
I am an application developer/consultant by profession and part of my work involves programming systems. I have been doing this for over 10 years now and I have often wondered, what is it that keeps me going. I have met quite a few professionals from the software industry who are motivated by the monetary gains by being in the industry.…
Unicorns. and Rainbows. Besides being Ruby gems, they also happen to exactly articulate the feeling I have in my head the moment I start thinking about programming.
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.
How to build a real-time stock quote streaming application with PubNub using PHP and JavaScript and a stock quote API.
At Thoughtworks, we combine a passion for social change with real-life experience in technology, design, delivery and deployment to help address the world's most pressing challenges.
29 Oct 2013
Today, Thoughtworks issued a press release in support of the USA Freedom Act sponsored by Senate Judiciary Chairman Patrick Leahy (D-VT) and House Judiciary oversight leader Jim Sensenbrenner (R-Wisc.). The USA Freedom Act seeks to end the bulk collection of Americans’ phone records, install a special advocate at the country’s surveillance court, and increase transparency for government agencies and online…
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…
25 Oct 2013
How would you like to win $1 million in a hackathon? Seriously. As you know, Heroku is part of the Salesforce Platform. A platform with a growing developer community and broad range of technologies that developers have used to create amazing solutions. So at Salesforce, we thought we’d cook up a little surprise. OK, a […] The post Compete to…
I find programming very similar to mathematics as far as the thought process is concerned. Programming involves solving problems by thinking abstractly about quantity, relationship and behaviour. As a programmer I have to either come up with a new algorithm or customise an existing one for the current problem and optimise it. The formal methods of thinking that mathematics demands…
I got into programming because I wanted a platform to express my ideas creatively and give them life. Just like every programmer, I wanted to work on cutting edge technologies and crack difficult problems. I strove to find the best solutions for the problems I came across and I did. When someone asked what I did for a living, I…
24 Oct 2013
Any sufficiently advanced technology is indistinguishable from magic. – Arthur C. Clarke. “Would you like the heel of those shoes to be red, madam? No problem, let me print them out for you.”
23 Oct 2013
How to build a secure chat application using Access Manager for fine grain, serverless control over chat users.
How to build a secure chat application using Access Manager for fine grain, serverless control over chat users.
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
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.
[Webinar] Top 3 Security Controls to Adopt Before Deploying Your App on the Cloud
Thoughtworks InsightsBefore Deploying Your App on the Cloud Security Compass and Thoughtworks discuss the top 3 security controls to adopt before you deploy your application to the cloud. Topics covered are:
21 Oct 2013
Editor's Note: This is a guest post from Hursh Agrawal, co-founder of Branch. At Branch, we’ve been through several feature launches on Branch and, more recently, several more on our new site, Potluck. Although it becomes easier, building high-quality, high-traffic web applications still isn’t easy. Here are a few things we’ve learned about hosting our […] The post How Branch…
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 […]
#3 in the Continuous Delivery webinar series "Eight in ten CEOs expect their environment to grow significantly more complex, and fewer than half believe they know how to deal with it successfully," says a recent IBM study of complexity in business. MIT Sloan School of management reports that agile organizations generate 30% higher earnings per share. The complexity problem and…
18 Oct 2013
Btw I just put something up online that I spent a couple of evenings in my couch putting together: it’s a website where you can track any numerical data on the web. Want to know how many Twitter followers you have? Temperature in NYC? Go to statself.com and start tracking it. Actually statself.com was just a domain name I had…
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 […]
Traditional businesses are floundering as people become increasingly interconnected, while humanity simultaneously grows more disjointed. Do you fear for the future of your bricks-and-mortar business or your electronic service in a world of smartphones, tablets, and new technologies not yet imagined (but soon to appear)?
16 Oct 2013
Hello there, today we are going to talk a bit about provisioning machines and VMs. The idea of this blog post is to show you some ways that can make it easier to develop, deploy and ramp-up new people on your team. So what is machine provisioning? All projects have their own dependencies -- having background services running, languages, jdks…
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 ……
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
The winner of the best build light (and a Go license) is Kevin Stock - @tantalic Toolhouse Build Status Light www.toolhouse.com.
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 […]
A typical build may have to clear several hurdles before it can be considered fit for release. For example:
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…
We are close to celebrating Ada Lovelace day on the 15th October so it seems important to take time to remember those women whose lives have been landmarks in the history of technology.
We are living in arguably one of the most exciting times in the history of retail. Witness the boundless opportunities retailers have to re-invent existing business models of how consumers shop today.
Ada Lovelace’s story is remarkable. A daughter of the Romantic poet Lord Byron, she grew up to become what is now recognized as the first computer programmer – ever. Not just the first woman, but ever. And a woman whose contributions to the birth of computing are inspiring women today. As a young woman in the early 1800s, Ada demonstrated…
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.
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.
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 ...
This two part series on building an iOS app with a client-server model was developed by our two summer ...
Can they work together? Agile methods are becoming increasingly common in application design, with their collaborative customer focus and iterative, test driven approach. They share many common principles, yet it is rare for Agile methods to incorporate user centred design. This article argues that by incorporating user-centred design (and in particular using low fidelity prototyping as an iterative model for…
Creating a Community for Technical Women in Quito
The BA Conf was held on Aug 24th, Saturday at our Bangalore office premises. The theme for this year was "Dimensions of Product Management". We had over 100 participants from various companies.
8 Oct 2013
After discussing issues with building software in part 1 and issues with buying software in parts 2 and 3, this concluding post of the series considers two approaches for organisations to deal with the buy versus build shift.
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…
Road, Airline, Rail and Shipping networks rely heavily on geography, routing and optimisation. As such they are perfect examples for being able to benefit from Graph databases. Tramchester: Public Transport App Tramchester is a new public transport mobile web application for the Tram network in Manchester UK, built by the Thoughtworks Tech Lab in just six weeks.
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…
We have already discussed the benefits of deploying from packages rather than from a tag, branch or binary. One of the benefits is the support for packages from infrastructure automation tools (e.g. Chef, Puppet, Ansible etc.).
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 […]
2 Oct 2013
“Most people, when they first hear about continuous deployment, think I’m advocating low-quality code or an undisciplined cowboy-coding development process. On the contrary, I believe that continuous deployment requires tremendous discipline and can greatly enhance software quality, by applying a rigorous set of standards to every change to prevent regressions, outages, or harm to key business metrics.” - Eric Ries,…
People lead cross-channel lives and constantly hop from one channel to another. Multi-channel shoppers are now in the majority, and spend significantly more than single-channel shoppers. This forces the traditional retail companies to face a critical decision, to accept a new but yet unrefined business model that includes multiple channels or to retain their single channel model and risk becoming…
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…
Thanks to Danilo, Ram for their insights on this topic. In a section called Principles and Practices of Build and Deployment Scripting, the CD book suggests to Use Your Operating System’s Packaging Tools
27 Sept 2013
Software professionals need to care about the implications of their creations and the different ways it could be put to use by the end user. Let’s take a look at an example of how the software you develop can have unforeseen consequences. The business need: “I want to access our students' basic info and mail it to companies in their…
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 […]
25 Sept 2013
In part 1 of this series I discussed traditional reasons people have for buying software, which turned out mostly to be based on perceived or real issues with building software. I discuss in this post, which contains parts 2 and 3, issues with buying software. Part 2: Traditional issues with buying
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.
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.
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.
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.
Every business wants their project team to build and release the best product they can within the known time and resource constraints. In simplistic terms, the team wants to complete the following three phases of software development to the highest standards: -
16 Sept 2013
A lot of people these days know about collaborative filtering. It’s that Netflix Prize thing, right? People rate things 1-5 stars and then you have to predict missing ratings. While there’s no doubt that the Netflix Prize was successful, I think it created an illusion that all recommender systems care about explicit 1-5 ratings and RMSE as the objective. Some…
When a new IT solution is needed in an enterprise, maybe because the business is changing or maybe because an existing manual process should be automated, the people who are in charge of implementing the solution usually quickly get to the question: should we build the solution or should we buy a package? For a long time the accepted wisdom…
As we all know, the way consumers access and interact with the digital world has changed drastically over the past few years. No longer restricted to desktops and laptops, people are using their phones and the newest wave of tablet devices to get online for an enormous range of activities. Any kind of media or information and every form of…
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…
The goal of Continuous Delivery is to move your production release frequency from months to weeks or even days. This all sounds great, but is Continuous Delivery achievable in a complex enterprise IT environment running Java EE middleware such as WebLogic, WebSphere or JBoss?
13 Sept 2013
Learn to be a more effective quality analyst. Meet other quality assurance evangelists and grow your testing community. Join us for vodQA Pune: Faster | Smarter | Reliable on October 19, 2013 to discuss best practices around testing smartly instead of testing more. In its third year, vodQA is a series of free events hosted by Thoughtworks India for testing…
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 […]