Migrate from GoInstant to PubNub using our migration tools and JavaScript SDK
2 Aug 2014
Migrate from GoInstant to PubNub using our migration tools and JavaScript SDK
1 Aug 2014
I used to play a ton of Roller Coaster Tycoon when I was a kid. I loved the game but I was never very good at making the roller coasters. They always felt too spread out, or too unnatural looking. As a ten year old I idly wondered about writing a computer program that was […]
A few days ago, I was watching Dustin Campell’s excellent talk from TechEd 2013, “Essential truths everyone should know about performance in a large managed code base”. I highly recommend it, and it made me think a bit more about Noda Time’s performance. (It doesn’t take much to make me think about Noda Time’s performance, … Continue reading Object pooling…
So, I’m experimenting with Scala because I want to write a parser, and the Scala Parsers API seems like a really good fit. After all, I can implement the parser in Scala and wrap it behind a Java interface, so apart from an additional runtime dependency, there shouldn’t be any interoperability issues. After a few … Continue reading The 10…
31 Jul 2014
This multiplayer matchmaking algorithm tutorial walks you through how to match up different players based on skill, or any other predetermined state.
This multiplayer matchmaking algorithm tutorial walks you through how to match up different players based on skill, or any other predetermined state.
Designing for mobile is different, and it will continue to change as modern mobile technology progresses at a pace that’s hard to imagine. As technology enables new ways of engagement - and culture shifts in response - keep the following principles of design in mind, to help steer you in the right direction.
30 Jul 2014
You should sign up for a VPN service! Yes you, the casual Internet browser. Here is why. Any time you connect from your laptop/phone to a wireless network (SFO Wifi, Starbucks, etc), anyone else on that network can read all of your traffic over HTTP, to sites like Wikipedia, Netflix, YouTube, WebMD and more. This […]
In May we released the first version of Heroku Connect, a service that makes it easy to build Heroku apps that share data with your Salesforce deployment. Today we released our first major update to the service, bringing new speed and scale enhancements to all Heroku Connect users. Together, these enhancements lower latency on Heroku […] The post Heroku Connect:…
Starting with jOOQ 3.5 we’ve included an awesome new feature for those of you using the Oracle database: Native support for Oracle AQ! And your client code will be so easy to write, you’ll be putting those AQs all over your database immediately. How does it work? jOOQ rationale The biggest reason why many of … Continue reading Using Oracle…
This tutorial walks you through how to send a TLS encrypted, self-destructing message in a chatroom.
This tutorial walks you through how to send a TLS encrypted, self-destructing message in a chatroom.
Many years ago, I used to think that A/B tests were foolproof and all you need to do is compare the metrics for the two groups. The group with the highest conversion rate wins, right? Then, for a long period, I ran a lot of tests. I started using confidence intervals, and learned about all the pitfalls of A/B testing.…
There are no two ways about it, retailers must innovate in order to compete and succeed in today’s competitive environment. Innovation can mean the difference between being a market superstar or being forced to close up shop. Author Peter Drucker once said, “If you want something new, you have to stop doing something old.” For retailers, this is a crucial…
Typically, distributed teams have constraints in collaborating face-to-face. I’ve been part of a distributed agile team for quite some time now. My project is distributed across two countries - India and the US. We have a small team onshore and a larger team offshore. Despite the constraints, there’s a lot that I have learnt as a project manager on the…
29 Jul 2014
This blog post walks you through sending encrypted chat messages, and overall shows you how to build a self destructing chatroom app.
This blog post walks you through sending encrypted chat messages, and overall shows you how to build a self destructing chatroom app.
As JavaScript has matured as a language, the module has become the primary unit of code organization. However, as with many facets of JS, modules grew organically from the developer ecosystem (as opposed to being designed as part of the language from the beginning), so they have their flaws – one being that you can […] The post Testing Private…
28 Jul 2014
jOOQ implements your SQL statements as AST (Abstract Syntax Tree). This means that your SQL statement is modelled in a non-text form prior to serialising it as a textual SQL statement to your JDBC driver. One advantage of this is that you can freely manipulate this AST any way you want. This can be done … Continue reading jOOQ Tip…
26 Jul 2014
I'm setting up a new website, which gave me an excuse to try out Nix, the stateless package manager, and Docker, the tool that lets you run all of your apps in light-weight containers on a host. Nix may be a great tool, and help you avoid the possibility of moving parts in your builds, […]
The last couple of months have been a bit slow in the blogging department. It’s hard to blog when there are exciting things going on. But also: I’ve been a bit blocked. I have two or three posts half-written, none of which I can quite get out the door. Instead of writing and re-writing the same posts … Continue reading…
25 Jul 2014
As some of you have noticed (and let me know), my old blog hosting provider recently moved off Community Server to WordPress. I figured that as all the links we being broken anyway, now would be a good time to move off msmvps.com anyway. The old posts are still there, but my blog’s new home … Continue reading New blog…
Flutter Wireless is an ARM-powered wireless Arduino with 1000m+ range and 256-bit AES hardware encryption that opens the doors for IoT connectivity.
Flutter Wireless is an ARM-powered wireless Arduino with 1000m+ range and 256-bit AES hardware encryption that opens the doors for IoT connectivity.
Some things are just very very very VERY very important. Such as John Cleese. The same is true for Whitespace: Yes. 1080 Reddit Karma points (so urgently needed!) in only 23 hours. That’s several orders of magnitudes better than any of our – what we wrongfully thought to be – very deep and interesting technical … Continue reading Top 10…
Over forty members of the San Francisco developer community headed to Thoughtworks’ SF office on July 8 for an unusual task -- hacking the World Cup.
24 Jul 2014
In this blog post, we'll walk you through how to build simple matchmaking for multiplayer games to connect two users
In this blog post, we'll walk you through how to build simple matchmaking for multiplayer games to connect two users
NodeCraft Hosting uses PubNub for node to node communication for online game server hosting and to power their interactive control console.
NodeCraft Hosting uses PubNub for node to node communication for online game server hosting and to power their interactive control console.
I read a great blog post in college, and sadly I can't find it now, so I'll summarize. It showed a picture of Hearst Castle, and a photo of an average middle-class home, and the text of the post went something like: One of these can travel across the country in 6 hours. One of […]
The MapTiler Desktop 0.5.4 comes with several new cool features available to all our customers.
It happens to the best of us - one minute you're happily coding away at your app, and then the next, for some reason, you now have to run your app's functional tests with Internet Explorer (IE)! Normally IE is not the preferred browser platform to support, but once in a while a client will come with valid business reasons…
23 Jul 2014
subscribe to this newsletter here Only 8 Days Left in jOOLY Time is running so fast! The month of jOOLY is almost over – have you taken advantage of our limited-time promotional discount of 20% that we’re offering to all of your purchases in July 2014? And that’s not it, you will also get a … Continue reading jOOQ Newsletter:…
How to build a key exchange system using PubNub, enabling users to send encrypted, self destructing chat messages in real time.
How to build a key exchange system using PubNub, enabling users to send encrypted, self destructing chat messages in real time.
More than 160 Australian executives attended Thoughtworks Live 2014 in Sydney and Melbourne on the theme ‘Customer engagement’. Speakers from leading organisations, including Woolworths, Vodafone and realestate.com.au, shared insights into how they build customer-centric organisations using smart analytics, wearable technology, in-store innovation labs, lean enterprise techniques, and more.
22 Jul 2014
You have photos on your computer. You would probably be really sad if you lost them. Let's discuss some strategies for ensuring that doesn't happen. What you are doing now is probably not enough. Your current strategy is to have photos and critical files stored on your most current laptop and maybe some things in […]
Part One on building an open source, self destructing messages chat widget enabling you to send and receive self destructing, encrypted messages.
Part One on building an open source, self destructing messages chat widget enabling you to send and receive self destructing, encrypted messages.
So you might’ve seen Destroy all Software’s talk about JavaScript: Here’s a similar talk (less funny more scary) about MySQL:
You kick off a long running job - maybe a data migration script that operates on a large data set, or you're copying a large file from one disk to another, or from the Internet to your local computer. Then a few minutes in, you realize the job is going to take longer than you […]
In every project, these questions come up - what kind of automated tests should we write? What is the right level of testing? How much of test coverage is “good enough”?
21 Jul 2014
A good clean application design requires discipline in keeping things DRY: Everything has to be done once. Having to do it twice is a coincidence. Having to do it three times is a pattern. — An unknown wise man Now, if you’re following the Xtreme Programming rules, you know what needs to be done, when … Continue reading Keeping things…
In the Charity sector, a website’s improved user experience aimed at the target audience can dramatically boost online fundraising, recruit support, and share the charity’s message more effectively. Combining this with embedded analytics, to provide evidence based on real users to drive any website improvements, can have a huge impact - as Mustard Tree, a local Manchester-based charity, is discovering.
We all use technology in our lives today. For some, it’s a lot more than the others. As we find new ways for technology to enhance our lives and businesses, we also accumulate multiple types of physical devices and media to access technology. Newer and updated versions of existing products enter the market every few months and the fast pace…
A view into how most IT organisations structure their teams to deal with business demands and possible inefficiencies that emerge as a result. An alternate to the traditional project team composition is a way to deliver end to end features to the business, using what is known as feature teams.
18 Jul 2014
This blog will show you how to use PubNub and Google Dart to subscribe to a real-time bitcoin feed.
This blog will show you how to use PubNub and Google Dart to subscribe to a real-time bitcoin feed.
Thoughtworks shares concerns expressed by legal scholars, civil liberties advocates and companies about the Data Retention and Investigatory Powers Bill (DRIP) being rushed through the UK Parliament. The DRIP Bill authorises blanket communications data retention which the European Court of Justice found in April to violate the Charter of Fundamental Rights. The Court stated that data retention was a "serious…
17 Jul 2014
We'll show you how to get a list of online users in an online chatroom, creating a buddy list that updates as users join and leave the chatroom.
We'll show you how to get a list of online users in an online chatroom, creating a buddy list that updates as users join and leave the chatroom.
Heroku Connect is a service offered by Heroku which performs 2-way data synchronization between Salesforce and a Heroku Postgres database. When we first built Heroku Connect, we decided to use polling to determine when data had changed on either side. Polling isn’t pretty, but its simple and reliable, and those are “top line” features for […] The post Heroku Connect:…
To embed a 3D globe in a website with an open-source project is now really easy with WegGL Earth 2
In the race to making data consumable, we’re experiencing an explosion of highly effective, engaging and creative visualizations that connect with consumers in unique and interesting ways.
16 Jul 2014
Introduction Recently I’ve been optimizing the heck out of Noda Time. Most of the time this has been a case of the normal measurement, find bottlenecks, carefully analyse them, lather, rinse, repeat. Yesterday I had a hunch about a particular cost, and decided to experiment… leading to a surprising optimization. Noda Time’s core types are … Continue reading Micro-optimization: the…
How do women leaders in the tech industry start their workday? On the best days, with a tasty breakfast, juicy fruit, strong coffee and stimulating conversation with other tech leaders. This is exactly how Thoughtworks welcomed the newly formed social group Women of Color in Tech on Friday, June 20, 2014.
15 Jul 2014
Today we’re announcing the general availability of the new PHP support on Heroku. The key features, in case you missed them when we outlined them in the beta announcement, include: New modern runtimes in HipHop VM Packaging and first class frameworks Heroku XL support for large scale enterprise apps We’re very happy to make this […] The post The new…
All variants of Driven Development (henceforth the ‘xDDs’) strive to attain focused, minimalistic coding. The premise of lean development is that we should write the minimal amount of code to satisfy our goals. A way to ensure that code is able to solve the given problem and respond to change over time is to articulate the problem in machine-readable form.…
Meaghan Lewis is an imposter, and so are you. If you’re afflicted with Imposter Syndrome, as 70% of successful people are, you might feel like a fraud because your accomplishments are inadequate. Many people with Imposter Syndrome attribute their success to luck or timing, instead of their own hard work. They report “waiting to be found out.” Ironically, imposters are…
Today, Thoughtworks joined tens of thousands of citizens and dozens of companies in filing comments with the FCC in opposition to proceeding 14-28, the Open Internet Remand. Add your voice to the growing chorus in defense of the open Internet by submitting a comment here. To Chairman Wheeler and the FCC Commissioners:
14 Jul 2014
A while back I announced a preprint of a paper on coloring graphs with certain resilience properties. I’m pleased to announce that it’s been accepted to the Mathematical Foundations of Computer Science 2014, which is being held in Budapest this year. Since we first published the preprint we’ve actually proved some additional results about resilience, and so I’ll expand some…
Imagine you want to collect detailed usage statistics to tune your Oracle database, e.g. if you want to have A-Rows and A-Time values in your execution plans (by default, Oracle only reports E-Rows and E-Time with “E” for “Estimated”. But usually, you will care more about the “A” for “Actual”). All you have to do … Continue reading Logon Triggers:…
13 Jul 2014
A few months ago I upgraded the hardware my avr11 project ran on from the atmega2560 8bit micro to the SAM3x based Arduino Due. In doing so I lost access to the excellent QuadRAM memory expansion board, and had to find another solution for accessing the micro SD card. For the moment, I’ve decided to go […]
12 Jul 2014
To learn some Nim I held a talk about it at the GPN14 (in German, Slides). Afterwards I started solving Rosetta Code tasks in Nim to get a better feel for the language and standard library. That also made me discover some rough edges in the language, but luckily the community, albeit small, is active and competent. All the small…
11 Jul 2014
In the past, we’ve been providing you with a new article every Friday about what’s new in Java 8. It has been a very exciting blog series, but we would like to focus again more on our core content, which is Java and SQL. We will still be occasionally blogging about Java 8, but no … Continue reading Java 8…
Update this post is also available in Japanese. This is a post about an experimental tool that I have been working on. gcvis is a simple way of visualising the operation of the garbage collector within a Go process. Here is a screenshot of it in operation. The rest of this article explores how gcvis […]
10 Jul 2014
How to automatically add unique users and usernames to a multiplayer game lobby chatroom
How to automatically add unique users and usernames to a multiplayer game lobby chatroom
In the past couple of years, I’ve worked as a part of the Thoughtworks TechOps delivery team. Our work largely entails maintaining and enhancing internal system portals for employee information, resource management, client management etc.
9 Jul 2014
PubNub now supports Google Cloud Messaging (GCM) for Android push notifications.
PubNub now supports Google Cloud Messaging (GCM) for Android push notifications.
Everybody is talking data in online industries, but how can organisations harness these insights and turn them into real sources of competitive advantage? One way is by blending statistics and machine learning techniques with scale.
8 Jul 2014
The MQTT protocol for embedded Internet of Things devices now supported by PubNub.
The MQTT protocol for embedded Internet of Things devices now supported by PubNub.
I have updated my unofficial ARM tarball distributions page with prebuilt Go 1.3 tarballs. You can find them by following the link in the main header of this page.
Force.com and Heroku are both part of the Salesforce1 platform. There are lots of great ways to leverage force.com from your Heroku app. This article will give an overview and pointers to get you started. Heroku Connect The easiest way to link force.com and Heroku is to use our two-way data synchronization service Heroku Connect. […] The post Using force.com…
7 Jul 2014
WebSocket support was introduced as a Labs feature last year, and we went through extensive testing and a number of technical iterations to improve performance and to provide a predictable compliance target. Thanks to great interaction with the community and early feature users, we now have a fast and robust solution available in production. Why […] The post WebSockets now…
Table-valued functions are an awesome thing. Many databases support them in one way or another and so does PostgreSQL. In PostgreSQL, (almost) everything is a table. For instance, we can write: … and believe it or not, this is a table! We can write: And the above will return: +----+ | v2 | +----+ | … Continue reading PostgreSQL’s Table-Valued…
Greedy algorithms are among the simplest and most intuitive algorithms known to humans. Their name essentially gives their description: do the thing that looks best right now, and repeat until nothing looks good anymore or you’re forced to stop. Some of the best situations in computer science are also when greedy algorithms are optimal or near-optimal. There is a beautiful…
Recently, SoundCloud launched the new iOS application which was a complete rewrite of the existing iOS application. The Mobile engineering…
For years it’s been impossible to read a magazine or attend a seminar without having it drummed into our heads that customers are at the center of a successful business. That’s become an obvious truth. What’s not as obvious is that over the last dozen years we have actually progressed through three distinct eras of customer engagement and that the…
Do you really listen to all the people you lead? Not only listen to what they say, but effectively process the message, put in some thought and have an opinion about it. “My boss doesn’t listen to what I say”, - this gripe is prevalent in every industry, and I’m sure you’ve been through this yourself or know someone who…
6 Jul 2014
I have been running DDraceNetwork for 1 year, which started out as a little server of a Teeworlds modification called DDRace. It has turned into the biggest project within Teeworlds, offering servers in 6 countries with thousands of players and dozens of mappers. We also offer a custom server and client (Windows, Linux, OS X, Android). Now it’s time to…
5 Jul 2014
I hear the following phrase once a month, sometimes more frequently: "I couldn't do what you do." This is a nice thing to hear from colleagues and clients, but it is also nonsense. Not only is visual design a skill set that anyone with the inclination can learn, it's something that everyone on a digital product team already does.
3 Jul 2014
I wanted to let folks know that I’m about to take a few months of leave. When I joined Google, my wife and I agreed that I would work for 4-5 years, and then she’d get to see more of me. I talked about this as recently as last month and as early as 2006. […]
Here at SoundCloud, in order to provide counts and a time series of counts in real time, we created something called Stitch. Stitch was…
Transaction-based loyalty as we know it today needs to evolve into an omni-channel holistic experience.
In Part 1 we discussed some of the reasons behind moving to a service oriented content management system, and went into some detail on how to commit an item using the Github API. Thus far I have managed to skate over the details of how we mapped the operations the content editors wanted to perform (save, publish) to the functionality…
A few weeks ago, our team started working at the “pace of innovation”, or so I’ve called it. We hit a certain cadence that allowed us to innovate -- to create and deliver new ideas into production. How’d we do it? We threw out routine process and structure and started embodying certain patterns, the following of which I believe were…
2 Jul 2014
How to develop a multiplayer game lobby with chat functionality using PubNub
How to develop a multiplayer game lobby with chat functionality using PubNub
Subscribe for this newsletter here jOOLY 2014 20% Discount Offering Have you been evaluating jOOQ for a while now, still hesitating to purchase licenses? Or are you an existing customer and looking into licensing more workstations for your team? This is your chance! Get 20% off all your jOOQ purchases in the month of jOOLY … Continue reading jOOQ Newsletter:…
Across all our offices, we engage and support initiatives that empower women and remove gender stereotypes, while encouraging more women to pursue a career in technology. One such program is the Project Program My Future, in which we are partners with IFRN.
1 Jul 2014
How to build a server health monitoring tool with real-time reporting functionality using PubNub
How to build a server health monitoring tool with real-time reporting functionality using PubNub
Cater better to yours and your tenants' needs with Direct Debit.
30 Jun 2014
Gyms and fitness businesses of all sizes are now using Direct Debit to collect membership fees.