Mario Fusco’s popular tweet impressively shows what the main difference between imperative and functional approaches to similar algorithms really is: Imperative vs. Functional – Separation of Concerns pic.twitter.com/G2cC6iBkDJ — Mario Fusco 🇪🇺 (@mariofusco) March 1, 2015 Both algorithms do the same thing, they’re probably equally fast and reasonable. Yet, one of the algorithms is much … Continue reading Comparing Imperative…
17 Sept 2015
16 Sept 2015
How to collect, store, and retrieve IoT sensor data in real time, updating and syncing data across the application when it restarts.
How to collect, store, and retrieve IoT sensor data in real time, updating and syncing data across the application when it restarts.
“Lenses are a way to focus from a big data structure to a particular focus inside that data structure where you want something to happen,” explains Chris Ford, software developer and Thoughtworker from London.
15 Sept 2015
How to build a real-time buddy list (ie. friend's list) for chat applications using advanced channel groups, Presence, and PubNub Stream Controller.
How to build a real-time buddy list (ie. friend's list) for chat applications using advanced channel groups, Presence, and PubNub Stream Controller.
I’m seeing people do this all the time. They want to hammer a date or timestamp constant into their SQL query, and the only function they know is the TO_DATE() or TO_TIMESTAMP() date parsing function: As observed in this Stack Overflow question, for instance: Date parsing is important only if your date input is really … Continue reading Don’t Format…
This is part 2 of a series. Read part 1 and part 3.
14 Sept 2015
A tutorial was published on how to build a simple Slack bot in Node.js that tells Chuck Norris jokes, for some amusing fun. The bot is open source and available on GitHub and NPM.
“configure: error: libpthread not found!” while configuring ActiveMQ CPP 3.8 and 3.9 on CentOS 6.7
SchakkoThe ./configure script of activemq-cpp for 3.8.x and 3.9 failed with the error configure: error: libpthread not found!” when running on CentOS 6.7. Stupidly i had forgotten to install the gcc-c++ package. “yum install gcc-c++” fixed everything. The error notification is although mentioned in the ActiveMQ FAQ. Stupid me. The post “configure: error: libpthread not found!” while configuring ActiveMQ CPP…
11 Sept 2015
Have you been passively learning the material in these articles or have you been actively practicing it? I hope you’ve been actively practicing it. I really do :) Remember what Confucius said? “I hear and I forget.” “I see and I remember.” “I do and I understand.” In the previous article you learned how to parse (recognize) and interpret arithmetic…
10 Sept 2015
As the world becomes more cloud-centric, and more of our apps and business depend on its capabilities, the trust, control and management of cloud services is more important than ever. Since the first days of Heroku — and Platform-as-a-Service in general — many companies have struggled to balance the impact and success of the cloud […] The post Introducing Heroku…
Apps are at the heart of modern businesses, and are important assets that need a secure platform geared for compliance and security. We launched Heroku Enterprise earlier this year with this in mind and today we are excited to announce the beta of Heroku Identity Federation for Heroku Enterprise customers. This feature unifies the login […] The post Integrated security…
During the last months we periodically experienced performance problems with our storage system. Investigating the cause for the slow performance was problematic as we did not have direct shell access and could only rely on crippled information from the web GUI. Yesterday my collagues migrated the storage system from the […] The post Slow RAID performance with our new Linux…
Collect acceleration readings from an accelerometer and stream the data in real time to a live-updating, real-time dashboard with Intel Galileo.
Collect acceleration readings from an accelerometer and stream the data in real time to a live-updating, real-time dashboard with Intel Galileo.
9 Sept 2015
Today we are releasing a reference architecture and sample app for running e-commerce apps on Heroku, with a simple pattern for integrating customer, order and product data with Salesforce via Heroku Connect. The key: Any transaction recorded in Heroku Postgres can be seamlessly integrated with Salesforce via Heroku Connect. Salesforce for E-Commerce Many Salesforce customers […] The post Customer Centered…
How to get started with PubNub on the IBM Bluemix cloud development platform.
How to get started with PubNub on the IBM Bluemix cloud development platform.
I’ve stumbled upon an interesting Stack Overflow question by user “mip”. The question was: I’m looking for a way of generating an alphabetic sequence: A, B, C, ..., Z, AA, AB, AC, ..., ZZ. This can be quickly recognised as the headings of an Excel spreadsheet, which does precisely that: . So far, none of … Continue reading How to…
Yesterday’s New York Times carried a story entitled “Apple and other tech companies tangle with U.S. over data access“. It’s a vague headline that manages to obscure the real thrust of the story, which is that according to reporters at the Times, Apple has not been forced to backdoor their popular encrypted iMessage system. This flies in … Continue reading…
8 Sept 2015
This blog post provides a beginner's guide to managing versioning and deployment of static websites using Git for version control, Flightplan.js for automated deployment, and Nginx for serving. It outlines a simple yet complete workflow for implementing continuous delivery and rollbacks.
How to build a more efficient real-time application to decrease history API calls by using an inbound channel pattern for pub/sub messaging.
How to build a more efficient real-time application to decrease history API calls by using an inbound channel pattern for pub/sub messaging.
I was playing around with D3 last night and built a silly visualization of antipodes and how our intuitive understanding of the world sometimes doesn’t make sense. Check out the visualization at bl.ocks.org! Basically the idea is if you fly from Beijing to Buenos Aires then you can have a layover at any point of the Earth’s surface and it…
7 Sept 2015
In this post we’ll implement Reed-Solomon error-correcting codes and use them to play with codes. In our last post we defined Reed-Solomon codes rigorously, but in this post we’ll focus on intuition and code. As usual the code and data used in this post is available on this blog’s Github page. The main intuition behind Reed-Solomon codes (and basically all…
The time it takes for an idea to get to market and add value can make or break an organization. In this two-part series, we look at how to radically reduce idea to market cycle time. First, we take a deep dive into the systemic problems that prevent organizations from being truly responsive to what customers need. How long does…
This is the second of a five part series. Read part 1 here.
6 Sept 2015
The Shyp API currently runs on top of the Sails JS framework. It's an extremely popular framework - the project has over 11,000 stars on Github, and it's one of the top 100 most popular projects on the site. However, we've had a very poor experience with it, and with Waterline, the ORM that runs […]
In the classic film "Modern Times", Charlie Chaplin’s Little Tramp character struggles to find his place in the newly industrialized world. As a worker on a factory assembly line, his work is repetitive and mind-numbing. He dignity is torn to shreds by his supervisors who have dim-witted ideas to make him more productive’. Not surprisingly, he finally suffers a nervous…
4 Sept 2015
Every year Bazaarvoice R&D throws BVIO, an internal technical conference followed by a two-day hackathon. These conferences are an opportunity for us to focus on unlocking the power of our network, data, APIs, and platforms as well as have some fun in the process. We invite keynote speakers from within BV, from companies who use […]
This is a short post to describe my recommended method for building Go on the Raspberry Pi. This method has been tested on the Raspberry Pi 2 Model B (900Mhz, 1Gb ram) and the older Raspberry Pi 1 Model B+ (700Mhz, 512Mb ram). This method will build Go 1.5 into you home directory, $HOME/go. As […]
3 Sept 2015
Editor’s Note: Heroku Pipelines is now Generally Available. Learn more about Continuous Delivery at Heroku. At Heroku we’re building a solid platform for delivering apps in a deliberate, reliable manner. We know that reasoning about the state and progress of code changes, testing and verifying what’s deployed, and tracking what works can all be difficult […] The post Introducing Heroku…
2 Sept 2015
How to stream location data to build real-time location tracking maps using JavaScript, EON real-time dashboard framework, and the Mapbox API.
How to stream location data to build real-time location tracking maps using JavaScript, EON real-time dashboard framework, and the Mapbox API.
Last week, my daughter started Kindergarten. I’m very happy for her, especially because she’s going to an awesome public school. As someone who didn’t grow up in the US, I heard a lot of stories about the American school system but one thing I didn’t know is that kids start so early. My daughter starts at 8:10am! We had to…
Content that is 10 times better than the best result that can currently be found in the search results for a given keyword phrase or topic.
31 Aug 2015
Okay! You had an idea for how to improve the project, the maintainers indicated they'd approve it, you checked out a new branch, made some changes, and you are ready to submit it for review. Here are some tips for submitting a changeset that's more likely to pass through code review quickly, and make it […]
I try to avoid making predictions1. It's a no-win proposition: if you're right, hindsight bias makes it look like you're pointing out the obvious. And most predictions are wrong. Every once in a while when someone does a review of predictions from pundits, they're almost always wrong at least as much as you'd expect from random chance, and then hindsight…
In the face of industry disruption, incumbent organisations are starting to pay close attention to the techniques used by the disruptors in order to rapidly evolve and respond to change. What began as an agile movement outside of IT has now become way more focused on business agility and a new business model is emerging.
30 Aug 2015
Like sweating it out with a personal trainer in the gym, retailers know they should spend time building their supply chain capabilities.
27 Aug 2015
How to build a WebRTC live stream for video enabling a user to broadcast video from one-to-many using the WebRTC API. It's DIY Periscope and Meerkat!
How to build a WebRTC live stream for video enabling a user to broadcast video from one-to-many using the WebRTC API. It's DIY Periscope and Meerkat!
26 Aug 2015
Much of the ORM criticism of the last decade missed the point, being inaccurate. By the end of this article, we will conclude with the following: There is no significant difference between the relational (data) model and object oriented models How to come to this conclusion? Read on! How we came to believe in this … Continue reading There is…
OSCON: Where open source meets commerce and connections bloom.
One of the worst phrases to hear in a meeting is “best practice." Some executives, especially those in large enterprises full of hierarchy, rules and rigid structure, feel the need to follow this dangerously linear way of thinking as a means to justify change. Consultants use this as a way to dress up old rope and sell it for new…
25 Aug 2015
Our test suite has been failing maybe 2% of the time with a pretty opaque error message. I thought the database logs would have more information about the failure so I figured out how to turn them on with Circle. Add the following to the database section of your circle.yml: database: override: - sudo sed […]
In this tutorial, we'll show you how to build a fully-featured WebRTC group video chat application with features like mute, pause, and caller
In this tutorial, we'll show you how to build a fully-featured WebRTC group video chat application with features like mute, pause, and caller
How to get up-and-running with a simple WebRTC video and voice chat app in 20 lines of JavaScript, enabling two users to video chat in a web browser.
How to get up-and-running with a simple WebRTC video and voice chat app in 20 lines of JavaScript, enabling two users to video chat in a web browser.
"Six degrees of separation" is the theory that that everyone is six or fewer steps away from any other person in the world. The theory was proposed by Frigyes Karinthy in 1929 and popularized in the 1990s by the parlour game "Six Degrees of Kevin Bacon."
The advent of the computer era is a major breakthrough in history. Mankind created amazing machines to handle the tasks our brains struggle with. Telling computers how to solve our problems has become a practice called Software Development. Over time, higher level languages have made programming less daunting. We realized the difference between a program and a product [1]. We…
24 Aug 2015
In diesem Blog-Eintrag will ich meine Erkenntnisse schildern, die ich während meines Tinnitus gesammelt habe. For the non-german-readers of this blog: This blog post deals with the experiences I made during my tinnitus. Zur Vorgeschichte Am Dienstag vor genau zwei Wochen wachte ich im frühen Morgen von einem hohen Fiepen […] The post Wie ich einen HNO-Arzt in Wolfsburg suchte…
From HTTP2, Flexbox, CSS Filters, and ES6, the Internet we know today is built on hacks. Lets explore some of those hacks and solutions.
23 Aug 2015
Part 1: Exploding The World of Retail Opportunity - It's Time to Have a Crisis
Thoughtworks InsightsRetail never stands still. When A&P invented the modern grocery store in the 1950’s, its rapid rise to prominence was eclipsed thirty years later by discount empires such as Kmart and Walmart, who themselves are now threatened by online players like Amazon, who churlishly refuse to stay solely online.
22 Aug 2015
Now that Go 1.5 is out, lots of gophers are excited to try the much improved cross compilation support. For some background on the changes to the cross compilation story you can read my previous post, or Rakyll’s excellent follow up piece. I’ll assume that you are using the binary version of Go 1.5, as distributed from […]
21 Aug 2015
Where do the boundaries of retail lie? This question has been on my mind a lot lately. With the proliferation of customer touch points and the transient nature of online buying behavior things are a little hazy!
20 Aug 2015
Last year, we launched the original Performance dyno, designed to support the largest apps running at-scale with more consistent service and faster response times. Today, with the goal of continuing to support our fast growing customers with more flexibility to choose the type of dynos best for their applications, we are excited to announce improvements […] The post Introducing Improved…
Our recent article “NULL is Not The Billion Dollar Mistake. A Counter-Rant” got us a lot of reads, controversial comments, and a 50/50 upvote / downvote ratio pretty much everywhere a blog post can be posted and voted on. This was expected. Objectively, NULL is just a “special” value that has been implemented in a … Continue reading Divided we…
I love reading postmortems. They're educational, but unlike most educational docs, they tell an entertaining story. I've spent a decent chunk of time reading postmortems at both Google and Microsoft. I haven't done any kind of formal analysis on the most common causes of bad failures (yet), but there are a handful of postmortem patterns that I keep seeing over…
James Michener was a better writer than Ernest Hemingway because his books are longer. James Michener was a better writer than Ernest Hemingway because he could type 20 words-per-minute faster. Makes sense—right? Assessing the effectiveness of writers based on productivity measures makes absolutely no sense. If your job is to write code “words” rather than English (or French or Spanish)…
You are not a train, so don’t live your life running along tracks laid by others. Explore the world freely and discover as many possibilities as you can.
19 Aug 2015
How to use Leap Motion, Raspberry Pi, and PubNub to create remote motion-controlled servos enabling the control of a physical object in real time.
How to use Leap Motion, Raspberry Pi, and PubNub to create remote motion-controlled servos enabling the control of a physical object in real time.
For the longest time I had this alias in my .bashrc alias gb='go install -v' as an homage to John Asmuth’s gb tool which I was very fond of way back before we had the go tool. Once gb was written, I had to remove that alias and live in a world where I used […]
18 Aug 2015
Today we're releasing some exciting improvements to the Heroku beta Docker support announced 3 months ago: Automatic configuration of local containers running data stores (like Postgres, Redis and MongoDB) and support for many more languages including images for Node.js, Ruby, Go, Java, Scala, Clojure and Gradle. This helps you use local containers to run, test […] The post Docker support…
In this tutorial, we'll cover how to receive real-time vehicle data from the Automatic API & display them on a map in real time using the Mapbox API.
In this tutorial, we'll cover how to receive real-time vehicle data from the Automatic API & display them on a map in real time using the Mapbox API.
Welcome to the jOOQ Tuesdays series. In this series, we’ll publish an article on the third Tuesday every other month where we interview someone we find exciting in our industry from a jOOQ perspective. This includes people who work with SQL, Java, Open Source, and a variety of other related topics. We have the pleasure … Continue reading jOOQ Tuesdays:…
17 Aug 2015
How to publish and stream vehicle data and events in real time from the Automatic adapter via PubNub to a web interface.
How to publish and stream vehicle data and events in real time from the Automatic adapter via PubNub to a web interface.
This piece is about making choices for software design. Particularly about larger systems which could potentially be separated into multiple deployables in the form of service endpoints. I won’t be talking particularly about service endpoint design, but I would like to discuss the ideation phase for creating multiple service applications.
16 Aug 2015
Yesterday the New York Times and ProPublica posted a lengthy investigation based on leaked NSA documents, outlining the extensive surveillance collaboration between AT&T and the U.S. government. This surveillance includes gems such as AT&T’s assistance in tapping the main fiber connection supporting the United Nations, and that’s only the start. The usual Internet suspects are arguing … Continue reading The…
Every once in a while when talking to smart people the topic of automation comes up. Technology has made lots of occupations redundant, so what’s next? Switchboard operator, a long time ago What about software engineers? Every year technology replaces parts of what they do. Eventually surely everything must be replaced? I just ran into another one of these arguments:…
15 Aug 2015
The RASpec Impreza is a 2002 Subaru WRX “bugeye” chassis purchased in 2011 and fully restored from 2013 to 2015. The car was built by DENT Sport Garage and German Performance Service in Massachusetts. I built the RASpec Impreza as a cross-campaign race car capable of competing in time attack, time trial, hillclimb and wheel-to-wheel racing series up and down…
13 Aug 2015
Functional programming allows for quasi-declarative programming in a general purpose language. By using powerful fluent APIs like Java 8’s Stream API, or jOOλ’s sequential Stream extension Seq or more sophisticated libraries like vavr or functionaljava, we can express data transformation algorithms in an extremely concise way. Compare Mario Fusco’s imperative and functional version of the … Continue reading Common SQL…
12 Aug 2015
I woke up this morning and I thought to myself: “Why do we find it so difficult to learn a new skill?” I don’t think it’s just because of the hard work. I think that one of the reasons might be that we spend a lot of time and hard work acquiring knowledge by reading and watching and not enough…
We can’t separate the experiential story we create from the stories we’re immersed in. I was surprised how popular the 22 rules of UX (adapted from Pixar’s 22 rules of storytelling) has been. The ‘rules’ were published here recently, and something around the storytelling theme seemed to resonate strongly with the design community. I was trying to figure it out…
11 Aug 2015
After coding for a while (eek, almost 20 years or so in my case, time flies when you’re having fun), one starts to embrace those habits. Because, you know… Anything that Can Possibly Go Wrong, Does. This is why people embrace “defensive programming”, i.e. paranoid habits that sometimes make total sense, and sometimes are rather … Continue reading Top 10…
10 Aug 2015
Intro # So I need to create an IPSEC point to point link between two sites so my two FreeNAS boxes can replicate between each other as per this project. I already run my network on PfSense and have done for a few years now and think it’s great so slapping a PfSense box at my mother’s house seemed like…
9 Aug 2015
The acceleration of change impacts technology, consumer expectations, and economic models. Nowhere has this been so profound as in the decease in the lifespan of companies on the S&P 500, from 67 years average in 1920 to 15 years today.
8 Aug 2015
This article is also available in Japanese, イベントループなしでのハイパフォーマンス – C10K問題へのGoの回答 This article is based on a presentation I gave earlier this year at OSCON. It has been edited for brevity and to address some of the points of feedback I received after the talk. A common refrain when talking about Go is it’s a language […]
7 Aug 2015
Ideally, user research and testing is conducted in person at a location where a person performs an action or task. There are multiple factors that affect user behavior. As a user researcher, you need to read and understand your user’s body language, and know where it is appropriate to probe and when. How is this research impacted when it’s not…
6 Aug 2015
It’s about time we got back to computational topology. Previously in this series we endured a lightning tour of the fundamental group and homology, then we saw how to compute the homology of a simplicial complex using linear algebra. What we really want to do is talk about the inherent shape of data. Homology allows us to compute some qualitative…
In a recent patch we improved Rails response time by >10%, our largest improvement to date. I’m going to show you how I did it, and introduce you to the tools I used, because.. who doesn’t want fast apps? In addition to a speed increase, we see a 29% decrease in allocated objects. If you […] The post We Patched…
5 Aug 2015
Your data fits in RAM. Yes, it does. Don’t believe it? Visit the hilarious yourdatafitsinram.com website. But there is an entirely new dimension to this since last week’s announcement by Intel, which hasn’t gotten enough attention in the blogosphere yet. New 3D XPoint™ technology brings non-volatile memory speeds up to 1,000 times faster than NAND, … Continue reading RAM is…
Imagine you are in a line at an airport, waiting to go through immigration. The line ahead of you is huge and there's only one (not very excited) agent serving that line. You're sweating, because the air-conditioning is being fixed at this moment, so it's as hot as it gets.
There is a story going around about data science that you’ve surely heard. It's the statement that 80% of the work a data scientist does is collecting, cleaning and organizing data and that only 20% is their real specialty: building models and making discoveries. Those who make this statement, often those selling something, usually claim what data science needs most…
China's Brick and Mortar Revolution: From Soy Sauce Food Stamps to Experience Hubs
Thoughtworks InsightsI grew up in the planned economy of Communist China in the early 1980s. On my 5th birthday, my parents gave me my first food stamp and said “Boy, you’re old enough to go and buy soy sauce”. This might seem trivial, but in China it was a big deal—a coming of age of sorts. There’s a lot to learn…
4 Aug 2015
How to build a fully-featured IoT connected Raspberry Pi smart house. In this part, we'll show you how to remote control LEDs and adjust brightness with PWM
How to build a fully-featured IoT connected Raspberry Pi smart house. In this part, we'll show you how to remote control LEDs and adjust brightness with PWM
How to build a fully-featured IoT connected Raspberry Pi smart home. In this part, the temperature and humidity sensors, and stream to a live web UI.
How to build a fully-featured IoT connected Raspberry Pi smart home. In this part, the temperature and humidity sensors, and stream to a live web UI.
Have you ever wondered how you could express a predicate that “feels” like the following, in SQL: /u/CyBerg90 has, on reddit. The idea was to create a predicate that yields true whenever both values Var1 and Var2 yield either 1, 2, or 3. The canonical solution The canonical solution would obviously be to write it … Continue reading INTERSECT –…
This white paper is written by Dan McClure (Innovation Design Practice Leader, Thoughtworks) and Ian Gray (Director, Gray Dot Catalyst). This is the third of four contributions on the subject of 'Innovation Scaling' submitted for the 'Transformation Through Innovation' theme for the World Humanitarian Summit.
3 Aug 2015
I’ve seen many articles and discussions online discussing the merits of merge and rebase when integrating parallel branches into the main branch. It seems there are two camps arguing “which is better” when in reality, both have their own use cases. The task we need to accomplish is to determine which workflow is right for your project. This article will…