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…
16 Dec 2015
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.
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
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…
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:…
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…
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…
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
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
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.
Ada Lovelace: Debugging by horseback since 1843.
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…
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
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…
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…
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
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
From time to time some programming ideas come to my mind which I can not forget. I had often started a new project but due to my limited amount of free time it is hard to finish all of them. In the next blog posts I will describe my ideas […] The post Project idea: Nostradamus AKA prophetr – a…
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…
A full tutorial on building a video sharing app with Ruby on Rails, and PubNub, using ffmpeg for encoding.
A full tutorial on building a video sharing app with Ruby on Rails, and PubNub, using ffmpeg for encoding.
7 Dec 2015
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) […]
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 […]
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…
Business, Design and Technology: Joining Forces for a Truly Competitive Advantage
Thoughtworks InsightsTechnology 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
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
Build Windows service application that monitors server processing load and memory consumption using PubNub's Data Stream Network.
Build Windows service application that monitors server processing load and memory consumption using PubNub's Data Stream Network.
3 Dec 2015
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…
2 Dec 2015
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…
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…
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
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
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
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…
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 […]
28 Nov 2015
(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
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
“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
Anthropologist Amber Case argues the widespread obsession with screen-staring, button-clicking and tinder-swiping has turned us all into new type of human. In the award winning movie Her director Spike Jonze illustrates a twisted but possible relationship between devices and human-beings.
23 Nov 2015
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…
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
I regularly get emails from recruiters trying to get me to change jobs. Unfortunately, many of the emails are not very good, wasting my and the recruiters’ time. So here are 5 tips for recruiters on how to write a good … Continue reading →
20 Nov 2015
PubNub has added support to their SDK for Swift on iOS, and also Mac OS X native apps.
PubNub has added support to their SDK for Swift on iOS, and also Mac OS X native apps.
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
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 […]
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 } […]
[Podcast] Does Product-Centric IT Need Projects and Programs?
17 Nov 2015
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
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:…
Dispatches from ParadigmShift Nashville I have seen the future and it works. – Lincoln Steffens, 1933
An opinionated Sass architecture system for writing modular and scalable libraries. Also, a case in defense of extends.
14 Nov 2015
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 […]
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…
13 Nov 2015
The Unfinished Business of Organizational Transformation
12 Nov 2015
In this guest post, Marc Nitzsche shares his experience building a real-time, live audience participation voting application for a game show.
In this guest post, Marc Nitzsche shares his experience building a real-time, live audience participation voting application for a game show.
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 […]
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,…
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…
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…
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
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
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…
9 Nov 2015
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
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…
In the final post of the CSS Image Effects series, we explore the beautiful, surreal world of infrared photography by creating our own faux effect.
5 Nov 2015
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 […]
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…
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…
4 Nov 2015
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…
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
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…
2 Nov 2015
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 +…
Part 4: Exploding The World of Retail Opportunity - Create the Responsive Supply Chain
Thoughtworks InsightsThis is the fourth of a five part series.
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
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,…
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…
“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.
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.
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
"Move fast and break things: A cautionary tale from Facebook's code quality woes."
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 […]
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
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 […]
28 Oct 2015
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
How to build real-time charts where data is streamed to a live-updating UI dashboard using PubNub Data Streaming and the EON JavaScript framework.
How to build real-time charts where data is streamed to a live-updating UI dashboard using PubNub Data Streaming and the EON JavaScript framework.
26 Oct 2015
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…
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…
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.
Decrypt, inspect, and debug HTTPS traffic with mitmproxy and iptables.
"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…
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…