Moving from Halloween to running, I wanted to blog about what it’s like to “bonk” or hit the wall while running a marathon. I’m a slow runner. Hell, I’m a slow walker. I consider it a great marathon if I finish in just under five hours. This past weekend at the Morgan Hill marathon, I […]
4 Nov 2014
Check out this list of the 6 things you need to know about developing WebRTC video and voice applications. It's communication, 100% in the browser.
Check out this list of the 6 things you need to know about developing WebRTC video and voice applications. It's communication, 100% in the browser.
A procedural language combined with SQL can do miracles in terms of productiveness, performance and expressivity. In this article, we’ll see later on, how we can achieve the same with SQL (and PL/SQL) in Java, using jOOQ, which offers much more functionality than Oracle’s own now desupported JPublisher. But first, a little bit of history… … Continue reading Access PL/SQL…
Surviving the Reddit hug of death: A tech tale of triumph.
It is now possible to search by country, code, or system name directly within the app.
3 Nov 2014
Revisiting my post about error handling and exceptions, written well before Go hit 1.0, I’m pleased that it stands the test of time. Java has comprehensively demonstrated that checked exceptions (actually having both checked and unchecked exceptions) has been a disaster for the evolution of the language. Checked exceptions have placed a suffocating yoke of backward compatibility on […]
Okay, so you can project light onto a canvas to easily try out an idea. I decided to try one more Halloween costume: Edvard Munch’s The Scream. I started by finding a high-resolution version of The Scream. Next I projected the painting onto a canvas: Then I took a pencil and traced the strokes of […]
So, you’ve been working with Java since the very beginning? Remember the days when it was called “Oak”, when OO was still a hot topic, when C++ folks thought that Java had no chance, when Applets were still a thing? I bet that you didn’t know at least half of the following things. Let’s start … Continue reading 10 Things…
Performance is important, and if we can’t measure something, we can’t make it fast. Recently, I’ve had my eye on the ActionDispatch::Static middleware in Rails. This middleware gets put at the front of your stack when you set config.serve_static_assets = true in your Rails app. This middleware has to compare every request that comes in […] The post Benchmarking Rack…
I already talked about using a projector to prototype a Halloween costume. One Halloween idea that worked out better than I expected was Jack Nicholson from The Shining. Remember the scene when Jack axes his way through a door, announcing “Here’s Johnny!”? It looked like this in the movie: I started by letting some stubble […]
Once upon a time, my computer architecture professor mentioned that using a random eviction policy for caches really isn't so bad. That random eviction isn't bad can be surprising — if your cache fills up and you have to get rid of something, choosing the least recently used (LRU) is an obvious choice, since you're more likely to use something…
This is an off-the-cuff comment for Hacker School's Paper of the Week Read Along series for Out of the Tar Pit. I find the idea itself, which is presented in sections 7-10, at the end of the paper, pretty interesting. However, I have some objections to the motivation for the idea, which makes up the first 60% of the paper.…
Organisational agility has been a hot topic for a long time. In the South African context, financial institutions have made enormous strides in improving banking, in spite of a very strictly governed environment, taking into consideration compliance with the regulatory requirements imposed by the South African Reserve Bank.
The Australian Senate Inquiry into the comprehensive revision of the Telecommunications (Interception and Access) Act 1979 is the only public Inquiry to have been held in Australia since revelations about mass surveillance.
1 Nov 2014
For Halloween this year I was thinking about famous works of art like Rene Magritte’s Son of Man or more popular works like the “Hang in There, Baby!” kitten. I was also thinking about canvases. You can buy a cheap canvas at local craft stores for $10 or so. I was thinking: wouldn’t it be […]
31 Oct 2014
In the past for Halloween, I’ve often dressed up as internet memes (Rick Astley, anyone?) or topical things from the news (like Matt/Mitt Romney). This year I was running dry on ideas until a few days before Halloween. Then I started to think about famous artwork–more on that in a future Halloween post. One idea […]
The jOOQ ecosystem and community is continually growing. We’re personally always thrilled to see other Open Source projects built on top of jOOQ. Today, we’re very happy to introduce you to a very interesting approach at combining REST and RDBMS by Björn Harrtell. Björn Harrtell is a swedish programmer since childhood. He is usually busy … Continue reading A RESTful…
30 Oct 2014
For October 2014, my 30 day challenge was to write a compliment a day for my wife. I liked that challenge because it was a good chance to be thankful for my wife after 15 years of marriage. It’s all too easy to settle into a routine and take things (or people) for granted. For […]
This tutorial shows you how to convert a JavaScript web application into an iOS application with PhoneGap, as well as manually with Cordova CLI.
This tutorial shows you how to convert a JavaScript web application into an iOS application with PhoneGap, as well as manually with Cordova CLI.
Direct Debit isn't only great for regular, fixed payments.
29 Oct 2014
The Direct Debit Guarantee protects customers against payments made in error or fraudulently, making Direct Debit the UK's safest payment method.
[Heroku Connect] [heroku_connect] is written primarily in Python using Django. It’s an add-on and a platform app, meaning it’s built on the Heroku platform. Part of our interface provides users with a realtime dashboard, so we decided to take advantage of socket.io and node.js for websocket communication. But like all Heroku apps, only one type […] The post Django and…
A few years ago I came across an amusing Slashdot story: ‘Australian Gov’t offers $560k Cryptographic Protocol for Free‘. The story concerned a protocol developed by Australia’s Centrelink, the equivalent of our Health and Human Services department, that was wonderfully named the Protocol for Lightweight Authentication of ID, or (I kid you not), ‘PLAID‘. Now to … Continue reading Attack…
Custom online globe for your website using WebGL Earth.
28 Oct 2014
This tutorial shows you how to build a Chrome Extension to broadcast Chrome push notifications to desktop users.
This tutorial shows you how to build a Chrome Extension to broadcast Chrome push notifications to desktop users.
First of all ng-europe 2014 was a really great conference. Many high level talks, the core AngularJS team really accessible and awesome attendants. Many thanks to the organising team who made this event happen. We were proud to be among the sponsors! There was so much to learn and to take home from this event, […]
About the Project: Imagine a project that’s eight years old. No matter what language or framework used, the code is very likely to be hard to maintain. The things that we take for granted now didn’t even exist eight years ago. We had a challenging experience on these lines, while delivering a Rails 2 to Rails 3.0 upgrade.
The numbers are in and analytics speak volumes. First the good...mobile usage in Canada has increased exponentially in the past year. Not surprisingly, the growth is strongest among the Millennial set, of which 90% own a smartphone, up 60% from a few years ago. Comscore reports that approximately 55% of time spent online by the Millennial demographic is through a…
27 Oct 2014
The keyboard, where our hands are placed most of the time (as developers), is the fastest navigation method by default. Knowing how to navigate yours system via keyboard will really optimize your workflow.
As an Experience Design consultant at Thoughtworks, I spend time with all kinds of product teams. Often I find they already have a list of features they want to build and are just looking for some innovative ways to make their design process more effective. Typically I start by taking a feature from this list and ask them a question…
The question isn’t whether or not to use data science; we are living in the world of Big Data and those unable to adopt these approaches will be rapidly left behind as numerous studies show1. The question is whether companies can be taught to shift their people, processes and vision to be aligned with driving data science into their value…
26 Oct 2014
A topic that has weighed on my mind recently is the dichotomy of frameworks vs. libraries in the Go community. Is the prevailing stance against complex frameworks a rejection of this purported labour saving automation, or an enlightened position that has weighed the pro’s and cons and found the costs of a framework based approached outweighs the benefits ? […]
Exponential backoff is an algorithm that uses feedback to multiplicatively decrease the rate of some process, in order to gradually find an acceptable rate. —- Wikipedia
Um projeto ágil é conduzido através de entregas rápidas e frequentes. Um projeto bem executado coloca ênfase em entregas de valor de acordo com objetivos de negócios e os usuários de destaque. Projetos ágeis promovem a liberação incremental de software: o MVP. O produto viável mínimo, em Inglês Minimum Viable Product (MVP), é a versão mais simples de um produto…
24 Oct 2014
In this talk, Joseph Gentle talks about what operational transform is, what apps you can build with it, and why it's essential for collaborative apps
In this talk, Joseph Gentle talks about what operational transform is, what apps you can build with it, and why it's essential for collaborative apps
Chris Thelwell is the Winner of the F1® Connectivity Innovation Prize 2014.
Part 2 of Python Working Environment. For ways to set Python Working Environment, check out Part 1 here.
23 Oct 2014
For a while now, I’ve been a big fan of a pattern in C# which mimics Java enums to a certain extent. In general, it’s a lovely pattern. Only after reading a comment on a recent blog post by Eric Lippert did I find out about a horrible flaw. Dubious thanks to John Payson for … Continue reading Violating the…
I wanted to find an easy way to stream a Map in Java 8. Guess what? There isn’t! What I would’ve expected for convenience is the following method: But there’s no such method. There are probably a variety of reasons why such a method shouldn’t exist, e.g.: There’s no “clear” preference for entrySet() being chosen … Continue reading Let’s Stream…
Heroku provides many instrumentations for your app out of the box through our new Heroku developer experience. We have open-sourced some of the tools used to instrument Heroku apps, but today’s focus will be on instruments, a Go library that allows you to collect metrics over discrete time intervals. What is instruments? Instrumentation is the […] The post Instrumentation by…
I’ve worked with what I consider to be good software programmers but are they really good programmers? What makes them so good? (and maybe, are they just average?)
Product Managers are a hot commodity these days. Whether you are an industry behemoth or a fledgling up-start, talented Product Managers can make the difference between driving sustainable growth or fading out of memory and eventually going bust. The industry has recognized the value of this role and is aggressively trying to hire.
For those starting in Python, setting up Python Environments in Projects could prove to be tricky as there are a lot of tools and terms in the Python ecosystem to be familiar with, in order to understand the process. This post aims to make it easy for beginners to create basic Python environments by giving step-by-step guidance. Setting up basic…
22 Oct 2014
This tutorial shows you how to convert a JavaScript web application into an Android application with PhoneGap, as well as manually with Cordova CLI.
This tutorial shows you how to convert a JavaScript web application into an Android application with PhoneGap, as well as manually with Cordova CLI.
In his talk, Pete Hunt gives an overview of the library, and walks through ReactJS in action (talk includes stick figures, emotion, and ice cream).
In his talk, Pete Hunt gives an overview of the library, and walks through ReactJS in action (talk includes stick figures, emotion, and ice cream).
As part of preparing for my dotGo talk I updated a few of my packages to use the functional options pattern. I only had time to show one of those packages on stage, pkg/term. This is a post about one that was left on the cutting room floor. Last year I wrote a simple package […]
Scope is best defined as the most valuable product/functionality that can be delivered within the constraints of a project or a business. It is not an absolute entity like time or money. It is subject to interpretations, based on our own assumptions.
Selenium as a technology is now 10 years old. Thoughtworks is proud to have created and open-sourced what is now the defacto-standard for cross platform cross browser web-app functional testing. We’re also proud to have released it as open source for the greater good. In honor of its 10th birthday, we put together the below timeline. Here’s to another 10…
21 Oct 2014
When I wrote Patterns of Enterprise Application Architecture, I coined what I called the First Law of Distributed Object Design: "don't distribute your objects". In recent months there's been a lot of interest in microservices, which has led a few people to ask whether microservices are in contravention to this law, and if so why I am in favor of…
20 Oct 2014
One of MongoDB’s arguments when evangelising MongoDB is the fact that MongoDB is a “schemaless” database: Why Schemaless? MongoDB is a JSON-style data store. The documents stored in the database can have varying sets of fields, with different types for each field. And that’s true. But it doesn’t mean that there is no schema. There … Continue reading Stop Claiming…
A few football clubs have started offering Direct Debit as a way for fans to spread their costs and make season tickets more affordable.
It’s something we always say to ourselves before we begin to tackle a giant problem, “Let’s sketch it out.” And we do. But sometimes we lose sight of the beginning because we are so preoccupied with the end. This was the case when I worked on an amazing e-commerce platform with an even more amazing group of people a couple…
19 Oct 2014
Every once in a while, I hear how intrinsics have improved enough that it's safe to use them for high performance code. That would be nice. The promise of intrinsics is that you can write optimized code by calling out to functions (intrinsics) that correspond to particular assembly instructions. Since intrinsics act like normal functions, they can be cross platform.…
18 Oct 2014
Practicing Hypothesis-Driven Development is thinking about the development of new ideas, products and services – even organizational change – as a series of experiments to determine whether an expected outcome will be achieved. The process is iterated upon until a desirable outcome is obtained or the idea is determined to be not viable.
17 Oct 2014
A while ago, we have published this fun game we like to call Spring API Bingo. It is a tribute and flattery to Spring’s immense creativeness when forming meaningful class names like FactoryAdvisorAdapterHandlerLoader ContainerPreTranslatorInfoDisposable BeanFactoryDestinationResolver LocalPersistenceManagerFactoryBean Two of the above classes actually exist. Can you spot them? If no, play Spring API Bingo! Clearly, the … Continue reading The dreaded…
16 Oct 2014
What follows is the text of my presentation, Functional options for friendly APIs that I gave at dotGo this year. It has been edited slightly for readability. I want to thank Kelsey Hightower, Bill Kennedy, Jeremy Saenz, and Brian Ketelsen, for their assistance in preparing this talk. I want to begin my talk with a […]
Maps rendered with MapTiler or available as MBTiles file can be uploaded to Amazon S3 and viewed using libraries such as Leaflet, OpenLayers, WebGL Earth, Google Maps API, MapBox.js, etc.
The Media Queries 4 spec brings insight to technological capabilities that are coming up soon (this is based on the Editor’s Draft, October 10, 2014).
15 Oct 2014
Believe it or not, there’s a new attack on SSL. Yes, I know you’re thunderstruck. Let’s get a few things out of the way quickly. First, this is not another Heartbleed. It’s bad, but it’s not going to destroy the Internet. Also, it applies only to SSLv3, which is (in theory) an obsolete protocol that … Continue reading Attack of…
14 Oct 2014
Introducing Heroku CX Patterns: Building Customer Experiences on Heroku with Salesforce Services
HerokuA quick glance at most any phone shows the importance and urgency – for businesses of all kinds – of creating mobile customer apps. Our everyday activities – finding a ride, ordering a meal or turning on a light are increasingly mobile experiences. But delivering a great omnichannel experience to customers requires more than just […] The post Introducing Heroku…
Contact Centres deal with a lot of challenges. Is it possible to create a contact centre where callers feel valued and employees enjoy going to work? And can this be done while moving the key metrics that matter to the business? Well, we took a few bold steps and tried a few unorthodox moves - but the journey was very…
12 Oct 2014
Building a scalable & reliable Android and iOS chat application with PubNub Data Streams and Storage & Playback is easy! Here's how Smacktive did it.
Building a scalable & reliable Android and iOS chat application with PubNub Data Streams and Storage & Playback is easy! Here's how Smacktive did it.
10 Oct 2014
Updated with second round script in Oct 26, 2014.
I’m at RecSys 2014, meeting a lot of people and hanging out at talks. Some of the discussions here was about the filter bubble which prompted me to formalize my own thoughts. I firmly believe that it’s the role of a system to respect the user’s intent. Any sensible system will optimize for user’s long-term happiness by providing info back…
9 Oct 2014
In this tutorial we'll create a colorful word cloud based on a blog with D3js and the PubNub Storage & Playback history API.
In this tutorial we'll create a colorful word cloud based on a blog with D3js and the PubNub Storage & Playback history API.
On 23 and 25 September Thoughtworks hosted the first edition of XConf in Europe. XConf is a one-day conference that showcases the latest thinking from Thoughtworks and friends on a broad range of technology topics. It provides a platform for passionate technologists who are looking for inspiration and a chance to network with their peers.
8 Oct 2014
In this tutorial, we'll walk you through how to build a fully customizable real-time dashboard for metrics.
In this tutorial, we'll walk you through how to build a fully customizable real-time dashboard for metrics.
We'll show you how to build real-time visualizations with D3js and PubNub, in this case streaming JSON to create a dynamic bubble chart.
We'll show you how to build real-time visualizations with D3js and PubNub, in this case streaming JSON to create a dynamic bubble chart.
7 Oct 2014
As an SRE (Service Reliability Engineer) at Heroku, one of the things I’m exposed to is how much work happens behind the scenes in order to create what we call “non-events” for you, our users. A non-event is turning something that would typically create work for an application hosted on traditional infrastructure into something that […] The post Behind the…
A live video tutorial on building a real-time chat application with AngularJS and PubNub in less than 100 lines of HTML and JavaScript.
A live video tutorial on building a real-time chat application with AngularJS and PubNub in less than 100 lines of HTML and JavaScript.
With the Salesforce hackathon fast approaching, I wanted to give a quick overview on building apps that use the force.com APIs (part of the Salesforce1 platform). The force APIs are rich and varied, so sometimes just getting started can seem a little daunting. What services are provided? The force.com APIs give your application access to […] The post Getting started…
Note: This is a silly application. Don’t take anything seriously. Benford’s law describes a phenomenon where numbers in any data series will exhibit patterns in their first digit. For instance, if you took a list of the 1,000 longest rivers of Mongolia, or the average daily calorie consumption of mammals, or the wealth distribution of German soccer players, you will…
Pair programming has been used by software developers in most progressive software companies to help churn out quality products and ensure that context is shared across the teams. For the uninitiated, traditional pair programming is a practice where 2 programmers work on developing a piece of software functionality in tandem.
6 Oct 2014
A lot of clubs and teams are using the wrong payment method to collect their membership fees. To help you decide whether your club is using the right payment option we’ve put together a list of three quick questions for you.
5 Oct 2014
I recently wrapped up a fun paper with my coauthors Ben Fish, Adam Lelkes, Lev Reyzin, and Gyorgy Turan in which we analyzed the computational complexity of a model of the popular MapReduce framework. Check out the preprint on the arXiv. Update: this paper is now published in the proceedings of DISC2015. As usual I’ll give a less formal discussion…
4 Oct 2014
Last week I wrote about Apple’s new default encryption policy for iOS 8. Since that piece was intended for general audiences I mostly avoided technical detail. But since some folks (and apparently the Washington Post!) are still wondering about the nitty-gritty details of Apple’s design, I thought it might be helpful to sum up what we know … Continue reading…
3 Oct 2014
When initialising a variable with a composite literal, Go requires that each line of the composite literal end with a comma, even the last line of your declaration. This is the result of the semicolon rule. Although possibly an unintended consequence, this means that when proposing a one line change, it really is a one line change. The […]
I have updated my unofficial ARM tarball distributions page with prebuilt Go 1.3.3 tarballs. You can find them by following the link in the main header of this page.
As part of Salesforce’s Dreamforce conference, Salesforce is hosting its second major hackathon on October 10-12 in San Francisco. The format for this year’s hackathon has been expanded to include specific categories for not just Heroku, but also some of our favorite open source projects. With over ten prizes of more than $10,000 each, this […] The post Heroku at…
2 Oct 2014
More and more people are catching up with the latest update to our platform by adopting functional programming also for their businesses. At Data Geekery, we’re using Java 8 for our jOOQ integration tests, as using the new Streams API with lambda expressions makes generating ad-hoc test data so much easier. However, we don’t feel … Continue reading Don’t Miss…
This guide provides an uncomplicated method to simulate TCP resets (RST) in a test setting. It's a step-by-step tutorial to facilitate the procedure.
This guide provides an uncomplicated method to simulate TCP resets (RST) in a test setting. It's a step-by-step tutorial to facilitate the procedure.
One of the challenges when starting a mobile app project is deciding what technology stack to use. Should the client app use iOS or Android native, mobile web, or a hybrid? Do the backend in Node, Ruby, or Java? Or skip the backend and use an Mobile Backend-as-a-Service? To help avoid needing to answer all […] The post The Heroku…