~/devreads

1 Jun 2014

Nima Montazeri and Kate Logan 1 min read

Software development is complex, expensive and time-consuming. Every business wants to get the highest return on projects, yet success remains typically grounded in meeting one’s schedule, scope and budget. We argue that different metrics, focused on the business outcomes of the delivered software, are more realistic measures of success.

Zichuan Xiong 1 min read

An Inception is a collaborative design process for a group of stakeholders to share the same understanding about an upcoming project. It is an activity focusing more on “why we do it” rather than “how we do it”. The methods of conducting an inception continually evolve as we face different situations with each client. A good Inception practitioner should always…

30 May 2014

lukaseder 1 min read

At Data Geekery, we love Java. And as we’re really into jOOQ’s fluent API and query DSL, we’re absolutely thrilled about what Java 8 will bring to our ecosystem. Java 8 Friday Every Friday, we’re showing you a couple of nice new tutorial-style Java 8 features, which take advantage of lambda expressions, extension methods, and … Continue reading Java 8…

javajava 8dslsinternal dslsjava 8 friday

29 May 2014

lukaseder 1 min read

This week, Timo Westkämper from QueryDSL has announced feature completeness on the QueryDSL user group, along with his call for contributions and increased focus on bugfixes and documentation. Timo and us, we have always been in close contact, observing each other’s products. In the beginning of jOOQ in 2009, QueryDSL was ahead of us. But … Continue reading QueryDSL vs.…

javajooq-developmentsqlfeature completefeature-completeness

1 min read

One of my more popular blog entries is on using Ember.js without Ember Data. Recently I’ve been going through my old entries and making sure they don’t have any glaring mistakes, and I realized this would be a good opportunity to convert my emberreddit project to ember-cli. This screencast shows how you can build an Ember.js application without using Ember…

28 May 2014

lukaseder 1 min read

What if developing an application just took 1-2 days? What if I can create it myself with only 10 clicks? What if I don’t need you developers anymore? Said every manager since the beginning of history. This is what all managers dream of. Click click click, next next next, and you’re done! Easy, right? Time-to-market: … Continue reading What if…

businesssqldata managementdata navigationdatabase navigation

27 May 2014

Raymond B. Matovu 1 min read

Recently, Thoughtworks Kampala hosted a seven-week long training program called Level Up, for students at the Makerere University in Uganda. The aim of the program was to teach students best practices in software development as a part of Thoughtworks’ capacity building program. Background

Anand Bagmar 1 min read

There is an intriguing ongoing debate between Martin Fowler, Kent Beck and David Heinemeier Hansson (DHH) about Test Driven Development (TDD) and its impact on software design. Though there were strong agreements and disagreements all along the way, one thing stood out to me all the way - there is no right or wrong answer. The answer depends on the…

26 May 2014

lukaseder 1 min read

(Sorry for that click-bait heading. Couldn’t resist ;-) ) We’re on a mission. To teach you SQL. But mostly, we want to teach you how to appreciate SQL. You’ll love it! Getting SQL right or wrong shouldn’t be about that You’re-Doing-It-Wrong™ attitude that can be encountered often when evangelists promote their object of evangelism. Getting … Continue reading Yet Another…

javasqlboolean typecommon table expressionsconstraints

1 min read

This post is intended for people with a little bit of programming experience and no prior mathematical background. So let’s talk about numbers. Numbers are curious things. On one hand, they represent one of the most natural things known to humans, which is quantity. It’s so natural to humans that even newborn babies are in tune with the difference between…

Heather Malec 1 min read

No one dreams of spending their Friday night sleeping on the streets of Manchester UK in the cold rain. Yet a team from Thoughtworks Manchester did just that to build awareness and raise money for the UK charity, Action for Children, which helps to tackle the root causes of why young people find themselves on the streets. This annual event…

24 May 2014

Dave Cheney 1 min read

Go has several ways to declare a variable. Possibly there are more ways than are strictly required but with the Go 1 contract in effect it’s not going to change. This short post gives examples of how I decide which variable declaration syntax to use. These are just suggestions, they make sense to me, but […]

goprogramminguseless triviatop tip

Sudhindra Rao 1 min read

On our journey to allow for faster delivery times, wowing customers with new features and allowing for quicker support, we made a decision to move Mingle to a 'Software as a Service' on the cloud. We spent a few months architecting Mingle to suit the features and limitations of the cloud and this is the story about that effort.

23 May 2014

lukaseder 1 min read

At Data Geekery, we love Java. And as we’re really into jOOQ’s fluent API and query DSL, we’re absolutely thrilled about what Java 8 will bring to our ecosystem. Java 8 Friday Every Friday, we’re showing you a couple of nice new tutorial-style Java 8 features, which take advantage of lambda expressions, extension methods, and … Continue reading Java 8…

javajava 8checked exceptionsconsumerexception

Balan Subramanian 4 min read

Developers want to spend less time setting up applications and start working with the code sooner. Setting up applications is error-prone, time consuming and interruptive to the development flow. Often, there are several steps to go from your code or other samples and templates that you find in repositories online, to a running application that […] The post Introducing the…

newsadd-onsapisapp architecturecloud infrastructure

Malcolm Beaton 1 min read

Over a year of presenting agile fundamentals to teams has taught me that the topic of estimation seems to strike fear and horror into people. The process of estimating seems to go something like this:

Natalie Hollier 1 min read

Lean product design is a software development process for creating innovative new products. It enables businesses to get their product to market fast, validate it frequently with users, and continuously respond to feedback. The process involves interweaving lightweight design and user research throughout an agile development process, rather than relying on most of the product design and research to be…

22 May 2014

lukaseder 1 min read

If we want to analyse execution plans on the SQL console, we probably need to find a SQL_ID first, which we can the pass to the DBMS_XPLAN.DISPLAY_CURSOR function. One way to find this SQL_ID is by querying the v$sql table first, e.g.: Now, often, you will then get an error message like: ORA-00942: table or … Continue reading Oracle Tip:…

sqldictionary viewsexecution plangrantsora-00942

Dave Cheney 5 min read

Go obtains much of its compilation speed from the Plan 9 compiler, of which it is a direct descendant. The Plan 9 toolchain deferred much of the work traditionally performed by a compiler to the linking stage and its performance was summarised in section 8 of this paper The new compilers compile quickly, load slowly, […]

goprogramminglinker speed

21 May 2014

Michael Friis 2 min read

Today, we are announcing an important addition to the Heroku Platform API: The /apps/:app/builds endpoint. This endpoint exposes the Heroku slug compilation process as a simple API primitive. You can use the endpoint to turn any publicly hosted source-tarball into a slug running on a Heroku app in seconds. Here’s output from a Go program […] The post Introducing programmatic…

news

lukaseder 1 min read

Subscribe to this newsletter here Tweet of the Day Our customers, users, and followers are sharing their love for jOOQ with the world. Here are: Chris Martin who has switched jobs and is now really missing jOOQ. Too bad we can’t offer jOOQ for Python, Chris! Moutaz Salem who had been waiting for jOOQ for all these … Continue reading…

jooq-newsletteridentifier madnessjooqjooq 3.4sort indirection

20 May 2014

Mark McGranaghan 4 min read

Today we’re open sourcing the toolchain Heroku uses to design, document, and consume our HTTP APIs. We hope this shows how Heroku thinks about APIs and gives you new tools to create your own. This toolchain includes: An HTTP API design guide, describing how we structure both internal and public-facing APIs and document them using […] The post The Heroku…

news

lukaseder 1 min read

Heartbleed is a bit over one month old now. A bug significant enough to have its own Wikipedia page. Today, we’re going to look into how wrong we have been in assuming that Open Source software is more secure than commercial software, because of our thinking that source code is open and that many developers … Continue reading Free as…

open-sourcefossfree as in beerfree as in freedomfree software

Bill Kimmel 1 min read

“That which we call a rose by any other name would smell as sweet.” - William Shakespeare Or would it? Despite what Juliet argues in Romeo and Juliet, names do matter. Moving to a new office space in Chicago in 2006 created an opportunity to rebrand the Thoughtworks space and honor progressive innovators and leaders at the same time. Here’s…

19 May 2014

Michael Friis 3 min read

Today, we’re happy to announce General Availability of the Heroku Platform API. Heroku is a platform built by developers, for developers. As developers, we understand the utility of APIs and the power APIs give to speed up and script error-prone manual processes or to combine other services with Heroku into new and exciting products. With […] The post Heroku Platform…

news

Dave Cheney 1 min read

This is a quick post to discuss an interesting bug that was recently unearthed by go vet. The following code is a simplified reduction of a larger piece of code. In the original code the if statement was much larger, encompassing several complicated conditions, making the bug hard to spot visually. package main import "fmt" […]

goprogramming

1 min read

Graphs are among the most interesting and useful objects in mathematics. Any situation or idea that can be described by objects with connections is a graph, and one of the most prominent examples of a real-world graph that one can come up with is a social network. Recall, if you aren’t already familiar with this blog’s gentle introduction to graphs,…

Anand Bagmar 1 min read

In Part 5 of our interview series with testers who are upping the testing ante, we chat with Justin Rohrman (@JustinRohrman). Justin is a long time tester and an instructor for the Black Box Software Testing classes run by the Association for Software Testing (AST). He is also a Miagi-do black belt, and was part of the review committee for…

17 May 2014

3 min read

You’ve given a talk. It went great, and now everyone wants to see the slides. Hurray! Before we do anything else: give yourself a high-five. Giving a talk is hard, and you did it! This is something to be proud about. Here’s the thing about slides, though: if you did them right, your slides should be pretty sparse. They’ll have…

16 May 2014

jonskeet 7 min read

I’ve always found Portable Class Library (PCL) configuration to be a bit of a mystery. In simple cases, it’s simple: start a new PCL project in Visual Studio, select the environments you want to support, and away you go. But what’s going on under the hood, and what do all the options mean? How do … Continue reading Diagnosing Portable…

c#diagnostics

lukaseder 1 min read

At Data Geekery, we love Java. And as we’re really into jOOQ’s fluent API and query DSL, we’re absolutely thrilled about what Java 8 will bring to our ecosystem. Java 8 Friday Every Friday, we’re showing you a couple of nice new tutorial-style Java 8 features, which take advantage of lambda expressions, extension methods, and … Continue reading Java 8…

javajava 8compilerfunctional interfacejava language specification

15 May 2014

Wesley Beary 3 min read

Today we’re open sourcing the toolchain Heroku uses to design, document, and consume our APIs. We hope this shows how Heroku thinks about APIs and gives you new tools to create your own APIs. This toolkit includes our HTTP API design guide, the prmd tool for managing JSON schemas and generating API docs, and client […] The post Introducing the…

engineeringapisdeveloper tools

14 May 2014

13 May 2014

Margaret Francis 2 min read

Today we are announcing the general availability of Salesforce1 Heroku Connect. This new Heroku product is a synchronization service, conceptually similar to Dropbox or iCloud, that synchronizes data between a Salesforce deployment and a Heroku Postgres database. By bringing together the data layers of the Force.com and Heroku platforms–and thus allowing the same data to […] The post Introducing Heroku…

news

lukaseder 1 min read

SQL Server is known to have a very strict interpretation of the SQL standard. For instance, the following expressions or statements are not possible in SQL Server: Strictly speaking, that limitation makes sense because the above ROW_NUMBER() or OFFSET expressions are non-deterministic. Two subsequent executions of the same query might produce different results. But then … Continue reading SQL Server…

sqloffsetoffset paginationorder bysql server

Michael D Green 1 min read

It has been roughly 4 years since I quit my industry job and decided to become a consultant. Before making my decision, I remember searching the Internet to see if I could gain any insight into what to expect. Unfortunately, there just didn’t seem to be many people sharing their own experiences about what it was like to go from…

Luiza Figueiredo Pagliari 1 min read

One of our clients, a large media group in Latin America, came to us with a mobile project. Their online television division wanted to ensure viewers could watch their favorite programs at any time, anywhere. After the successful launch of their iPhone app, we were brought in to build an Android application with video-on-demand.

Fabio Pereira 1 min read

The recent “Is TDD Dead?” hangout between DHH, Martin Fowler and Kent Beck has made the level of dissatisfaction about too much mocking and stubbing when writing automated tests pretty clear. DHH expressed his strong opinions about fundamentalism around tests that can’t access collaborators. This has also been a key point in Martin’s recent post. The three of them claimed…

Juliana Dorneles 1 min read

A design critique session can be tough. Some people don’t feel comfortable enough to give an honest opinion and limit themselves to giving positive feedback. Others will only observe the negatives. And most folks base their critique on their own biased aesthetic viewpoint rather than focusing on the purpose of the design (form follows function, remember?). These and a number…

12 May 2014

lukaseder 1 min read

Recently, at the office: Bob: I’ve looked into that slow query you’ve told me about yesterday, Alice. I’ve added the indexes you wanted. Everything should be fine now Alice: Thanks Bob. I’ll quickly check … Nope Bob, still slow, it didn’t seem to work Bob: You’re right Alice! It looks like Oracle isn’t picking up … Continue reading The Index…

sqlindexindex range scannulloracle

Rodrigo Tolledo 1 min read

Gatling is a powerful open-source Performance Test tool released in December, 2011. It was also mentioned in the Thoughtworks Radar 2013 and 2014 as a tool worth trying. Gatling is a lightweight DSL written in Scala that comes with the interesting premise of "treating your performance tests as production code".

Vinod Sankaranarayanan 1 min read

Getting a different team to take over the development of an application brings in challenges from multiple perspectives. There will be differences around processes, engineering, as well as culture. Larger transfers would also involve changes to infrastructure. For long, the industry has done a disservice to this field by calling it “Knowledge Transfer”. Knowledge transfer is but a subset of…

11 May 2014

Natalie Hollier 1 min read

Recently some of my colleagues at Thoughtworks (@TheSubversiveBA, @JessicaKeeney) and I ran a workshop at Harvard's Women in CS WECode Conference. The conference turnout was 350 amazing and talented young women from high schools and universities in Boston and nearby states.

9 May 2014

lukaseder 1 min read

At Data Geekery, we love Java. And as we’re really into jOOQ’s fluent API and query DSL, we’re absolutely thrilled about what Java 8 will bring to our ecosystem. Java 8 Friday Every Friday, we’re showing you a couple of nice new tutorial-style Java 8 features, which take advantage of lambda expressions, extension methods, and … Continue reading Java 8…

javajava 8backwards compatibilitybrian goetzcommunity

Karan Misra 1 min read

For the impatient, TheBot was an experiment to kickstart a hardware engineering culture at Thoughtworks. We choose the Raspberry Pi (RPi) as the prototyping platform and Golang as the language in which to create the firmware. We felt the need for a solid hardware abstraction layer (HAL) which would allow us to not only target the RPi, but soon expand…

Duncan Cragg 1 min read

With the expansion of the Internet of Things (IoT), and the diversity of products and technologies, the one thing that everyone agrees on is that it's time to start agreeing: the Internet of Things needs standards. Many agree that it needs open standards, like those that underpin the Web.

8 May 2014

Natalie Hollier 1 min read

Designing a new and innovative product can be a challenging process filled with uncertainties. From a business perspective, you need to explore and keep at the forefront of what is happening in the market, search for unique opportunities and listen to customer’s needs until you discover a meaningful solution. But once you have a new product idea, the design process…

Paul Sullivan 1 min read

Recent movements have given Product Managers wonderful tools for minimizing waste. Eric Ries has his build/measure/learn loops. Steve Blank calls for us to "get out of the building". Clay Christensen’s Jobs to Be Done framework gives us new ways to think about the roles that our products play in user’s lives. They all tell us that you need to get…

Patti Mandarino 1 min read

While on vacation, I received the following text from a colleague. “Was another mad week with nights getting home at 3am and lots of people less than happy. But nothing to worry about. I’m on it.” The text got me thinking about those 3am nights. In the 20 years of software development projects, I’ve experienced a number of times when…

Rahul Goma Phulore 1 min read

Thoughtworks Pune has been using Scala successfully for past couple of years on a few projects. In the spirit of contributing back to the community, we hosted the first ever Pune Scala Symposium on 12 April 2014. The primary goals of the conference were to get practitioners together, share learnings with others, motivate the uninitiated to take a plunge, and…

7 May 2014

Dave Cheney 1 min read

I have several projects on the hop at the moment which require control over a serial port, actually a serial port emulated over USB. So for the last few days I’ve let myself be distracted by writing yet another serial package for Go. github.com/pkg/term term is built on a lower level package, called termios which provides […]

goprogrammingarduinofirmataftdi

lukaseder 1 min read

I’ve recently stumbled upon this interesting Stack Overflow question, where the user essentially wanted to ensure that resulting records are delivered in a well-defined order. They wrote They got CE367FAACDHCANPH-151556 CE367FAACEX9ANPH-153877 GE526OTACCD3ANPH-149839 NI564FAACJSFANPH-162605 They wanted CE367FAACDHCANPH-151556 CE367FAACEX9ANPH-153877 NI564FAACJSFANPH-162605 GE526OTACCD3ANPH-149839 Very often, according to your business rules, sorting orders are not “natural”, as in numeric sortin

sqlcase expressionderived tablesjavajooq

Rahul Goma Phulore 1 min read

Big Data Pipeline powered by Scala Session presented by Rohit Rai, tuplejump Rohit is a founder and the CEO of tuplejump Inc. Rohit is a true polyglot with experience in a number of programming languages. He is also a prolific open source contributor. He has been working in Scala, Akka, Play and the ecosystem for over 4 years. Tuplejump is…

Rahul Goma Phulore 1 min read

Mushtaq is probably the biggest Scala enthusiast and evangelist in all of Thoughtworks! He has been programming in Scala for a long time, and has also been coaching for quite some while. (Keep an eye on @punescala for our Scala training programs.)

Rahul Goma Phulore 1 min read

Scaling your startup's data platform using Akka, Scalding, and Spark - Session presented by Rajesh Muppalla, Indix Rajesh is a co-founder and director of engineering at Indix, a product intelligence platform for retailers and brands. He leads a team responsible for collecting, organizing, and structuring all the product related data collected from web. His main areas of focus are big…

Rahul Goma Phulore 1 min read

Promise of a Better Future - Session presented by Rahul Goma Phulore and Pooja Akshantal, Thoughtworks Pooja and I have been working on a large scale Scala project at Thoughtworks for more than a year now, and have been using Scala, Play, and a teensy bit of Akka successfully. We have been using future-based concurrency, which is what this talk…

Rahul Goma Phulore 1 min read

Scala in Practice: 3 years later - Session presented by Patric Fornasier, Springer Patric, a former Thoughtworker, is now a technical principal at Springer where he primarily writes code and helps teams deliver software effectively. He has experience with wide range of tools, languages, and technologies. Three years ago, Springer decided to use Scala on a large, strategic project. This…

Rahul Goma Phulore 1 min read

Number Crunching in Scala - Session presented by Chris Stucchio, BayesianWitch Chris is one of the founders of BayesianWitch, a web analytics company built almost entirely on Scala. He is currently focused on improving the scientific computing ecosystem in Scala.

Rahul Goma Phulore 1 min read

Keynote talk: Kojo, a Scala based learning environment for children - Session presented by Lalit Pant, Kogics Lalit Pant is a software architect cum teacher based out of Dehradun. He spends his time creating educational software , and teaching computer programming and math to children. In addition, he runs an NGO called Kalpana learning center.

6 May 2014

Michael Friis 1 min read

Today, we’re excited to announce public beta of two-factor authentication for Heroku accounts. With two-factor auth enabled, an authentication code is required whenever you log in. The code is delivered using an app on your smartphone, and access to your phone becomes a required factor (in addition to your password) to access Heroku. An attacker […] The post Two-factor Auth…

news

JK Werner 1 min read

There is a certain connotation with the word estimate. People think of cost and time. Think about the last time a mechanic fixed your car or you hired a painter to put a fresh coat of paint on the third floor windows. You are thinking about time and cost aren't you? When we start thinking about a software project we…

5 May 2014

lukaseder 1 min read

Every now and then, I miss SQL’s three-valued BOOLEAN semantics in Java. In SQL, we have: TRUE FALSE UNKNOWN (also known as NULL) Every now and then, I find myself in a situation where I wish I could also express this UNKNOWN or UNINITIALISED semantics in Java, when plain true and false aren’t enough. Implementing … Continue reading Three-State Booleans…

javajava 8booleanjdbcjoo

4 May 2014

Dave Cheney 1 min read

Now that go1.3beta1 has been released I’ve updated the autobench-next branch to track Go 1.2 vs tip (go1.3beta1). Using autobench is very simple, clone the repository and run make to produce a benchmark on your machine. % cd devel % git clone -b autobench-next https://github.com/davecheney/autobench.git % cd autobench % make You can stay up to date with […]

goprogrammingautobenchbenchmarkperformance

3 May 2014

1 min read

Javascript is a fantastic example of how something, despite having visible warts and very poor design, can dominate the tech landscape. Nobody uses Javascript because it’s a beautiful language; they use it because it’s ubiquitous. Its warts are now well understood and most have workarounds. An amazing omission in Javascript’s design is the lack of a built-in module system. As…