~/devreads

3 May 2016

2 May 2016

Richard Schneeman 11 min read

Rails 5 will be the easiest release ever to get running on Heroku. You can get it going in just five lines: $ rails new myapp -d postgresql $ cd myapp $ git init . ; git add . ; git commit -m first $ heroku create $ git push heroku master These five lines […] The post Container-Ready Rails…

newscloud infrastructureproduct featuresrailsruby

Peter Crona 7 min read

I recently participated in Softwareskills’ Liar’s Dice competition, and since people have expressed interest to hear about how I managed to win, I decided to summarize the process and results. As I prize I got 500SEK at Teknikmagasinet (Swedish store), a USB memory and this nice piece of paper :) Liar’s Dice and the Competition […]

how we work

1 May 2016

Ruslan Spivak 15 min read

I remember when I was in university (a long time ago) and learning systems programming, I believed that the only “real” languages were Assembly and C. And Pascal was - how to put it nicely - a very high-level language used by application developers who didn’t want to know what was going on under the hood. Little did I know…

29 Apr 2016

Robin Wieruch 3 min read

We were proud to once again be a sponsor at last week’s JSUnconf in Hamburg. The conference, that centers around the latest and greatest in JavaScript, is truly the “unconference” in both content and overall execution. It’s a completely non-profit conference built for the community, by the community. As the event grows year over year, […]

frontend

28 Apr 2016

27 Apr 2016

1 min read

We’re releasing the public beta of OpenAI Gym, a toolkit for developing and comparing reinforcement learning (RL) algorithms. It consists of a growing suite of environments (from simulated robots to Atari games), and a site for comparing and reproducing results.

research

Gayathri Rao 1 min read

Dr. David Walton, as director of Global Health for Thoughtworks, leads a team of about 100 people who leverage their expertise in technology and software while working with health organizations to improve healthcare delivery for those who are poor and marginalized. The focus of this group is to abate health disparities through the use of technology solutions best suited to…

26 Apr 2016

Rand Arete 2 min read

Today we are happy to announce early access to Heroku Kafka. We think Kafka is interesting and exciting because it provides a powerful and scalable set of primitives for reasoning about, building, and scaling systems that can handle high volumes and velocities of data. Heroku Kafka makes Kafka more accessible, reliable, and easy to integrate […] The post Announcing Heroku…

newsapache kafkadataplatform updates

3 min read

(I accidentally published an unfinished draft of this post a few days ago – sorry about that). There’s a lot of sources preaching the benefits of dollar cost averaging, or the practice of investing a fixed amount of money regularly. The alleged benefit is that when the price goes up, well, then your stake is worth more, but if the…

25 Apr 2016

lukaseder 1 min read

Listicles like these do work – not only do they attract attention, if the content is also valuable (and in this case it is, trust me), the article format can be extremely entertaining. This article will bring you 10 SQL tricks that many of you might not have thought were possible. The article is a … Continue reading 10 SQL…

sqlanalytic functionsanalyticscommon table expressionsmatch recognize clause

Felipe Sousa-Rodriguez, Joanna Parke 1 min read

At Thoughtworks, we are constantly looking for talented workers to continue building world-class software and serving our clients. A child of an immigrant founded Thoughtworks more than 20 years ago and we believe that immigrants have had a huge role to play in our growth.

21 Apr 2016

Julien Dubois 7 min read

Julien Dubois is the lead developer of JHipster, a Yeoman generator for Spring and AngularJS applications. Julien’s here to show how you can use a generator like JHipster to address some of the design concerns microservices introduce like discovery and routing so you can focus on your core business logic. What is JHipster? JHipster (for […] The post Bootstrapping Your…

news

lukaseder 1 min read

A very interesting question was posted to Stack Overflow and reddit just recently about Java generics. Consider the following method: While the unsafe cast seems a bit wonky, and you might guess there’s something wrong here, you can still go ahead and compile the following assignment in Java 8: This is obviously wrong, because Integer … Continue reading The Parameterless…

javajava 8generics

20 Apr 2016

Charles Korn, Greg Skinner 1 min read

Plenty of people are talking about how organisations should capitalise on design, yet few are talking about the practicalities of what it looks like to actually deliver it. Pairing developers and designers removes the natural suspicion between them, is fun, easy, and presents value to customers faster, making businesses—and teams—happier.

19 Apr 2016

lukaseder 1 min read

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:…

java 8jooq-tuesdaysjavajinqjooq

Ike DeLorenzo 3 min read

Today, we are happy to announce the graduation of Heroku Review apps from an exceptionally popular beta to being generally available to all Heroku users. Review apps are the instant, disposable Heroku app environments that can spin up automatically with each GitHub pull request. They allow developers and their teams to automatically build and test […] The post Heroku Review…

news

18 Apr 2016

1 min read

The singular value decomposition (SVD) of a matrix is a fundamental tool in computer science, data analysis, and statistics. It’s used for all kinds of applications from regression to prediction, to finding approximate solutions to optimization problems. In this series of two posts we’ll motivate, define, compute, and use the singular value decomposition to analyze some data. (Jump to the…

22 min read

This is one of those “N technical things every programmer must read” lists, except that “programmer” is way too broad a term and the styles of writing people find helpful for them are too different for any such list to contain a non-zero number of items (if you want the entire list to be helpful to everyone). So here's a…

2 min read

One of my favorite business hobbies is to reduce some nasty decision down to its absolute core objective, decide the most basic strategy, and then add more and more modifications as you have to confront the complexity of reality (yes I have very lame hobbies thanks I know). Software engineers want to deliver features quickly without adding too much tech…

Stanko 1 min read

I'm a big fan of Sublime Text editor, which I was using for years now. Minimal, fast, reliable. But there is one big problem with it. Only one man is working on it's development and community really slowed down. JavaScript ecosystem is going forward at incredible speed, and I'm not sure if Sublime will be able to keep up. Even…

Kelsey van Haaster 1 min read

One of the things we are often asked to do at Thoughtworks is help organizations and teams transition to new ways of working and thinking about work. Frequently, these requests are driven by an organization’s desire to compete more effectively in their marketplace, or to protect themselves against disruptive newcomers. Often beginning with the Information Technology (IT) function or department,…

17 Apr 2016

Henrik Warne 2 min read

In my previous post, The Wisdom of Programming Quotes, I called out some quotes that look good on the surface, but turn out to promote the wrong ideas about software development. I have also posted some of my favorite programming qoutes … Continue reading →

programmingquotes

16 Apr 2016

0xADADA 1 min read

This is the first set mixed in nearly 12 years. Working in an open office space means many hours of my day are spent listening to music with headphones on, cranking away at software code. For me, this means listening to music that doesn’t distract from the task of writing and problem solving. This set was designed in the spirit…

notesprojectsmusicprogrammingambient

15 Apr 2016

Stanko 1 min read

Two days ago, we held the second Tech Meetup. There were two speakers including myself, and Nemanja Nićiforović, our CEO. Nemanja spoke How to Freelance, and I covered Intro to React. Grab slides: How To Freelance Intro To React We are very thankful to our friends at Zaokret where meetup took place. There were around 60 people and we hope…

14 Apr 2016

13 Apr 2016

lukaseder 1 min read

In the context of a previous blog post about JUnit 5, Maaartinus, one of our readers, has brought up a very interesting idea: The only problem with try-catch is its verbosity, which is something I can live with (IMHO a lone catch would do better, the implicit try would apply to all preceding code in … Continue reading Would We…

javaanonymous blockcatch blockinitialisersmethods

MapTiler (Petr Pridal) 1 min read

We have made a Google Maps API v3 component, which anybody can use in custom projects to add a control showing current geolocation with just one line of code.

Mike Mason 1 min read

We publish our Technology Radar twice a year: it’s a snapshot of current and future technologies that we think are important and relevant across the industry. We assemble about 20 of our most senior technologists from around the world to create the Radar and it’s a great opportunity to compare trends and directions using a global view. We summarize major…

12 Apr 2016

lukaseder 1 min read

Security is important, especially on the data access layer. Most commercial databasese allow for fine-grained privilege control using database access grants. For instance, you would be restricting access from a user to a certain set of tables (or even better: views), via GRANT statements: With this fine-grained access control, write operations on certain database objects … Continue reading Using jOOQ’s…

jooq-in-usesqldatabase accessdmlgrants

11 Apr 2016

lukaseder 1 min read

Few people know about this very very awesome feature of the Stack Exchange platform. The Stack Exchange Data Explorer To be found here: http://data.stackexchange.com As you may know, much of the Stack Exchange platform runs on SQL Server (interesting architecture details here: http://stackexchange.com/performance), and the team has had the courtesy of making a lot of … Continue reading Using SQL…

sqlderbyh2hsqldbstack exchange

29 min read

The book starts with a story about a time Margaret Hamilton brought her young daughter with her to NASA, back in the days of the Apollo program. During a simulation mission, her daughter caused the mission to crash by pressing some keys that caused a prelaunch program to run during the simulated mission. Hamilton submitted a change request to add…

Dave Cheney 1 min read

What is the value of test driven development? Is the value writing tests at the same time as you write the code? Sure, I like that property. It means that at any time you’re one control-Z away from your tests passing; either revert your test change, or fix the code so the test pass. The nice property of this method…

programmingsmall ideastddtesting

Henrik Warne 3 min read

I love good programming quotes. The best ones say something true about the craft of programming, usually both concisely and humorously. Recently I started following Programming Wisdom on Twitter. It’s been a source of many great quotes, but occasionally I … Continue reading →

programmingquoteswisdom

Patrick Kua 1 min read

I’ve been at Thoughtworks for 12 years. Who would have imagined? Instead of writing about my reflections from the past year, I thought I would do something different and post twelve key learnings and observations looking back over my career. I have chosen twelve, not because there are only twelve, but because it fits well with the theme of twelve…

10 Apr 2016

9 Apr 2016

8 Apr 2016

MapTiler (Petr Pridal) 1 min read

MapTiler helps with the fast delivery of aerial images taken with multispectral crop monitoring sensors, usually carried by a drone or an aircraft.

7 Apr 2016

Matthew Creager 4 min read

We recently sat down for a chat with Bill Curtis, a co-founder and the CTO of Sweet Tooth (Now Smile.io), a points and rewards app for online stores worldwide. What has been your greatest challenge? We’re serving way more data today than we ever have, so scaling is mission-critical. In the past, we’ve struggled with […] The post Cyber Monday,…

newscustomerspostgresproduct featuresredis

Dave Cheney 2 min read

This is a thought experiment about sentinel error values in Go. Sentinel errors are bad, they introduce strong source and run time coupling, but are sometimes necessary. io.EOF is one of these sentinel values. Ideally a sentinel value should behave as a constant, that is it should be immutable and fungible. The first problem is […]

goprogrammingerror handlingerrors

kevin 6 min read

Often the best way to learn a new language is to implement something you know with it. Let’s take a look at some common async Javascript patterns, and how you’d implement them in Go. Callbacks You can certainly implement callbacks in Go! Functions are first class citizens. Here we make a HTTP request and hit […]

code

6 Apr 2016

5 Apr 2016

Nahid Samsami 1 min read

Two years ago we released the Heroku Platform API (v3), providing a supported way to automate and instrument Heroku and making it even easier for you to build new products. Today we are deprecating the legacy, unofficial version of the API that preceded it (v2), as its usage is limited and we are focusing development […] The post Sunsetting Heroku’s…

news

Stanko 1 min read

This is the one of my most popular repos. Once client asked for inline video that works on iPhone too. As Apple doesn't allow that (all videos are full screen in native player, and autoplay is not supported),. There was no easy solution, so this player was born. It uses HTML video and canvas. Script picks up the frame from…

Prasanna Pendse, Ross Pettit 1 min read

Every week you get an invitation to a blockchain conference. Every magazine and newspaper has an article about blockchain, and every company you talk to has an “innovation lab” working on blockchain. You’ve spent more than a few idle moments imagining the possibility and promise blockchain could bring to, well, just about anything! But then you go back to work…

1 min read

I was interviewed for one of my favorite podcasts ever: The Start FM. The conversation is about how I got to be where I am now and what it means to be so young in the industry.

4 Apr 2016

6 min read

Apparently MTA (the company running the NYC subway) has a real-time API. My fascination for the subway takes autistic proportions and so obviously I had to analyze some of the data. The documentation is somewhat terrible, but here’s some relevant code for how to use the API: from google.transit import gtfs_realtime_pb2 import urllib for feed_id in [1, 2, 11]: feed…

6 min read

You know that scene in The Rock where Nicolas Cage is super dreamy (like he is) and decides his life mission is to look for VX poison gas and save San Francisco (like he would)? That’s baaaasically me, if by “look for VX poison gas” you mean “nerd out on emoji”, and by “save San Francisco” you mean “and tell…

Stanko 1 min read

This simple bash command finds all of the files matching *~ recursively, executes rm on them and prints out which files are affected. You can replace file matching pattern, and command you want to execute. find ./ -name '*~' -exec rm '{}' ';' -print

3 Apr 2016

kevin 2 min read

You may have seen the TSA Randomizer on your last flight. A TSA agent holds an iPad. The agent taps the iPad, a large arrow points right or left, and you follow it into a given lane. How much does the TSA pay for an app that a beginner could build in a day? It […]

todays world

2 Apr 2016

Dave Cheney 3 min read

This is a progress report on the Go toolchain improvements during the 1.7 development cycle. All measurements were taken using a Thinkpad x220, Core i5-2520M, running Ubuntu 14.04 linux. Faster compilation Since Go 1.5, when the compiler itself was translated from C to Go, compile times are slower than they used to be. Everyone knows it, nobody […]

goprogrammingcompilerperformance

31 Mar 2016

lukaseder 1 min read

This article is overdue. After the hype around the release of Kotlin 1.0 has settled, let’s have a serious look at some Kotlin language features that we should have in Java as well. In this article, I’m not going to wish for unicorns. But there are some low hanging fruit (as far as I naively … Continue reading 10 Features…

kotlincase classdata classdefaulted parameterselvis operator

1 min read

We've had some fantastic people join over the past few months (and we're still hiring). Welcome, everyone!

company

30 Mar 2016

Dave Cheney 1 min read

When you think about it, threads are a strange abstraction. From the programmer’s point of view, threads are great. It’s as if you can create virtual CPUs, on the fly, and the operating system will take care of simulating these virtual CPUs on top of real ones. But on an implementation level, what is a […]

programmingsmall ideasconcurrencygoroutinesthreads

Daniel Pallozzi 1 min read

SXSW was once the domain of music and film. Someone’s gotta buy all those super-skinny-jeans and coin terms like mumblecore. Enter retail. Retail has a growing presence at SXSW. Last year SXstyle joined the lineup - a nod to the collision of fashion, retail and technology. This year the festival brimmed with vibrant retailers and industry innovators from Neiman Marcus…

29 Mar 2016

lukaseder 1 min read

An interesting question by Tagir Valeev on Stack Overflow has recently caught my attention. To keep things short (read the question for details), while the following code works: printing 1 2 3 4 5 The following, similar code won’t work: Causing a StackOverflowError. Sure, this kind of recursive iteration is not optimal. It wasn’t prior … Continue reading Watch Out…

javajava 8java 9lambda expressionstream

28 Mar 2016

Matthew McClain 4 min read

More and more companies and industries are grappling with the challenges of extracting value from large amounts of data. Data scientists, the people whose job it is to overcome these challenges, are becoming more prominent, yet what it is they do, and how they’re different than software engineers, is still a mystery to a lot of people. The […]

uncategorized

1 min read

Variations on a theme Back in 2014 I wrote a post called How to Conquer Tensorphobia that should end up on Math $ \cap$ Programming’s “greatest hits” album. One aspect of tensors I neglected to discuss was the connection between the modern views of tensors and the practical views of linear algebra. I feel I need to write this because…

jonskeet 5 min read

Obviously I’d normally ask developer questions on Stack Overflow but in this case, it feels like the answers may be at least somewhat opinion-based. If it turns out that it’s sufficiently straightforward that a Stack Overflow question and answer would be useful, I can always repost it there later. The Facts Noda Time 1.x exists … Continue reading Versioning conundrum…

c#noda time

David Corrales 1 min read

Systems Analyst That was my title at my previous job, one that I would join almost exactly a year ago. It was, I must admit, an exciting time for me as I had recently returned from studying in the UK to my native Quito and would be working in the IT field for the first time. I was hired by…

26 Mar 2016

jonskeet 10 min read

Source code for everything is on Github. It probably won’t be useful to you unless you’ve got very similar hardware to mine, but you may want to just have a look. Background Near the end of 2015, we had a new shed built at the back of our garden. The term “shed” is downplaying it … Continue reading Ultimate Man…

c#wacky ideas

25 Mar 2016

Dave Cheney 3 min read

In December 2014 the Go project moved from Google Code to GitHub. Along with the move to GitHub, the Go project moved from Mercurial to Git, which necessitated a move away from Rietveld to Gerrit for code review. A healthy open source project lives and dies by its contributors. People come and people go as time, circumstance, their […]

gocontributingopen source

24 Mar 2016

lukaseder 1 min read

This Stack Overflow question has yet again nerd-sniped me [finding the] maximum element in the array that would result from performing all M operations Here’s the question by John that was looking for a Java solution: With an array of N elements which are initialized to 0. we are given a sequence of M operations … Continue reading Time for…

sqlcommon table expressionsprefix sumwindow functions

Dave Cheney 1 min read

The must be willing to relocate to San Francisco meme has been doing the rounds on Twitter to great effect. The best jokes have a grain of truth to them. I think it is absurd to expect to draw on an infinite supply of debt burdened twenty somethings to relocate to the hottest real estate market on the planet. A…

small ideas

23 Mar 2016

Schakko 1 min read

After some years without using Neo4j I had the chance to use the graph database in my current project. Neo4j was a good fit because it makes it really easy to prototype an idea and the project itself relies heavily upon tree structures. Modelling tree structures in relational database management […] The post Fixing “Unable to obtain lock on store…

databases

Jeroen Soeters 1 min read

Neuroevolution is subcategory of machine learning that applies evolutionary computation to generate artificial neural networks. Traditionally neural networks are trained using the backpropagation algorithm. Back propagation is limited in its application especially in scenarios where a training set of sufficient size is unavailable as in artificial life or evolutionary robotics. Backpropagation also puts a lot of constraints on the topology…

22 Mar 2016

Matthew Creager 4 min read

Matthew Eckstein is the VP of Engineering for charity: water. For more information, visit: www.charitywater.org. Read our charity: water customer story to learn more about how Heroku has helped their organization deliver clean water to millions of people around the world. Tell us a bit about charity: water charity: water is a non-profit organization that […] The post React, Ruby…

news

Sunil Mundra 1 min read

Having examined the challenges of Distributed Development, let us look at some enablers that can help alleviate the challenges under three broad categories – People, Process, and Tools and Infrastructure. Let us start with people related enablers.

21 Mar 2016

Matthew Green 12 min read

Today’s Washington Post has a story entitled “Johns Hopkins researchers poke a hole in Apple’s encryption“, which describes the results of some research my students and I have been working on over the past few months. As you might have guessed from the headline, the work concerns Apple, and specifically Apple’s iMessage text messaging protocol. … Continue reading Attack of…

appleattacksimessagemessaging

Joy Scharmen 4 min read

If you’re a developer, it’s unlikely you’ve ever said “I wish I could spend a whole day patching critical security holes in my infrastructure!” (If you do, we’re hiring). And if you’re running a business, it’s unlikely you’ve ever said “Yes! I would like my developers to lose a day’s worth of feature-building on security […] The post Heroku Behind…

news

18 min read

An acquaintance of mine, let’s call him Mike, is looking for work after getting laid off from a contract role at Microsoft, which has happened to a lot of people I know. Like me, Mike has 11 years in industry. Unlike me, he doesn't know a lot of folks at trendy companies, so I passed his resume around to some…

1 min read

Last week, we open-sourced LightCycle, an Android library that helps break logic out of and classes into small, self-contained components called LightCycles. Components that typically need to be aware of and lifecycle events include presenters, UI tracking code, input processors and more. We’ve been using LightCycle extensively in the SoundCloud Music & Audio and SoundCloud Pulse apps over the last…