Over the last few years we have seen the rise of a new type of databases, known as NoSQL databases, that are challenging the dominance of relational databases. Relational databases have dominated the software industry for a long time providing mechanisms to store data persistently, concurrency control, transactions, mostly standard interfaces and mechanisms to integrate application data, reporting. The dominance…
2 Oct 2014
1 Oct 2014
An overview on WebSockets and HTTP Long Polling for data streaming/push. Also includes tutorials for Pub/Sub with JavaScript, Ruby and Python.
An overview on WebSockets and HTTP Long Polling for data streaming/push. Also includes tutorials for Pub/Sub with JavaScript, Ruby and Python.
Managing a club or society is a lot of work – that’s before you even get to deciding on teams, formations or tactics. Here are our four top tips on cutting down some of this unwanted admin so you can get back to the activities you really love.
Three Ways Retailers Can Strike A Balance Between Marketing And IT
Introducing Madyondza, the Johannesburg meetup with the goal of localising world information and digitising African knowledge. The name The name “madyondza” is a Xitsonga word for “first child”. Split into “ma” and “dyondza” it would mean: “you learn”. These two meanings are consistent with a project of this kind. This is why:
30 Sept 2014
Note: I’ve now identified two bugs in TimeZoneInfo… details later in the post. Background Early on Friday morning (UTC), IANA released version 2014h of the time zone database. As a dutiful Noda Time maintainer, I fetched it, converted it into our native format, and ran the unit tests prior to pushing the new version. Unfortunately, … Continue reading The mysteries…
This Ember.js tutorial shows you how to build a real-time Ember.js application with PubNub in 99 lines of code (aka 60 seconds).
This Ember.js tutorial shows you how to build a real-time Ember.js application with PubNub in 99 lines of code (aka 60 seconds).
We’ve been in business for more than one year now with our dual-licensing strategy for jOOQ. While this strategy has worked very well for us, it has also been a bit of a challenge for some of our customers. Today, we’re going to show you what caveats of dual-licensing we’ve run into. Our dual-licensing strategy … Continue reading The Caveats…
I met Alaa Abd El Fattah in May 2013 in Cairo. This was about two years after the initial revolution occurred that removed Hosni Mubarak from power, and nearly a year into the presidency of Mohamed Morsi from the Muslim Brotherhood. At the time Alaa was out on bail, facing charges for his involvement in demonstrations several months earlier (he…
29 Sept 2014
We brought 24 demo Tessels for the MIT students and faculty to hack on. Tessel is an IoT microcontroller that runs Lua, transpiled from JavaScript.
We brought 24 demo Tessels for the MIT students and faculty to hack on. Tessel is an IoT microcontroller that runs Lua, transpiled from JavaScript.
PubNub had applied patches to address the Bash Bug Shellshock vulnerability across our entire data stream infrastructure.
PubNub had applied patches to address the Bash Bug Shellshock vulnerability across our entire data stream infrastructure.
The Mona Lisa Leonardo da Vinci’s Mona Lisa is one of the most famous paintings of all time. And there has always been a discussion around her enigmatic smile. He used a trademark Renaissance technique called sfumato, which involves many thin layers of glaze mixed with subtle pigments. The striking result is that when you look directly at Mona Lisa’s…
CVE-2014-6271 and CVE-2014-7169, also known as “Shellshock”, are high impact vulnerabilities affecting the Born Again Shell (BASH). The vulnerability allows an attacker to trick Bash into running arbitrary commands which could result in unauthorized disclosure of information, unauthorized modification and disruption of service. Because this is such a big threat, and because at Clever we take security […] The post…
28 Sept 2014
Build tags are part of the conditional compilation system provided by the go tool. This is a quick post to discuss using build tags to selectively enable debug printing in a package. This afternoon I merged a contribution to pkg/sftp which improved the packet encoding performance but introduced a bug where some packet types were incorrectly encoded. % […]
26 Sept 2014
Controversial database topics are a guaranteed success on reddit, because everyone has an opinion on those topics. More importantly, many people have a dogmatic opinion, which always triggers more debate than pragmatism. So, recently, I posted a link to an older article titled The Database As Queue Anti-Pattern by Mike Hadlow, and it got decent … Continue reading Using Your…
25 Sept 2014
Two-factor authentication is a powerful and simple way to greatly enhance security for your Heroku account. It prevents an attacker from accessing your account using a stolen password. After a 4 month beta period, we are now happy to make two-factor authentication generally available. Turning on two-factor authentication You can enable and disable two-factor authentication […] The post Two-factor Authentication…
Announcing PubNub Real-time Analytics dashboard with new metrics for PubNub data streams.
Announcing PubNub Real-time Analytics dashboard with new metrics for PubNub data streams.
24 Sept 2014
A tutorial on global, multidata center MongoDB replication, part of our growing collection of persistence adapters for PubNub using Node.JS
A tutorial on global, multidata center MongoDB replication, part of our growing collection of persistence adapters for PubNub using Node.JS
Are Microservices gaining momentum? Looking at the interest in Microservices in Australia at the moment, it is evident that this approach to Service Oriented Architecture is making waves.
Our email infrastructure is flawed. We need to reconsider our approach to email to make it safer - and easier. Most people think of email like sending a letter in the post, a person-to-person communication in a sealed envelope. However, email is more like sending a postcard. Multiple actors have access to the contents and we need to be careful…
23 Sept 2014
Blogging has been slow, but only because some of it has been redirected. There’s good stuff coming, including a neat post on the subject of RSA encryption and how it relates to the German army in World War II. In the meantime, please go read this (somewhat non-technical) piece I wrote for Slate on the … Continue reading Slate piece…
One of our core beliefs at Heroku is that developers do their best work when the development process is as simple, elegant, and conducive to focus and flow as possible. We are grateful for how well many of our contributions to that cause have been received, and today we are making generally available a new […] The post Introducing Heroku…
Reactive programming is the new buzzword, which essentially just means asynchronous programming or messaging. Fact is that functional syntax greatly helps with structuring asynchronous execution chains, and today, we’ll see how we can do this in Java 8 using jOOQ and the new CompletableFuture API. In fact, things are quite simple: What did really happen … Continue reading Asynchronous SQL…
22 Sept 2014
Power IoT in 4 lines of JavaScript with Tessel and PubNub. Tessel is a small, powerful microcontroller that runs entirely on JavaScript.
Power IoT in 4 lines of JavaScript with Tessel and PubNub. Tessel is a small, powerful microcontroller that runs entirely on JavaScript.
What do people do when they run out of topics? They recycle previous topics and create top 10 lists. Here is a list of the top 10 most popular articles from the jOOQ blog: Top 10 Very Very VERY Important Topics to Discuss A fun, not so serious parody on what is being discussed on reddit’s … Continue reading Top…
19 Sept 2014
Securing your home automation solution is paramount. We'll go through a couple home automation security considerations and what the future holds.
Securing your home automation solution is paramount. We'll go through a couple home automation security considerations and what the future holds.
So far our discussion of learning theory has been seeing the definition of PAC-learning, tinkering with it, and seeing simple examples of learnable concept classes. We’ve said that our real interest is in proving big theorems about what big classes of problems can and can’t be learned. One major tool for doing this with PAC is the concept of VC-dimension,…
Following our previous article about how to use jOOQ with Java 8 and Nashorn, one of our users discovered a flaw in using the jOOQ API as discussed here on the user group. In essence, the flaw can be summarised like so: Java code JavaScript code After some investigation and the kind help of Attila … Continue reading How Nashorn…
18 Sept 2014
How to run a secure API server in a web browser. In this case, we'll write the server in JavaScript on the front-end.
How to run a secure API server in a web browser. In this case, we'll write the server in JavaScript on the front-end.
17 Sept 2014
It’s this time of the year and we’re repeating the silly metrics keyword count across all of jOOQ‘s code base. We have a couple of exciting news! public is still one of the favourite keywords (yeah, we’re an API), but return is closing in, as well as final (yeah, we love final). A bit more … Continue reading This Just…
The Heroku Routing team does a lot of work with Erlang, both in terms of development and maintenance, to make sure the platform scales smoothly as it continues to grow. Over time we’ve learned some hard-earned lessons about making systems that can scale with some amounts of reliability (or rather, we’ve definitely learned what doesn’t […] The post Stuff Goes…
16 Sept 2014
The design and technology world is full of systems thinkers — people who see patterns and interrelationships, who look beyond symptoms to identify root causes, who strive for holistic, long-term solutions over quick fixes.
15 Sept 2014
Pun intended… Let’s discuss Java final. Recently, our popular blog post “10 Subtle Best Practices when Coding Java” had a significant revival and a new set of comments as it was summarised and linked from JavaWorld. In particular, the JavaWorld editors challenged our opinion about the Java keyword “final“: More controversially, Eder takes on the … Continue reading This is…
Celery is by far the most popular library in Python for distributing asynchronous work using a task queue. If you’re building a Python web app, chances are you already use it to send email, perform API integrations, etc. Many people choose Redis as their message broker of choice because it’s dead simple to set up: […] The post How to…
When we rebuilt our iOS app, the player was the core focus. The interactive waveform was at the center of the design. It was important both…
14 Sept 2014
During my day job I’ve been working on re-factoring some the internals of Juju to reverse the trend of a growing number of dependencies in our core packages. In this post I’ll show how I used go list to help me in this task. The basics Let’s start with the basics of go list. The default invocation of go […]
I haven’t really written about what it was like to run the Boston Marathon, but I wanted to share one story with you about a woman named Darby Stott. I’m a slow runner (our running group in San Jose likes to call ourselves “a social group with a running problem”). So to make it to […]
13 Sept 2014
Here is a short recipe I use for installing multiple versions of Go from source. In this example I’m going to install the release (currently Go 1.3.1) and trunk versions of Go. Step 1. Checkout Checkout two copies of the Go source code into independent paths. % hg clone https://code.google.com/p/go -r release $HOME/go.release % hg […]
In September 2014, I gave this talk at Baruco in Barcelona, Spain. The talk focuses on: how session authentication works in Ruby on Rails, the crypto used to protect the data, the security implications and how to share the session with applications written in other languages than Ruby (with an example in Go). To illustrate this pretty dry topic, I…
When a bright new technology appears, it sometimes fascinates us and makes us think that everything is possible.
12 Sept 2014
The key to any startup is focus — focusing in multiple directions is really no focus at all. Following this premise we understand the decision by CloudBees to double down on their continuous integration offering of Jenkins, and to discontinue their platform as a service product. Continuous integration is already playing an important role in […] The post Welcome to…
Abstraction layers in software are what architecture astronauts tell you to do. Instead, however, half of all applications out there would be so easy, fun, and most importantly: productive to implement if you just got rid of all those layers. Frankly, what do you really need? You need these two: Some data access Some UI … Continue reading Why You…
"JavaScript Testing: Idiot Proof Your Code" aka Achieving Maintainability, including best practices for linting, reducing complexity and unit testing.
"JavaScript Testing: Idiot Proof Your Code" aka Achieving Maintainability, including best practices for linting, reducing complexity and unit testing.
11 Sept 2014
I know a certain developer whose level of anxiety rises to disproportionate levels when his test coverage report returns a less-than-100% coverage. Whenever this happens, he will fiddle with his tests until he achieves the glorious 100% statistic - after which he will have earned not only bragging rights (shudder!), but also the approval of upper management. But let’s take…
10 Sept 2014
This blog has 4 real-time elements that every multiplayer game dev needs including player position, lockstep, in-game chat, matchmaking & real-time stats
This blog has 4 real-time elements that every multiplayer game dev needs including player position, lockstep, in-game chat, matchmaking & real-time stats
Java 8 was – as always – a release of compromises and backwards-compatibility. A release where the JSR-335 expert group might not have agreed upon scope or feasibility of certain features with some of the audience. See some concrete explanations by Brian Goetz about why … … “final” is not allowed in Java 8 default … Continue reading When the…
5 Tips for New iOS Developers Swift is the future of development on Apple’s platforms. Any developer interested in mobile devices would be well-served by learning this exciting new language. For developers new to the iOS ecosystem, this might seem like a godsend. The common sentiment heard throughout the blogosphere is: death to Objective-C!
9 Sept 2014
With our private chat API, in this tutorial, we'll show you how to grant and revoke permissions and access to chat users for secure private chat.
With our private chat API, in this tutorial, we'll show you how to grant and revoke permissions and access to chat users for secure private chat.
In many societies, there is an expectation placed on a woman that once she is married and has children - she must reconsider her career path options. It is considered the natural order of things for her to stop working altogether, or at a minimum work in a profession that is more ‘mother-appropriate’. At least, this is certainly the case…
Building software is something that your business needs to do well. You see more revenue moving through digital channels and you’re starting to realise that this trend will continue. Your company’s ability to remain competitive hinges on your use of technology. This same technology gives new competitors the ability to springboard their businesses and scale quickly. Your business needs to…
The role of epics in agile analysis
8 Sept 2014
This recent question on Stack Overflow made me think. Why does jOOQ suggest to put generated code under “/target” and not under “/src”? … and I’m about to give you the final answer to “Where to Put Generated Code?” This isn’t only about jOOQ Even if you’re not using jOOQ, or if you’re using jOOQ … Continue reading Look no…
People around the world understand the battle for net neutrality as a defining moment for the Internet. Thoughtworks is joining Big Telecom vs. The World, a global effort of more than 50 groups in 22 countries who are calling on individuals, organizations and companies to be part of the historic campaign.
An Interview with Mark Collin, Thoughtworks EU Head of Retail
6 Sept 2014
Conway's Law states that "organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations". Melvin Conway coined this aphorism in his paper "How Do Committees Invent?" in 1968.[1]
5 Sept 2014
ERD (Entity Relationship Diagrams) are a great way of designing and visualising your database model. There is a variety of vendors offering free and commercial ERD tools. Vertabelo by E-Point is a SaaS product where you can design and manage your database schema online. For instance, the jOOQ example database can be modelled as such: … Continue reading Stop Manually…
Stadiums are becoming increasingly connected, wired up with high speed networks for mobile apps, enabling devs to build audience participation apps.
Stadiums are becoming increasingly connected, wired up with high speed networks for mobile apps, enabling devs to build audience participation apps.
Many of Heroku's internal components make heavy use of logfmt to log information about what's going on in production. The format is hugely valuable in that it allows us to retroactively analyze what happened during any arbitrary request to our components, query our log traces in very flexible ways, and combined with Splunk, easily generate […] The post Hutils –…
Working with a distributed agile team was a first time experience for me, and one that came with very interesting challenges. The most obvious of these challenges was of course, communication. The other was related to keeping good practices like pair programming still feasible. Even something as simple as recognizing my own teammates in person, after having worked virtually with…
4 Sept 2014
I read Ready Player One recently and I enjoyed it; it was a pretty fast read and I finished it in a day. It presents a view of the future where the possibilities allowed by a virtual reality world surpass those of the real world, so most people spend as much time as possible connected […]
A few months ago I came across the article Why Most Unit Testing is Waste by James O Coplien. The title is an accurate description of the contents – James considers most unit tests to be useless. He expands his arguments … Continue reading →
Tutorial and live demo on building a DIY multiplayer Minecraft with PubNub and Voxeljs. It's multiplayer Voxeljs!
Tutorial and live demo on building a DIY multiplayer Minecraft with PubNub and Voxeljs. It's multiplayer Voxeljs!
It was a sunny Thursday afternoon. An intrigued, but slightly dubious Technical Architect, Dan, left our Thoughtworks presentation. Could Clojure be used to build the bespoke CMS? Is it too bleeding edge? Would his team get it? But let's take a step back. Why would a large organisation with a mix of technologies and legacy systems want to muddy the…
In July, the third edition of Recife's Campus Party took place over two days, giving the local tech community an opportunity to interact with Thoughtworkers and discuss the ideas that were featured in the Technology Radar.
3 Sept 2014
2 Sept 2014
CHECK constraints are already pretty great when you want to sanitize your data. But there are some limitations to CHECK constraints, including the fact that they are applied to the table itself, when sometimes, you want to specify constraints that only apply in certain situations. This can be done with the SQL standard WITH CHECK … Continue reading Awesome SQL…
Do you really need support? Our apologies. We hadn’t realised that we didn’t advertise the support-free jOOQ licenses, which we had been offering for quite a while now well enough on our website. So we have fixed that now. We think that jOOQ is such a high quality, intuitive piece of software with a vibrant … Continue reading jOOQ Newsletter:…
This tutorial shows you how to use our private chat API to build private chat and insure security in your chat application with Access Manager
This tutorial shows you how to use our private chat API to build private chat and insure security in your chat application with Access Manager
The web has come far from the days of AJAX polling to where the browser constantly polled the server for updates. In general there are a few ways to get a message from a server to a browser, each of these has their benefits and drawbacks.
Governments collect and publish enormous amounts of data, but much of that data isn't accessible or promoted openly to the general public. This is often because governments have limited resources with which to engage the citizens and demonstrate the power and impact this data can have. As Australian governments shift further and further towards opening their data, the power of…
In July, we hosted the second event in the Women’s DIY Series: Learn Together, Develop it Yourself. We were thrilled that more than 30 women from all different professions and various levels of programming experience come together in Chicago during this seven-hour workshop to learn AngularJS.
1 Sept 2014
The start of September brings a close to the Go 1.4 merge window. From now until the release in December, only bug fixes and tweaks will be accepted. A major piece of work that landed in Go 1.4 cycle was the rewrite of parts of the Go runtime from C to Go. What may not […]
My interview today is with Michael Hunter, a senior software developer, who’s been with Microsoft for 14 years now. He helps the teams evaluate the quality of their products. When he’s not at work, he can be seen city hiking around Seattle and spending time with his fiancée and her giant cat (the furry one in the photo!). Read more…
31 Aug 2014
Problem: Two players take turns moving a rook on an 8×8 chessboard. The rook is only allowed to move south or west (but not both in a single turn), and may move any number of squares in the chosen direction on a turn. The loser is the player who first cannot move the rook. What is the optimal play for…
30 Aug 2014
Some new tools in our toolbox: Slack, JIRA for sales and marketing processes, Spring Data JPA, Justinmind
SchakkoIn the first days at work after my vacation I got in touch with some new tools and ideas which I want to share Slack We were searching for an internal chat solution for my former and current employee since years. Most of the self hosted chat solutions don’t have clients for the […] The post Some new tools in…
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.
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.