Some queries shouldn’t hit the database all the time. When you query for master data (such as system settings, languages, translations, etc.), for instance, you may want to avoid sending the same silly query (and the results) over the wire all the time. For example: Most databases maintain buffer caches to accelerate these queries, so … Continue reading Hack up…
26 Mar 2015
When I was younger, I wanted to learn to play the guitar (this was the 90’s after all). So I cracked open my piggy bank, bought a decent beginners guitar and took some lessons. I regularly bought the guitar magazines that appeared in the local newsagent and practised along to my favourite songs. I noodled […]
While there is much talk about collaborative and interdisciplinary teams, many organisations still support a model of 'design for' rather than 'design with'. User experience matters are for designers to think about, which separates the team in unwanted silos. Encouraging the entire development team to take part in the ideation sessions is a simple step that can break some barriers…
24 Mar 2015
Hibernate has become a de-facto standard in the Java ecosystem, and after the fact, also an actual JavaEE standard implementation if standards matter to you, and if you put the JCP on the same level with ISO, ANSI, IEEE, etc. This article does not intended to discuss standards, but visions. Hibernate shares JPA’s vision of … Continue reading jOOQ vs.…
My favourite thing about the Chromium code is this enum of cats and all the comments in that file. My second favourite thing is OWNER files. Guess what this post is about (hint: it’s not about cats NOT EVERYTHING IS ABOUT CATS, OK?) Edit: In a clear and deliberate conspiracy, the cats have been removed from Chromium. The old new…
This is the second article in a four part series, where the authors share their experiences and insights on ushering technology fueled innovation in incumbent financial services organizations. Here are the first, third and fourth articles in this series.
23 Mar 2015
A distributed data system consisting of several nodes is said to be fully consistent when all nodes have the same state of the data they own. So, if record A is in State S on one node, then we know that it is in the same state in all its replicas and data centers. Full […]
The Internet of Things is exploding. And by 2020, it's expected to grow to quadruple the amount of connected devices.
The Internet of Things is exploding. And by 2020, it's expected to grow to quadruple the amount of connected devices.
Last time we defined the Hamming code. We also saw that it meets the Hamming bound, which is a measure of how densely a code can be packed inside an ambient space and still maintain a given distance. This time we’ll define the Reed-Solomon code which optimizes a different bound called the Singleton bound, and then generalize them to a…
Some selected sketchnotes from a few talks I went to at the SXSW Interactive 2015 Conference.
20 Mar 2015
At Heroku, most of us love living in the CLI. Of course, we're absolutely dedicated to providing a great developer experience whether it’s in the dashboard or at the terminal, but we also believe a mastery of the command line interface offers great productivity to you as a developer. A well designed CLI coupled with […] The post Making CLI…
This is the second article in our new series where Dan McClure shares his experiences on what is driving our new innovation-fueled economy. Here is the first article in the series.
19 Mar 2015
I am frequently contacted by recruiters looking for leads. This isn’t an attempt to blow my own horn, I’m sure you are also constantly pestered. What is frustrating is the recruiters who come calling for leads are universally unaware of the meetups and user groups in the local area for the role they are recruiting […]
In Part Two, we're building the subscriber app that receives and publishes data to its UI using Ember.js, receiving data from a broadcaster app.
In Part Two, we're building the subscriber app that receives and publishes data to its UI using Ember.js, receiving data from a broadcaster app.
Worldwide, girls and women face many challenges to live safe, free, financially independent and socially empowered lives. Safe spaces are physical or virtual places where girls and women can seek support to fully develop their qualities, overcoming gender barriers that bar their access to education, work and health care.
Thanks to the rise of lean thinking and increased capabilities brought by User Experience Design practitioners, the user experience of mobile software, particularly for consumers, has made great strides in the last few years. So why do companies sit on the experience sidelines when building mobile apps for their own employees?
18 Mar 2015
This blog post shows you how to implement broadcast publish/subscribe with Ember.js, enabling you to send data from one publisher to multiple subscribers.
This blog post shows you how to implement broadcast publish/subscribe with Ember.js, enabling you to send data from one publisher to multiple subscribers.
One year ago, on March 18, 2014, Java SE 8 was released, and with it, the bliss of functional programming through lambda expressions and the streams API. These were great news for all of our Java ecosystem, and many people have already upgraded to Java 8. Stack Overflow already yields almost 2500 questions about Java … Continue reading One Year…
Student Data privacy and security are our foremost responsibilities here at Clever. We invest heavily to ensure that we are improving privacy for schools, students, and teachers, and we make sure that everyone at Clever is constantly working towards this goal. About five months ago, we were made aware of aspects of our privacy policy […] The post Open Sourcing…
17 Mar 2015
PubNub Raspberry Pi-controlled model smart home, its GUI, and how it works. The house is controlled, in real-time, using Pub/Sub Messaging.
PubNub Raspberry Pi-controlled model smart home, its GUI, and how it works. The house is controlled, in real-time, using Pub/Sub Messaging.
In Understanding Media, McLuhan describes the shift in western society from an agrarian economy to an industrial economy as a template for the next shift from an industrial economy to an information economy. Another characteristic reversal after passing a road break boundary is that the country ceases to be the center of all work, and the city ceases to be…
In our world today, the power of words and effective communication cannot be overemphasized.
Another blog post written for SitePoint about 5 great uses for Sass maps and other thoughts on code at the moment.
16 Mar 2015
So, you’ve found a nice Open Source project that has added great value to your own work and you want to give back. Before we move on, let me stress that this isn’t anything personal. This article doesn’t criticise anyone particular, and the ranty tone is just for your reading entertainment. I do not want … Continue reading The 10…
15 Mar 2015
Several decades ago, when I graduated high school and was wondering what I would do with my life I faced a choice. Should I take the now common “gap year” and travel the world, or should I enrol directly in university ? Oft quoted wisdom recommends that programmers looking to better themselves in their craft should […]
14 Mar 2015
Pinterest just open sourced Pinball which seems like an interesting Luigi alternative. There’s two blog posts: Pinball: Building workflow management (from 2014) and Open-sourcing Pinball (from this week). The author has a comment in the comments thread on Hacker News: Luigi was not available in public, when Pinball starts. So not sure the pros and cons between Pinball and Luigi.…
13 Mar 2015
Bazaarvoice’s flagship product is a platform for our clients to accept, display and manage consumer generated content (CGC) on their web sites. CGC includes reviews, ratings, images, videos, social network content, etc. Over the last few years, syndicating CGC from one site to another has become increasingly important to our customers. When a user submits […]
This white paper is written by Dan McClure (Innovation Design Practice Leader, Thoughtworks) and Ian Gray (Director, Gray Dot Catalyst). This is the first of four contributions on the subject of 'Innovation Scaling' submitted for the 'Transformation Through Innovation' theme for the World Humanitarian Summit.
Tightly coupled software presents the biggest difficulty when teams are looking to extend or change systems. As systems get larger, coupling limits the scope of change and self perpetuates. The easiest way to extend tightly coupled code is often to weave in even more interdependence.
This white paper was written for and launched at the eHealth HealthCare Leaders Forum held in Gurgaon, India on the 12th of March, 2015. Summary:
12 Mar 2015
This tutorial walks you through how to stream data to create real-time, live-updating charts using NVD3. In this, we'll be streaming bus stop data.
This tutorial walks you through how to stream data to create real-time, live-updating charts using NVD3. In this, we'll be streaming bus stop data.
The past decade has been an extremely exciting one in all matters related to data. We have had: An ever increasing amount of data produced by social media (once called “Web 2.0”) An ever increasing amount of data produced by devices (a.k.a. the Internet of Things) An ever increasing amount of database vendors that explore … Continue reading 3 Reasons…
Performing a backup is one of those tasks that ensures your application can recover from database or hardware failures should they ever occur. Over four year ago, we recognized this as a best practice and came out with PGBackups, an add-on that reduces the risk and complexity of taking database backups. Today, we’re pleased to […] The post Schedule PostgreSQL…
Liberate teams from the annual budget cycle The use of the traditional annual fiscal cycle to determine resource allocation encourages a culture that thwarts our ability to experiment and innovate. It perpetuates spending on wasteful activities and ideas that are unlikely to deliver value. How can we get out of the rut that is the annual budget process and encourage…
While facing the challenges of doing business in Brazil, such as logistics and transport, tax burdens, regulatory environment, among others, Brazilian Retail has been very creative and innovative. To draw the customer's attention, there is a new wave of innovation in various segments associated with two key factors: rapid technological change and the transformation of consumer profiles. Retailers are exploring…
In any project lifecycle, our goal should be to automate all the activities that are repeated while creating and maintaining the system. The practice of ‘Ruthless automation’ is apt to automate such tasks. In project lifecycle, usually because of with tight deadlines, or just not being aware enough, we either tend to overlook or fail to identify automation of the…
11 Mar 2015
This tutorial walks you through how to build the end-user application for a broadcast sports real-time statistics streaming app with AngularJS.
This tutorial walks you through how to build the end-user application for a broadcast sports real-time statistics streaming app with AngularJS.
Luca Bastos, lead consultant in Brazil, died at age 69 Last Sunday (8 March), we lost one of our greatest teachers. Luca Bastos, our consultant leader in Brazil, died at age 69 in Sao Paulo. A born leader, Luca personified enthusiasm, a thirst for knowledge and technical excellence.
“Microservices are the first post DevOps revolution architecture," says Neal Ford, Architect and Meme Wrangler at Thoughtworks. I had the chance to record a 22 minute interview with him, where he explained to me why the DevOps revolution was a prerequisite for the microservices architectural style to become possible.
This article was written by Laura Schwecherl from Possible. In August 2014, Thoughtworks partnered with Possible to implement Bahmni as the Hospital Management System in the hospital that they run in collaboration with the Government of Nepal. Around the globe, our lives are increasingly transformed by technology, with healthcare perhaps one of the most impressive arenas for these changes.
10 Mar 2015
Build a broadcast gamecast app where stats are edited and published to any number of subscribers in real time simultaneously with a broadcast pub/sub design.
Build a broadcast gamecast app where stats are edited and published to any number of subscribers in real time simultaneously with a broadcast pub/sub design.
Introduction Grails is a web framework aimed to boost development productivity. One of the main features is domain centric database schema generation. Applications built with Grails are able to update existing schema just before they start. To do this, Grails is using built-in domain mappers or migrations in more advanced cases. The goal of the … Continue reading Integrating jOOQ…
I've been reading a lot about software testing, lately. Coming from a hardware background (CPUs and hardware accelerators), it's interesting how different software testing is. Bugs in software are much easier to fix, so it makes sense to spend a lot less effort spent on testing. Because less effort is spent on testing, methodologies differ; software testing is biased away…
9 Mar 2015
Yak Shaving (uncountable): (idiomatic) Any apparently useless activity which, by allowing you to overcome intermediate difficulties, allows you to solve a larger problem. (idiomatic) A less useful activity done to consciously or unconsciously procrastinate about a larger but more useful task. Both interpretations of the term Yak Shaving as explained by Wiktionary are absolutely accurate … Continue reading Yak Shaving…
Out for a walk one day, a woman came across a construction site and saw three men working. She asked the first man, “What are you doing?” Annoyed by the question, the first man barked, “Can’t you see that I’m laying bricks?” Not satisfied with the answer, she asked the second man what he was doing. The second man answered,…
Problem: Given a massive data stream of $ n$ values in $ \{ 1, 2, \dots, m \}$ and the guarantee that one value occurs more than $ n/2$ times in the stream, determine exactly which value does so. Solution: (in Python) def majority(stream): held = next(stream) counter = 1 for item in stream: if item == held: counter +=…
7 Mar 2015
This is the text of my closing keynote from Gophercon India. It has been slightly altered for readability from my original speaking notes. I am indebted to the organisers of Gophercon India for inviting me to speak, and to Canonical for giving me the time off to attend the conference. If you want to see me […]
I've been hearing this question a lot lately, and when I do, it reminds me how much I don't know. Here are some questions this question brings to mind. How does a keyboard work? Why can’t you press an arbitrary combination of three keys at once, except on fancy gaming keyboards? That implies something about how key presses are detected/encoded.…
6 Mar 2015
How to build an AngularJS chat application with a smooth, interactive UI on Famo.us. This allows you to animate certain chat features. Full tutorial and demo.
How to build an AngularJS chat application with a smooth, interactive UI on Famo.us. This allows you to animate certain chat features. Full tutorial and demo.
A couple of years ago, my former colleague Alex Sexton wrote about the techniques that we use at Bazaarvoice to deploy client-side JavaScript applications and then load those applications in a browser. Alex went into great detail, and it’s a good, if long, read. The core idea, though, is pretty simple: an application is bootstrapped […]
I had written an article posted on Thoughtworks Insights in 2010 on my thoughts on the Future of Test Automation Tools & Infrastructure. Sometime in mid-2014, I started thinking about how the current technology ecosystem and development relates to the Present, and the Future of Testing and the role of the Tester.
5 Mar 2015
I’ve recently stumbled upon a very interesting caveat of the JDK APIs, the Class.getConstructors() method. Its method signature is this: Constructor<?>[] getConstructors() The interesting thing here is that Class.getConstructor(Class...) returns a Constructor<T>, with <T> being maintained: Constructor<T> getConstructor(Class<?>... parameterTypes) Why is there a difference, i.e. why doesn’t the first method return Constructor<T>[]? Let’s consider the … Continue reading The Java…
FYI: Like the previous post, this is a really quick tip.
Most real-world problems are big enough that you can't just head for the end goal, you have to break them down into smaller parts and set up intermediate goals. For that matter, most games are that way too. “Win” is too big a goal in chess, so you might have a subgoal like don't get forked. While creating subgoals makes…
This is the first article in a four part series, where the authors share their experiences and insights on ushering technology fueled innovation in incumbent financial services organizations. Here are the second, third and fourth articles in this series.
4 Mar 2015
This tutorial shows you how to send and receive desktop web notifications in Firefox, Safari, and Chrome in real time with the PubNub JavaScript SDK.
This tutorial shows you how to send and receive desktop web notifications in Firefox, Safari, and Chrome in real time with the PubNub JavaScript SDK.
Sometimes we give terrible advice. Like in that article about how to use Java 8 for a cached, functional approach to calculating fibonacci numbers. As Matthias, one of our readers, noticed in the comments, the proposed algorithm may just never halt. Consider the following program: It will run indefinitely at least on the following Java … Continue reading Avoid Recursion…
Over the past few years, Netflix has open sourced many of the components that make up its production platform. These include Eureka for service discovery, Hystrix for handling service failure, Ribbon for client side load balancing, and many others. These projects are powerful, mature, and benefit from Netflix’s many years of experience deploying service-oriented applications […] The post Managing your…
The new MapTiler Desktop 0.6 is now available with automatic OGC WMTS services, offline map viewer, export maps to Garmin GPS, visual referencing with satellite map, and many other news.
As a business analyst I work with developers, quality analysts, experience designers and product owners. Each of us bring specialist skills to the mix. We approach problems with different approaches and we work as a team to solve problems in the best way. We can adapt quickly to change and we strive to get value to our users fast and…
3 Mar 2015
This is the story of how a handful of cryptographers ‘hacked’ the NSA. It’s also a story of encryption backdoors, and why they never quite work out the way you want them to. But I think I’m getting ahead of myself a bit here. Today’s Washington Post has the story of a nasty bug in some TLS/SSL servers … Continue…
I spent the last weekend working through the amazing guide for Make a Lisp, writing a Lisp interpreter in Nim. The final result just made it into the repository. Running the Nim version is pretty simple. You need the Nim compiler from the devel branch and nre which can be installed through nimble. After installing those you can build and…
I’m very glad to have had the chance to be involved with the very first Go challenge. My challenge is related to something we do at Splice: binary decoding. Read more on the Go Challenge website pattern_1.splice Saved with HW Version: 0.808-alpha Tempo: 120 (0) kick |x---|x---|x---|x---| (1) snare |----|x---|----|x---| (2) clap |----|x-x-|----|----| (3) hh-open |--x-|--x-|x-x-|--x-| (4) hh-close |x---|x---|----|x--x| (5)…
I recently interviewed Sam Newman, author of Building Microservices, and James Gregory, Thoughtworks Australia's technical market principal, on deploying and operating microservices. This is a topic that has grown exponentially in conversation over the last year as the technical community explores new ways in which we can evolve with pace in this digital economy.
Our current Internet doesn't have much in terms of security when you look at how our computers communicate with each other. The most widespread technology for securing communication is called Transport Layer Security (TLS (previously known as Secure Sockets Layer (SSL)). This technology is not as widely deployed as it should be, since it can be complicated to set up…
2 Mar 2015
Introduction Cross compilation is one of Go’s headline features. I’ve written about it a few times, and others have taken this work and built better tooling around it. This morning Russ Cox committed this change which resolved the last issue in making cross compilation simpler and more accessible for all Gophers. When Go 1.5 ships […]
I’ve been getting a bit cross about backward compatibility recently. This post contains two examples of backward incompatibilities in .NET 4.6, and one example of broken code which isn’t being fixed due for backward compatibility reasons. Let me start off by saying this post is not meant to be seen as an attack on Microsoft. … Continue reading Backward compatibility…
We’ve published an article in the German magazine www.java-aktuell.de, which is published by the iJUG e.V.. You can read and download the article free of charge from our blog! In Java gibt es kein Standard-API, das die Ausdrucksstärke und Mächtigkeit von SQL direkt unterstützt. Alle Aufmerksamkeit ist auf objekt-relationales Mapping und andere höhere Abstraktionslevel gerichtet, … Continue reading jOOQ –…
Or how to detect and correct errors Last time we made a quick tour through the main theorems of Claude Shannon, which essentially solved the following two problems about communicating over a digital channel. What is the best encoding for information when you are guaranteed that your communication channel is error free? Are there any encoding schemes that can recover…
"Wisdom from the masters: Insights on software engineering and language design."
1 Mar 2015
For January 2015, I tried to declutter around the house for 15 minutes a day. We now have a couple rooms that are much cleaner, and I gave away a bunch of magazines. For February 2015, my 30 day challenge was to go on daily 15 minute walks with my wife. That was nice. Lately […]
This article might help you choose the right provisioning tool if you are looking to migrate or build complex infrastructure on AWS.
26 Feb 2015
We now have a library for building real-time, live-updating graphs using C3.js. Stream and publish data to a real-time visualization.
We now have a library for building real-time, live-updating graphs using C3.js. Stream and publish data to a real-time visualization.
I have updated my unofficial ARM tarball distributions page with prebuilt Go 1.4.2 tarballs. You can find them by following the link in the main header of this page. As these were the first tarballs produced since the move to git, please let me know if you encounter any issues.
This can happen ever so easily. You adapt a table by adding a new column: You go on, implementing your business logic – absolutely no problem. But then, later on (perhaps in production), some batch job fails because it makes some strong assumptions about data types. Namely, it assumes that the two tables payments and … Continue reading How to…
Wow I guess it was more than a year ago that I tweeted this. Crazy how time flies by. Anyway, here’s my rationale: When I update one line of code I feel like I have to put in a long explanation about its side effects, why it’s fully backwards compatible, and why it fixes some issue #xyz. When I refactor…
25 Feb 2015
How to capture photos using a Tessel Camera and stream them to a live-updating feed using AngularJS and PubNub Pub/Sub Messaging.
How to capture photos using a Tessel Camera and stream them to a live-updating feed using AngularJS and PubNub Pub/Sub Messaging.
The Modern SQL Twitter account (by Markus Winand) published a hint about how to extract a date part in SQL: The right way to get a part of a date/time is: EXTRACT(YEAR FROM CURRENT_DATE) = 2015http://t.co/UNLyUoQdVb Retweet to spread the word! — Modern SQL (@ModernSQL) February 24, 2015 Is it true? Yes it is, in … Continue reading How to…
Over the last year I have had the privilege of travelling to meet Go communities in Japan, Korea and India. In every instance I have met experienced, passionate, pragmatic programmers ready to accept Go for what it can do for them. At the same time the message from each of these communities was the same; […]
As someone with several years of experience in Human Resources, my job at Thoughtworks was quite different from the usual. For instance, we don’t like to call it “Human Resources”, because we don’t see people as resources. We simply call it ‘People Operations’. It took me some time to adapt to this unique and fast-paced environment, and I’ve learned a…
24 Feb 2015
Nine months ago we released Heroku Connect, the bi-directional data synchronization service that enables developers to build Heroku apps that seamlessly interact with Salesforce data. Since then, we’ve seen developers use it to build all types of interesting apps for web and mobile, especially for eCommerce, loyalty, and Internet of Things use cases. We’ve also […] The post Heroku Connect…
We conducted our 3rd SI Hackathon on Feb 19th to Feb 20th. This is one of the hackathon results. Background While searching for a nice datepicker for SI I figured out that there’s nothing that is really pleasing from both technical and aesthetical perspective. Either it is an jQuery wrapped thingy, or wrapped pickaday or if […]
We conducted our 3rd SI Hackathon on Feb 19th to Feb 20th. This is one of the hackathon results. Background My previous Hackathon project was way too ambitious, so I decided to pick something easier this time, which would also help reduce our support load a bit. A frequent pain point is that client admins […]
How to program a Tessel camera app to capture images, including connecting your Tessel, all on the client side.
How to program a Tessel camera app to capture images, including connecting your Tessel, all on the client side.
Every framework introduces a new compromise. A compromise that is introduced because the framework makes some assumptions about how you’d like to interact with your software infrastructure. An example of where this compromise has struck users recently is the discussion “Are Slick queries generally isomorphic to the SQL queries?“. And, of course, the answer is: … Continue reading jOOQ vs.…
"Curiosity!" - The word I connect with the most and one that motivates me in life. Right after finishing an engineering degree in computer technology, I joined Thoughtworks as an application developer. The journey for every grad Thoughtworker from around the world starts with a six-week training at Thoughtworks University . It was one of the best phases of my…