~/devreads

16 Dec 2015

Ryan Brainard 6 min read

Heroku has years of experience operating our world-class platform, and we have developed many internal tools to operate it along the way; however, with the introduction of Heroku Private Spaces, much of the infrastructure was built from the ground up and we needed new tools to operate this new platform. At the center of this, […] The post Introducing Heroku’s…

engineeringjavascript

Jim Highsmith, Mike Mason, Neal Ford 1 min read

In order for you to thrive in the digital environment, you need to understand the implications of the changing technology landscape on your organization. This is the first article in Technology Radar Echoes, a new series where authors share their insights and experience on the technology problems and solutions driving business differentiation for enterprise leaders.

Aman King 1 min read

I started off as a practitioner and over time, have been an Agile coach. There were a few interesting things about my journey that I thought would be good to share with the larger community. My post narrates a journey that many technologists might take - here’s hopefully to a learning or two.

15 Dec 2015

David Zuelke 3 min read

A year and half ago, we launched support for PHP on Heroku, built from the ground up with modern features designed to give developers a more elegant and productive experience on the platform. Last week, we made PHP 7 available on top of a new, reworked version of our PHP support, and our users are […] The post 50% and…

newsdeveloper toolsphp

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

javajooq-tuesdaysasmaspectjbyte code

Ruslan Spivak 22 min read

As I promised you last time, today I will talk about one of the central data structures that we’ll use throughout the rest of the series, so buckle up and let’s go. Up until now, we had our interpreter and parser code mixed together and the interpreter would evaluate an expression as soon as the parser recognized a certain language…

1 min read

Through this post and the following ones, I will do my best to provide you with the basic knowledge you need to understand and implement digital audio signal processing. The idea came from a conversation with my friend Chad Fowler who’s a well-known software developer, leader but also a well accomplished musician. Chad was interested in learning the basics of…

Daniel Amorim, Hugo Vares Vieira 1 min read

When we are working on software delivery projects, we will eventually face the decision of whether or not we should automate a test for a specific scenario. The question of whether we should automate or not, is what we will discuss in this article. Why we Automate Generally, we automate to avoid repeated manual work, get faster feedback, save time…

12 Dec 2015

22 min read

I haven't used a desktop email client in years. None of them could handle the volume of email I get without at least occasionally corrupting my mailbox. Pine, Eudora, and outlook have all corrupted my inbox, forcing me to restore from backup. How is it that desktop mail clients are less reliable than gmail, even though my gmail account not…

11 Dec 2015

1 min read

OpenAI is a non-profit artificial intelligence research company. Our goal is to advance digital intelligence in the way that is most likely to benefit humanity as a whole, unconstrained by a need to generate financial return. Since our research is free from financial obligations, we can better focus on a positive human impact.

company

Jie (Jeff) Xiong 1 min read

A friend wanted to take on a social project. All the funders were highly educated elites, who requested for transparency in the project. Since it is now the Information Age, he felt that IT tools would help facilitate communication and improve efficiency. He asked me to create an app which could do all that he had envisioned. But I had…

Andrew McWilliams 1 min read

There’s one thing we all have in common. Whoever you are, you and those you love stand a good chance to lose dramatically from climate change over your lifetimes. The good news is we know exactly how to avoid the worst scenarios. We must rapidly turn away from fossil fuels, and turn towards renewable energy and emerging technologies. It takes…

10 Dec 2015

lukaseder 1 min read

Relational databases define the term “Functional Dependency” as such (from Wikipedia): In relational database theory, a functional dependency is a constraint between two sets of attributes in a relation from a database. In other words, functional dependency is a constraint that describes the relationship between attributes in a relation. In SQL, functional dependencies appear whenever … Continue reading SQL GROUP…

sqlfunctional dependencygroup byprimary keyrelational databases

V Moschetta 1 min read

At the heart of Thoughtworks, there is an ambitious mission: to be a proactive agent of progressive change in the world. Aware of our own privilege, we strive to see the world from the perspective of the oppressed, the powerless, and the invisible. This kind of thinking forms one of the three pillars of our organization. It is a big…

Evan Bottcher, Scott Shaw 1 min read

Companies of all sizes, and across all industries, are struggling with digital transformation. A data-driven architecture that enables getting the right data, to the right place, at the right time positions an organization to create and deliver exceptional digital experiences.

9 Dec 2015

Lukasz Plotnicki 1 min read

Our friends at SoundCloud embarked on a journey a few years ago that changed their system and moved it from a monolithic Rails application towards an ecosystem of microservices.

8 Dec 2015

lukaseder 1 min read

Awesome! We’re migrating our code base to Java 8. We’ll replace everything by functions. Throw out design patterns. Remove object orientation. Right! Let’s go! Wait a minute Java 8 has been out for over a year now, and the thrill has gone back to day-to-day business. A non-representative study executed by baeldung.com from May 2015 … Continue reading 3 Reasons…

java 8external iterationfor loopforeach loopinternal iteration

7 Dec 2015

Dave Cheney 2 min read

Panic messages from unexpected program crashes are often reported on the Go issue tracker. An overwhelming number of these panics are caused by data races, and an overwhelming number of those reports centre around Go’s built in map type. unexpected fault address 0x0 fatal error: fault [signal 0x7 code=0x80 addr=0x0 pc=0x40873b] goroutine 97699 [running]: runtime.throw(0x17f5cc0, 0x5) […]

goprogrammingdata racerace detector

Dave Cheney 2 min read

What does the computing landscape look like in a decade ? In a word, bifurcated. At the individual level there will be range of battery powered devices; watches, mobile phones, tablets with removable keyboards, and those without. They will be numerous, at a wide range of price points, allowing them to be dedicated to the […]

programmingsmall ideas

Luis Mizutani 1 min read

Like it or not, meetings are an essential part of any project communication plan. They can be an excellent way to create common knowledge and a shared understanding of a subject, or even to make group decisions. However, meetings may not always produce the desired outcomes. It is not uncommon to hear people complaining about a meeting that didn't add…

Ben Melbourne 1 min read

Technology is no longer an expensive monolith that needs to be overcome for businesses to succeed. In the emerging digital economy companies are learning new ways to leverage technology. They are reshaping their business models and the relationships they have with their customer. The list of industries being disrupted by digital technologies is growing. The recording industry, banks, retailers, telcos…

6 Dec 2015

5 Dec 2015

2 min read

I’ve been obsessed with how to iterate quickly based on small scale feedback lately. One awesome website I encountered is Usability Hub which lets you run 5 second tests. Users see your site for 5 seconds and you can ask them free-form questions afterwards. The nice thing is you don’t even have to build the site – just upload a…

4 Dec 2015

3 Dec 2015

lukaseder 1 min read

Notice that the examples in this article may be outdated, as Typesafe’s Activator works differently now. The blog post will not be maintained to provide up-to-date Activator examples. We’re very happy to announce a guest post series on the jOOQ blog by Manuel Bernhardt. In this blog series, Manuel will explain the motivation behind so-called … Continue reading Reactive Database…

javascalasqlasyncasynchronous programming

2 Dec 2015

lukaseder 1 min read

A nice feature of the Java 7 try-with-resources statement and the AutoCloseable type that was introduced to work with this statement is the fact that static code analysis tools can detect resource leaks. For instance, Eclipse: When you have the above configuration and you try running the following program, you’ll get three warnings: The output … Continue reading A Subtle…

javajava 8jooq-in-useautocloseablejava 7

1 min read

Back in November I was in Paris for dotGo, one of my favorite Golang conferences. I was invited to speak and wanted to share something concrete with the audience, something based on my experience with Go at Splice. Go is designed for simplicity with only one way of doing one thing. That makes preparing talks pretty challenging since a lot…

Emma Carter 1 min read

Setting the Scene My team and I were excited by the prospect of adding fingerprint login to the iOS version of our banking App. It was something our users had been asking for. As a team, we wanted to try out the new technology and create a more user friendly and quick way for customers to login and access their…

1 Dec 2015

Xia Jie Jessie 1 min read

I am the Managing Director of Thoughtworks Singapore. It has been 10 years since I came on board. It was very hard to imagine that a non-English speaking Chinese with no programming skills would join a global IT company back in 2005. And not just join, but thrive.

30 Nov 2015

Ruth Harrison 1 min read

Retailers are whipping their supply chains to win the ecommerce game. What is the next frontier in the fast moving delivery space? In Delivery 2.0, our European Head of Retail Mark Collin noted that fast delivery has become a source of competitive advantage. That advantage is shrinking, however, as more retailers begin to offer speedy delivery options.

29 Nov 2015

Schakko 3 min read

It happened again: after writing about some issues caused by different JVM class-loader order a similar problem occured on Friday. One of my colleagues (Dev-A) asked me to look into a problem the team had. Because of unknown reasons the Spring Boot based application did not return a serialized JSON error object after […] The post ExceptionHandler of @ControllerAdvice is…

spring framework

Dave Cheney 7 min read

Introduction The Go runtime, in addition to providing the usual services of garbage collection, goroutine scheduling, timers, network polling and so forth, contains facilities to enable extra debugging output and even alter the behaviour of the runtime itself. These facilities are controlled by environment variables passed to the Go program. This post describes the function of […]

goprogramminggodebuggogcgomaxprocs

28 Nov 2015

4 min read

(Warning: super speculative, feel free to ignore) As Yogi Berra said, “It’s tough to make predictions, especially about the future”. Unfortunately predicting is hard, and unsurprisingly people look for the Magic Trick™ that can resolve all the uncertainty. Whether it’s recruiting, investing, system design, finding your soulmate, or anything else, there’s always an alleged shortcut. In the famous book Expert…

27 Nov 2015

20 min read

Jeff Atwood, perhaps the most widely read programming blogger, has a post that makes a case against using ECC memory. My read is that his major points are: Google didn't use ECC when they built their servers in 1999 Most RAM errors are hard errors and not soft errors RAM errors are rare because hardware has improved If ECC were…

25 Nov 2015

Hari Baran 1 min read

“Don’t get it, don’t make it, don’t send it” is a slogan to emphasize the 'quality first' practice in Gemba Kaizen. It was first formulated by Masaaki Imai and you can read about it more in his book, Gemba Kazien. Though it was first formulated for production/manufacturing focused industries, as were most of the lean principles, it can be easily…

24 Nov 2015

23 Nov 2015

1 min read

Math and computer science are full of inequalities, but there is one that shows up more often in my work than any other. Of course, I’m talking about $$\displaystyle 1+x \leq e^{x}$$ This is The Inequality. I’ve been told on many occasions that the entire field of machine learning reduces to The Inequality combined with the Chernoff bound (which is…

11 min read

In 1999, Butler Lampson gave a talk about the past and future of “computer systems research”. Here are his opinions from 1999 on "what worked". Yes Maybe No Virtual memory Parallelism Capabilities Address spaces RISC Fancy type systems Packet nets Garbage collection Functional programming Objects / subtypes Reuse Formal methods RDB and SQL Software engineering Transactions RPC Bitmaps and GUIs…

22 Nov 2015

20 Nov 2015

blog.muffn.io (muffn_) 1 min read

I have a lot of 9211-8i’s in the lab, probably about 12, all flashed to IT mode. These are a godsend as they just work. They’re easy to flash to IT mode (rids them of any RAID, they become HBAs) and are 6GBp/s which is awesome.

18 Nov 2015

kevin 5 min read

Do you have objects in your system that can be in different states (accounts, invoices, messages, employees)? Do you have code that updates these objects from one state to another? If so, you probably want a state machine. What is a state machine? At its root, a state machine defines the legal transitions between states […]

code

Dave Cheney 1 min read

The following program contains a data race package main import ( "fmt" "time" ) type RPC struct { result int done chan struct{} } func (rpc *RPC) compute() { time.Sleep(time.Second) // strenuous computation intensifies rpc.result = 42 close(rpc.done) } func (RPC) version() int { return 1 // never going to need to change this } […]

goprogrammingpop quiz

17 Nov 2015

Jaimee Newberry 1 min read

The collaboration of a company and its multidisciplinary units has never been more crucial than it is right now. Everything we make today depends upon our ability to stay current, move nimbly, innovate, engage and delight. Those things are too difficult to achieve without cross-team collaboration. How can we unlock better collaborative rhythms within organizations that have tried and true…

15 Nov 2015

0xADADA 16 min read

Notes from the book: JavaScript: The Good Parts by Douglas Crockford Index JavaScript: The Good Parts Primitives Execution Flow Equality Loops / Enumeration Object Literals Arrays Delete Global Abatement Reference Reflection Functions Prototype Function Invocation Pattern Constructor Invocation pattern Closure Modules WTF JavaScript: The Good Parts A walkthrough many of the useful code examples from Douglas Crockfords’ seminal book, JavaScript:…

notessoftware-engineeringjavascript

14 Nov 2015

Dave Cheney 12 min read

In October this year I had the privilege of speaking at the GothamGo conference in New York City. As I talk quite softly, and there were a few problems with the recording, I decided to write up my slide notes and present them here. If you want to see the video of this presentation, you […]

gohistorygothamgo

Schakko 3 min read

Yesterday my team had the situation that a deployment failed with a NoSuchMethodError, specifically the method com/google/common/collect/ImmutableList.copyOf could not be found while querying the Confluence REST API. NoSuchMethodEror and NoSuchMethodException occur of obvious reasons: a method should be called during runtime but the providing class does not contain the method. NoSuchMethodExceptions […] The post How to fix NoSuchMethodError or NoSuchMethodException…

java

13 Nov 2015

12 Nov 2015

Timur Celikel 2 min read

In October Kristof, Kolja and me visited the AMUSE conference in Budapest. First UX conference for all of us! We went to stay for a whole week and used the first days for a ‘User Interface Retreat’ in our apartment. The AMUSE partners with the CRUNCH conference about big data and shares a lot of the infrastructure like […]

how we workuxamuseconferenceui

1 min read

Update 2017-01-09: Laci claims to have found a workaround to the previously posted error, and the claim is again quasipolynoimal time! Updated arXiv paper to follow. Update 2017-01-04: Laci has posted an update on his paper. The short version is that one small step of his analysis was not quite correct, and the result is that his algorithm is sub-exponential,…

Matthew Green 3 min read

Earlier today, Motherboard posted a court document filed in a prosecution against a Silk Road 2.0 user, indicating that the user had been de-anonymized on the Tor network thanks to research conducted by a “university-based research institute”. Source: Motherboard. As Motherboard pointed out, the timing of this research lines up with an active attack on … Continue reading Why the…

attackstor

1 min read

Curious about Google’s newly released TensorFlow? I don’t have a beefy GPU machine, so I spent some time getting it to run on EC2. The steps on how to reproduce it are pretty brutal and I wouldn’t recommend going through it unless you want to waste five hours of your live. Instead, I recommend instead just getting the AMI that…

Sam Newman 1 min read

I get to do lots of fun things as part of my day job at Thoughtworks. One of them is that I get to help out on the creation of the Thoughtworks Technology Radar as part of my membership of our Technology Advisory Board (TAB). We put one of these out every six months or so, and the most recent…

11 Nov 2015

Miguel Rueda 1 min read

Over the last eight years of my professional life, I’ve had the opportunity to essay different roles across local and international enterprises. While I was initially focused on different streams, I realized that I really missed coding. I took on a few coding projects in my personal time. My experiences with these projects led me to realize that this is…

10 Nov 2015

Hunter Loftis 6 min read

At the tail end of 2015, JavaScript developers have a glut of tools at our disposal. The last time we looked into this, the modern JS landscape was just emerging. Today, it’s easy to get lost in our huge ecosystem, so successful teams follow guidelines to make the most of their time and keep their […] The post 10 Habits…

newsdeveloper toolsjavascriptnode.js

9 Nov 2015

Matthew Brown 1 min read

There are times where you may not always be in control of the designs or interactions of a product you work on. A challenging situation, one that will make you a better designer.

7 Nov 2015

lukaseder 1 min read

A very interesting problem that can be solved very easily with SQL is to find consecutive series of events in a time series. But what is a consecutive series of events in a time series? Take Stack Overflow, for example. Stack Overflow has a cool reputation system that uses badges to reward certain behaviour. As … Continue reading How to…

sqlconsecutive eventsstack overflowtime serieswindow functions

5 Nov 2015

Dave Cheney 5 min read

This is a post inspired by a thread that Nate Finch started on the Go Forum. This post focuses on Go, but if you can see your way past that, I think the ideas presented here are widely applicable. Why no love ? Go’s log package doesn’t have leveled logs, you have to manually add prefixes like […]

goprogrammingsmall ideasdesignlogging

0xADADA 3 min read

Application logs are useful for many reasons. They are the primary source of troubleshooting information. Logs are essential to forensics during any rigorous security analysis. Web server logs are often used for analysis in order to gain insight into usage, audience, and trends. Logging Logs are time-ordered streams: there is no beginning or end, but rather an ongoing, collated collection…

essaysopen-sourcesoftware-engineering

0xADADA 6 min read

Not too long ago, there was a great debate between two sides of the web. The “Responsive” web vs the “m.” web. One pushing for a single codebase that responds to user-context and another pushing for a second, mobile-only approach (typically using a subdomain starting with m.) It’s clear now, the responsive web has won. A Retrospective — Responsive Design…

essayssoftware-engineeringweb-development

4 Nov 2015

Owen Ou 7 min read

If your application is successful, there may come a time where you’re on an unsupported version of a dependency. In the case of the Heroku Platform API, this dependency was a very old version of Active Record from many years ago. Due to the complexity involved in the upgrade, this core piece of infrastructure had […] The post How We…

engineeringapisplatform updatesrails

1 min read

I haven’t mentioned what I’m currently up to. Earlier this year I left Spotify to join a small startup called Better. We’re going after one of the biggest industries in the world that also turns out to be completely broken. The mortgage industry might not be the #1 industry you pictured yourself in, but it’s an enormous opportunity to fix…

3 Nov 2015

0xADADA 21 min read

Docker is getting a lot of hype these days, for good reason. There are plenty of articles touting the merits of Docker but most are written without context and are limited to examining the the benefits of Docker independently of its’ practical everyday use in a software development project lifecycle. This article aims to examine the benefits of Docker within…

essayssoftware-engineering

2 Nov 2015

Ruslan Spivak 7 min read

Today is the day :) “Why?” you might ask. The reason is that today we’re wrapping up our discussion of arithmetic expressions (well, almost) by adding parenthesized expressions to our grammar and implementing an interpreter that will be able to evaluate parenthesized expressions with arbitrarily deep nesting, like the expression 7 + 3 * (10 / (12 / (3 +…

1 min read

A vibrant, unexpected, and fun effect — the Lomography Effect is an opportunity where you can really be creative and try out various CSS image techniques.

1 Nov 2015

1 min read

MongoDB is perhaps the most-widely-mocked piece of software out there right now. While some of the mockery is out-of-date or rooted in misunderstandings, much of it is well-deserved, and it’s difficult to disagree that much of MongoDB’s engineering is incredibly simplistic, inefficient, and immature compared to more-established databases like PostgreSQL or MySQL. You can argue, and I would largely agree,…

10 min read

Hardware performance “obviously” affects software performance and affects how software is optimized. For example, the fact that caches are multiple orders of magnitude faster than RAM means that blocked array accesses give better performance than repeatedly striding through an array. Something that's occasionally overlooked is that hardware performance also has profound implications for system design and architecture. Let's look at…

Johannes Thönes 1 min read

“Your build pipeline is a production system,” says Tom Duckering, lead consultant from Thoughtworks London. Tom gave the talk Securing the Pipeline together with Patrick Downey at XConf Hamburg.

Sarah Howe 1 min read

It’s an ongoing argument in the industry with strong advocates on either side. Should designers learn to code to bring additional value to their work and projects? Or should they stick to being really good at design? The answer? Well, it depends.

Nagarjun Kandukuru, Sharath Satish, Srihari Srinivasan 1 min read

To brick and mortar or not to brick and mortar? On one hand, eCommerce born retailers from Casper to Birchbox to Zappos in the US and Pepperfry.com in India are rushing to open physical stores in either pop-up or permanent form. Even Amazon is exploring opportunity in the offline realm with their pick up centers and the recently announced bookstore…

31 Oct 2015

Matt Cutts 1 min read

I went a little overboard for Halloween last year. And as you can tell from my the Halloween category on my blog, sometimes I get a little too excited about Halloween. So this year I decided to go quick, easy, and lo-fi as a USB drive: To make a thumb drive/USB key, I just took […]

funhalloween

2 min read

The other day I was looking at marketing spend broken down by channel and wanted to compute some simple uncertainty estimates. I have data like this: <th> Total spend </th> <th> Transactions </th> <td> 2292.04 </td> <td> 9 </td> <td> 1276.85 </td> <td> 2 </td> <td> 139.59 </td> <td> 3 </td> <td> 954.98 </td> <td> 5 </td> Of course, it’s…

29 Oct 2015

Dave Cheney 2 min read

Last night at the Sydney Go Users’ meetup, Jason Buberel, product manager for the Go project, gave an excellent presentation on a product manager’s perspective on the Go project. As part of his presentation, Buberel broke down the marketplace for a programming language into seven segments. As a thought experiment, I’ve taken Buberel’s market segments […]

programmingsmall ideascompetition

28 Oct 2015

6 min read

I was featured in Peadar Coyle’s interview series interviewing various “data scientists” – which is kind of arguable since (a) all the other ppl in that series are much cooler than me (b) I’m not really a data scientist. Anyway, reposting the full interview: As part of my interviews with Data Scientists I recently caught up with Erik Bernhardsson who…

27 Oct 2015

26 Oct 2015

lukaseder 1 min read

I’ve stumbled upon this very interesting question on Stack Overflow, recently. Its title is: [How to] compare a number with sum of subset of numbers In this article, we’ll compare the user’s imperative approach to the extremely elegant (Oracle) SQL approach. We’ll be making use of any combination of these awesome SQL features: Window functions … Continue reading How to…

sqlcommon table expressionscross applydense rankfirst

1 min read

I was recently an invited speaker in a series of STEM talks at Moraine Valley Community College. My talk was called “What can algorithms tell us about life, love, and happiness?” and it’s on Youtube now so you can go watch it. The central theme of the talk was the lens of computation, that algorithms and theoretical computer science can…

1 min read

Do you find yourself out of pocket because your customers don't pay you on time? You're not alone – this is a problem that affects over half of Britain’s small businesses.

Annie Conn 1 min read

"I am large, I contain multitudes." —Walt Whitman, Song of Myself My super power is not being one thing, but many things. I am an example of the new fluid careerist. What’s a fluid career? It’s a way through life that leverages a collection of experiences, expertise, roles/titles and spans multiple industries. Fluid careerists navigate ambiguity and are nimble. We’re…

Taheerah Atchia 1 min read

It can often be difficult to devise an appropriate strategy when it comes to testing on browsers and devices. Exhaustive testing of all browser/device combinations is an exercise in futility; we must consider a smarter and more realistic approach. Using user data to drive your strategy will help you to focus your efforts ‘where they are needed most’, while adopting…