A look what what our summer interns did this summer and their IoT demos including MQTT, IoT, iBeacon, Arduino, Raspberry Pi, Data Streams, and more.
29 Aug 2014
A look what what our summer interns did this summer and their IoT demos including MQTT, IoT, iBeacon, Arduino, Raspberry Pi, Data Streams, and more.
For many PL/SQL developers, this might be common sense, but for one of our customers, this was an unknown PL/SQL feature: Backtraces. When your application raises an error somewhere deep down in the call stack, you don’t get immediate information about the exact source of the error. For large PL/SQL applications, this can be a … Continue reading PL/SQL backtraces…
On the back of my recent post, Delivery 2.0: Blurring the Lines Between Retail and Delivery, the next industry about to have its moment is quite clearly Retail Banking. Why?
28 Aug 2014
This tutorial shows you how to build a DIY snapchat app, enabling you to capture and send compressed images with JavaScript (as JSON strings).
This tutorial shows you how to build a DIY snapchat app, enabling you to capture and send compressed images with JavaScript (as JSON strings).
Read on for 3 mobile push notification methods w/tutorials: Google Cloud Messaging, Apple Push Notification Services, & PubNub Data Streams.
Read on for 3 mobile push notification methods w/tutorials: Google Cloud Messaging, Apple Push Notification Services, & PubNub Data Streams.
Since the time Mingle was first released as a SaaS product, it has gone through a lot of changes. Most of those changes have been towards enabling Mingle to work in distributed environments on the cloud. In our journey, we learnt a lot about the cloud and how to build for it instead of fighting it. I will try to…
27 Aug 2014
This blog post walks you through how to spawn a private chat request with an alert popup to connect users to a private chat.
This blog post walks you through how to spawn a private chat request with an alert popup to connect users to a private chat.
26 Aug 2014
Parse API combined with PubNub Data Streams obtain developer toolkit powerful enough to scale your successful mobile app with billions of users.
Parse API combined with PubNub Data Streams obtain developer toolkit powerful enough to scale your successful mobile app with billions of users.
This blog post is an overview on globally redundant, scalable, multi data center Redis replication using NodeJS and PubNub.
This blog post is an overview on globally redundant, scalable, multi data center Redis replication using NodeJS and PubNub.
Introduction jOOQ is a great framework when you want to work with SQL in Java without having too much ORM in your way. At the same time, it can be integrated into many environments as it is offering you support for many database-specific features. One such database-specific feature is partitioning in PostgreSQL. Partitioning in PostgreSQL … Continue reading Integrating jOOQ…
Greedy algorithms are by far one of the easiest and most well-understood algorithmic techniques. There is a wealth of variations, but at its core the greedy algorithm optimizes something using the natural rule, “pick what looks best” at any step. So a greedy routing algorithm would say to a routing problem: “You want to visit all these locations with minimum…
Recently I fell in love with Pretender, the mock server library in Javascript, so I decided to record a screencast showing how to use it in an Ember.js integration test: The source code for the login application is on github. The finished version is in the pretender branch.
The Internet, technology devices, and other platforms are all an effort to automate processes in the name of making life easier. For example going into a library to borrow a book is now a much less cumbersome process or paying a utility bill can be done with just the click of a few buttons. The Internet today has simplified work…
25 Aug 2014
A look into the architecture of global networks and the birth of real-time networks and how real-time connectivity came to be.
A look into the architecture of global networks and the birth of real-time networks and how real-time connectivity came to be.
I’m presenting a paper later this week at the Matheamtical Foundations of Computer Science 2014 in Budapest, Hungary. This conference is an interesting mix of logic and algorithms that aims to bring together researchers from these areas to discuss their work. And right away the first session on the first day focused on an area I know is important but…
Pizza has long been the fuel of meetups, parties, and lazy fridays. But combine it with a complex technology project that integrates across 13 systems and core apps and you have yourself a supreme customer experience. A Thoughtworks team has been working closely with Domino’s Pizza, Australia's market leader, over a period of nine months to strategise, develop and implement…
One of the most asked questions I get from clients is “what is value” or “how do we measure value.” Interestingly, I ran my poll on the Scaling Agile To do List and it appeared as a favorite there too.
Rails Girls has been empowering women since 2011 in many cities around the world. Each event has it particularity and experiences to share, experiences valued, to bring more people, increase the awareness of gender justice and change the face of IT with inclusivity and diversity. This time, it was the opportunity for Montevideo!
In July, the Electronic Frontier Foundation (EFF) and a team of Thoughtworkers joined forces to build an encrypted router software as part of efforts to defend the Internet from surveillance overreach.
23 Aug 2014
"Diving into the nitty-gritty of assembly: A programmer's adventure!"
While there is currently no official Black Girls Code (BGC) Chicago Chapter, Thoughtworks has partnered with BGC in the past to host events. This year, Thoughtworks Chicago partnered with EnglewoodCodes! and Black Girls Code to sponsor and host a Mobile App Workshop on Saturday, July 12, 2014. Thanks to the support of more than 50 Thoughtworkers and community volunteers, 30…
22 Aug 2014
A comment on a Stack Overflow post recently got me delving into constants a bit more thoroughly than I have done before. Const fields I’ve been aware for a while that although you can specify decimal field as a const in C#, it’s not really const as far as the CLR is concerned. Let’s consider … Continue reading When is…
On Wednesday, Uber launched an API to let developers build new products and services that leverage the Uber ridesharing platform. Uber built a simple Python/Flask app that developers can use when exploring how the API works. This is the sort of experimentation and innovation that we at Heroku want to enable, so we sent a […] The post Uber Launches…
Success for retailers in the next few years is going to be defined by “Retail Agility”, the ability to take advantage of the emergence of a plethora of new markets, channels, products and customer segments which shows no signs of abating.
The next horizon is extending agility from basic software delivery to continuous delivery and into the business itself, utilizing the advances in delivering software features early and often into a transformation of businesses to deliver complete solutions early and often.
21 Aug 2014
This blog post shows that DIY Arduino hobbyist and makers are using Arduino because of its ease of use and implementation
This blog post shows that DIY Arduino hobbyist and makers are using Arduino because of its ease of use and implementation
20 Aug 2014
In this blog post, we'll show you how to enable users to create private chat rooms with other users using private channels.
In this blog post, we'll show you how to enable users to create private chat rooms with other users using private channels.
We're documenting our AngularJS SDK for PubNub with Docco. AngularJS Docco makes is simple, clean, and informational for documentation.
We're documenting our AngularJS SDK for PubNub with Docco. AngularJS Docco makes is simple, clean, and informational for documentation.
Ever since I wrote reptyr, I’ve been frustrated by a number of issues in reptyr that I fundamentally didn’t know how to solve within the reptyr model. Most annoyingly, reptyr fundamentally only worked on single processes, and could not attach processes with children, making it useless in a large class of real-world situations. TTY stealing Recently, I merged an experimental…
GoCardless has helped businesses in the hospitality sector like Bookatable and Zenchef. Here’s how.
19 Aug 2014
At Heroku, we want to give our users access to the latest and greatest software stacks to base their apps on. That’s why we continuously update buildpacks to support new language and framework versions and let users experiment further using third-party buildpacks. Sitting underneath slugs and buildpacks are stacks. Stacks are the operating system and […] The post Cedar-14 Public…
This iBeacon walkthrough shows you how to connect an iBeacon emitter and observer for two-way communication with Swift Programming Language.
This iBeacon walkthrough shows you how to connect an iBeacon emitter and observer for two-way communication with Swift Programming Language.
Inspired by Sander Dieleman’s internship at Spotify, I’ve been playing around with deep learning using Theano. Theano is this Python package that lets you define symbolic expressions (cool), does automatic differentiation (really cool), and compiles it down into bytecode to run on a CPU/GPU (super cool). It’s built by Yoshua Bengio’s deep learning team up in Montreal. This isn’t going…
18 Aug 2014
We've released our 5 step quick start tutorial on using our web messaging API built with PubNub to build a web messaging application.
We've released our 5 step quick start tutorial on using our web messaging API built with PubNub to build a web messaging application.
Oracle SYNONYMs are a great feature. You can implement all sorts of backwards-compatibility tweaks simply by creating SYNONYMs in your database. Consider the following schema: Now you can query your same old table through three different names, it’ll all result in the same output: The trouble is, when you see my_table_bak in code (or some … Continue reading All You…
For some reason, Oracle blocked the installers to run only on a fixed OSX version range with a nice and explanatory error message. This range doesn’t include Yosemite, which makes sense, since nobody running Yosemite will ever want to write some Java. Anyway, here is how to fix it.
As humans, we navigate our lives largely by the recognition of patterns. These patterns include the sound of a mother’s voice, the appearance of a dangerous animal or poisonous food, the familiarity of kin, and the attraction to potential mates. Accurate pattern recognition is key to an animal’s survival and progress, and has allowed humans to become the socially complex…
We are often taught to see prejudice only in individual acts of meanness, not in invisible systems conferring dominance on the privileged groups. So one of the great privileges many of us have is to be oblivious to our own condition of privilege.
Are you solving problems that don’t exist? It’s number two in our list of nine major risks to innovation. Being successful at innovation requires an understanding of the identified risks and having the ability to deal with them. Let’s take a look at Risk #2: Solving non-existent problems.
17 Aug 2014
This is a post about Go’s built in make and new functions. As Rob Pike noted at Gophercon this year, Go has many ways of initialising variables. Among them is the ability to take the address of a struct literal which leads to serveral ways to do the same thing. s := &SomeStruct{} v := SomeStruct{} […]
16 Aug 2014
I’ve found that a lot of people don’t know how powerful the Chrome Developer Tools are, especially when paired with the Ember Inspector. I recorded this short screencast to show a handful of tricks you can use when debugging Ember.js applications: The source code to the Bug Tracker project is on github.
15 Aug 2014
Subscribe to this newsletter here jOOQ 3.5 Outlook We’re working hard on the next release. Already 90 issues for jOOQ 3.5 are closed and counting! Today, we’re going to look at the highlights of what will be implemented in the next, exciting minor release, due for Q4 2014: Support for new databases Our customers have … Continue reading jOOQ Newsletter:…
14 Aug 2014
Have you ever wondered about the use-case behind SQL’s ANY (also: SOME) and ALL keywords? You have probably not yet encountered these keywords in the wild. Yet they can be extremely useful. But first, let’s see how they’re defined in the SQL standard. The easy part: 8.7 <quantified comparison predicate> Function Specify a quantified comparison. … Continue reading A Wonderful…
Retrospectives are a valuable tool for software engineering teams. Heroku consistently uses retrospectives to review operational incidents, root cause problems, and generate remediation tasks to improve our systems. Increasingly we use retrospectives for another purpose: to improve teamwork and interactions on projects. Here we intentionally avoid technical discussions and focus on the emotional and human […] The post Retrospectives appeared…
Google wage fixing, 11-CV-02509-LHK, ORDER DENYING PLAINTIFFS' MOTION FOR PRELIMINARY APPROVAL OF SETTLEMENTS WITH ADOBE, APPLE, GOOGLE, AND INTEL
Dan LuuUNITED STATES DISTRICT COURT NORTHERN DISTRICT OF CALIFORNIA SAN JOSE DIVISION IN RE: HIGH-TECH EMPLOYEE ANTITRUST LITIGATION THIS DOCUMENT RELATES TO: ALL ACTIONS Case No.: 11-CV-02509-LHK ORDER DENYING PLAINTIFFS' MOTION FOR PRELIMINARY APPROVAL OF SETTLEMENTS WITH ADOBE, APPLE, GOOGLE, AND INTEL Before the Court is a Motion for Preliminary Approval of Class Action Settlement with Defendants Adobe Systems Inc. ("Adobe"),…
This is an archived USENET post from John Cooley on a competitive comparison between VHDL and Verilog that was done in 1997. I knew I hit a nerve. Usually when I publish a candid review of a particular conference or EDA product I typically see around 85 replies in my e-mail "in" box. Buried in my review of the recent…
“The key abstraction of information in REST is a resource. Any information that can be named can be a resource: a document or image, a temporal service (e.g. "today's weather in Los Angeles"), a collection of other resources, a non-virtual object (e.g. a person), and so on. In other words, any concept that might be the target of an author's…
13 Aug 2014
Last Thursday, Yahoo announced their plans to support end-to-end encryption using a fork of Google’s end-to-end email extension. This is a Big Deal. With providers like Google and Yahoo onboard, email encryption is bound to get a big kick in the ass. This is something email badly needs. So great work by Google and Yahoo! … Continue reading What’s the…
In this tutorial, we'll talk about how to create new channels for create chatrooms on demand for user-to-user private chat and spawning new game servers.
In this tutorial, we'll talk about how to create new channels for create chatrooms on demand for user-to-user private chat and spawning new game servers.
Most software development teams break work down into four distinct phases: Analyze → Develop → Test → Release. As projects grow in scale, traditional development teams grow each of these phases without changing the sequence or frequency. Each phase happens once and only after the previous one is completed. This model has worked for generations for building physical goods and…
12 Aug 2014
Today Heroku is rolling out one of the most significant upgrades ever to our Postgres Database-as-a-Service. This new release is focused on a set of services that run on top of your Heroku Postgres database, making it easier to understand and operate, especially at scale. In addition, we are rolling out new production database plans […] The post The New…
Introducing pg:diagnose, a new tool for finding and fixing performance issues with your Heroku Postgres database. The heroku pg:diagnose CLI command unlocks the wealth of built-in information that PostgreSQL stores about its own health and performance, presenting it in simple report that makes identifying and correcting common database problems effortless. At Heroku, we not only […] The post Introducing pg:diagnose:…
Check out how PubNub-powered DropTask enables teams to collaborative and manage tasks in real time with their real-time task management application.
Check out how PubNub-powered DropTask enables teams to collaborative and manage tasks in real time with their real-time task management application.
One of the best features in SQL are window functions. Dimitri Fontaine put it bluntly: There was SQL before window functions and SQL after window functions If you’re lucky enough to be using any of these databases, then you can use window functions yourself: CUBRID DB2 Firebird H2 Informix MariaDB MySQL Oracle PostgreSQL SQLite SQL … Continue reading The Difference…
Articles are written, communities have been started, forums have been organized, and organizations have taken steps to bring women into the technology space. But there is always more to do. When a woman is asked what was your motivation to take on a career in technology, the answers you hear sound like this. “I like to solve problems using machines.”…
Agile Testers are often known as Quality Analysts (QA), Software Engineers in Test, Test Engineers and QA Leads, among other variances. I've been working as an Agile QA for a while and I would like to share my point of view about how QAs work in an agile team. In this article, I will use the term QA to represent…
11 Aug 2014
There are those people that have a strong, dogmatic belief in what they call “Free” or “Standard” or “Open” software. One of those individuals is Jimmie (let’s call him Jimmie in this article) who has responded to an article about Java persistence by Marco Behler on TheServerSide. Let me cite Jimmie’s response here: JPA is … Continue reading The “Free”,…
I talked about Cat-DNS at Cascadia.js, and it wasn’t terrible! There is a video. Of me talking! On the internet! What a future we live in. =^..^= The internet needs more cats. DNS servers are the authority on all things internet. Therefore, the best DNS server is the one that resolves everything to cats. This talk is about that. We’re…
Retail has already been transfigured as an industry. Since the early 2000s with the growth in online and e-commerce, to the current state-of-play with both online and offline now merging towards a seamless omni-channel experience, it’s a new age of consumerism.
Technovation Challenge encourages girls who are in primary, secondary and higher education to create, develop and launch a mobile application that can solve problems related to their communities. The girls have 12 weeks to develop a prototype of the application, going through the whole process, from the identification of the problem, the creation of ideas to solve it, the elaboration…
Thoughtworks Joins Dozens of Groups, Companies Praising President Obama's Net Neutrality Statement Dozens of advocacy organizations and companies, released a letter on August 8, 2014, to President Barack Obama, in response to his recent vocal support for fair and meaningful net neutrality rules. Find the full text of the letter below. Subject: Thank you for protecting the Internet, Mr. President…
8 Aug 2014
I started writing a post like this a long time ago, but somehow never finished it. Countless posts on Stack Overflow are vulnerable to SQL injection attacks. Along with several other users, I always raise this when it shows up – this is something that really just shouldn’t happen these days. It’s a well-understood issue,and … Continue reading The BobbyTables…
This blog post features two ways (a data visualizer and a multiplayer game) that harness the power of WebGL to create stunning and interactive apps.
This blog post features two ways (a data visualizer and a multiplayer game) that harness the power of WebGL to create stunning and interactive apps.
Recently, I’ve encountered this sort of query all over the place at a customer site: Unfortunately, COUNT(*) is often the first solution that comes to mind when we want to check our relations for some predicate. But COUNT() is expensive, especially if all we’re doing is checking our relations for existence. Does the word ring … Continue reading SQL Tip…
7 Aug 2014
At Heroku, we want to make the process of deploying, running and updating code simple and easy. To that end, we’re launching the Heroku Button: a simple HTML or Markdown snippet that can be added to READMEs, blog posts and other places where code lives. Clicking a Heroku Button will take you through a guided […] The post Introducing Heroku…
This multiplayer matchmaking algorithm tutorial walks you through how to allow users in a multiplayer game to challenge other players in the game.
This multiplayer matchmaking algorithm tutorial walks you through how to allow users in a multiplayer game to challenge other players in the game.
It’s not enough to have a “good” idea; you have to have one that “sticks.” “By ‘stick’ we mean that your ideas are understood and remembered, and have a lasting impact—they change your audience’s opinions or behavior.”1 (Heath, 2007). In the mid-1990s, I managed an enterprise data model project for an apparel company. This initiative had a checkered history of…
6 Aug 2014
This blog post is a tutorial on how to AngularJS encryption and three way binding for data streaming
This blog post is a tutorial on how to AngularJS encryption and three way binding for data streaming
Markus Winand from Use The Index, Luke! did it again. He started an exciting battle against one the biggest flaws in the SQL language: We’ve blogged about this before. OFFSET pagination is terribly slow, once you reach higher page numbers. Besides, chances are, that your database doesn’t even implement it correctly, yet (and your emulation … Continue reading Join the…
Custom software is a competitive advantage. At Thoughtworks, we build bespoke software solutions that bolster our clients toughest challenges - helping them get ahead of the competition, and stay there. Bespoke software solutions offer flexibility and use a variety of methodologies and approaches. Human Centered Design is one of these approaches, and arguably, one of the most important.
5 Aug 2014
At Heroku, we’re focused on delivering thoughtfully designed systems to improve developer productivity and experience. We firmly believe that improving the development and operations experience helps developers to build and run better apps. This improvement allows developers to focus more on functionality, and businesses to focus more on the value of their applications. Today we […] The post New Heroku…
Every once in a while, we run into these rare SQL issues where we’d like to do something that seems out of the ordinary. One of these things is pivoting rows to columns. A recent question on Stack Overflow by Valiante asked for precisely this. Going from this table: +------+------------+----------------+-------------------+ | dnId | propNameId | … Continue reading Are You…
When you’re driven by the enthusiasm of having a good test coverage for your application, you automate the entire workflow**. As a result of this, the test-suite becomes huge and the safety net of these tests become a bottleneck. What starts off as a method to give faster feedback, now becomes a cause for delaying code commits. This is a…
4 Aug 2014
A general overview of how GoInstant features translate to the PubNub Data Stream Network, including GoInstant to PubNub code migration.
A general overview of how GoInstant features translate to the PubNub Data Stream Network, including GoInstant to PubNub code migration.
This blog post walks you through building a chatroom UI for self-destructing chat. However, the UI can be applied to any chatroom as well.
This blog post walks you through building a chatroom UI for self-destructing chat. However, the UI can be applied to any chatroom as well.
Earlier this year, the new version of the Java Programming Language was released. Finally, it enters the field of the “cool peeps” with some features it should have had since years ago, like Lambdas.
Culture is important. It’s how we carry out our practice of software development. One of the great things we do to transmit our culture is through maxims we call laws. For example, Parkinson’s Law states, “Work expands so as to fill the time available for its completion.” And here’s another one. Brookes’ Law talks about scheduling – “Adding manpower to…
3 Aug 2014
This tutorial walks you through how to migrate your chat application from GoInstant to PubNub.
This tutorial walks you through how to migrate your chat application from GoInstant to PubNub.
This post is about Tinyterm, a silly hack that I presented as a lightning talk at last month’s Sydney Go User group 1. You can find the original slides online at talks.golang.org. This talk is about a experiment to see if I could drive I2C devices from Go through my laptop’s VGA port. It was […]