I’ve been meaning to learn Theano for a while and I’ve also wanted to build a chess AI at some point. So why not combine the two? That’s what I thought, and I ended up spending way too much time on it. I actually built most of this back in September but not until Thanksgiving did I have the time…
29 Nov 2014
28 Nov 2014
I’m thankful for family and friends and good health and so many wonderful people I’ve had the pleasure of working with at Google. But I’m also thankful for airplanes: “You want to see your family? It would take months to walk to them, but come sit in this metal tube and thanks to some interesting […]
27 Nov 2014
One of the best things about modern cryptography is the beautiful terminology. You could start any number of punk bands (or Tumblrs) named after cryptography terms like ‘hard-core predicate’, ‘trapdoor function’, ‘ or ‘impossible differential cryptanalysis’. And of course, I haven’t even mentioned the one term that surpasses all of these. That term is ‘zero knowledge‘. In … Continue reading…
I’m looking at this list of federal holidays, and you know what I’m thinking? I’m thinking fuck Columbus Day. Who the hell cares about Columbus Day except for mattress stores? Instead, let’s scratch Columbus Day and make Election Day a national holiday. Turnout on Election Day was only 36.6 percent in 2014, according to Senator […]
“Black Friday” is the day after Thanksgiving in the United States. That's the day that most people are off work and starting to think about Christmas. It's also the day that many brick-and-mortar specialty stores finally sold enough goods to break even or make a profit for the year. Given the accounting tradition of recording losses in red ink and…
26 Nov 2014
Evangelist Sunny Gleason shares a set of new, open source ElasticSearch plugins that he's built for multi data center ElasticSearch replication
Evangelist Sunny Gleason shares a set of new, open source ElasticSearch plugins that he's built for multi data center ElasticSearch replication
Google has a pretty good culture of doing postmortems. When something fails, someone close to the failure tries to document what happened and why. A good postmortem document should also point the way to avoid similar mistakes in the future. Mistakes happen, but you don’t want to make the same mistakes over and over again. […]
Access to information strongly depends on people’s socio-economic status. Although this seems to be a worldwide problem, it's even more pronounced in the Global South (GS). Underprivileged communities in this particular region of the world continue to be denied equal access to information, because of their poor socio-economic conditions.
Working in a large team presents its own set of challenges, more so when the team is distributed. One such challenge is to retain agile practices that provide actual value, over those that are enforced because a manual says so. Agile teams teach us to be reactive to unexpected situations and follow a continuous improvement processes. This helps us evidence…
25 Nov 2014
The story of how I built a model house that can be controlled from anywhere on Earth with Arduino using PubNub
The story of how I built a model house that can be controlled from anywhere on Earth with Arduino using PubNub
I had one more experience at the XOXO Festival that I wanted to mention. I really enjoyed Anita Sarkeesian’s talk. You can watch it here: Sarkeesian explained her experience with humor and grace, and that really resonated with me. I don’t want to join the tone police–passionate voices have a role in this discussion too, […]
Just a few days ago, Airtel announced plans to offer its mobile users free access to certain specific Internet services (such as Facebook, Youtube, Snapdeal, Makemytrip and Twitter) for a limited time followed by special rates to access these specific services.
24 Nov 2014
This quick start shows how to implement ElasticSearch plugins to use as a medium for cross-cluster document real-time geo-replication and indexing.
This quick start shows how to implement ElasticSearch plugins to use as a medium for cross-cluster document real-time geo-replication and indexing.
Open source is really good at creating products. Almost any commercial software package or product like Word, Excel, Windows, or Photoshop has a great open source equivalent. However, open source has been less successful at creating services. Where’s the open source version of Google, or Facebook, or Twitter, or Gmail, or Craigslist? You could sum […]
I was curious what different people worked on in Linux, so I tried grabbing data from the current git repository to see if I could pull that out of commit message data. This doesn't include history from before they switched to git, so it only goes back to 2005, but that's still a decent chunk of history. Here's a list…
Imagine you’re surfing through the web and all the pages show you the wait spinner for 15 seconds. How long would you continue to surf without losing your patience? How long until you move to doing something else? What if one website does this to you? Would you visit that page again without complaining? Would you recommend the website to…
23 Nov 2014
If you’re a geek like me, there’s probably a bank or cluster of micro USB chargers somewhere in your house for recharging phones, tablets, Kindles, headphones, etc. Lately I’ve been playing with a couple USB chargers that I really like. One is a USB charger with 3.5 amp (!) output. Just for context, a typical […]
22 Nov 2014
Every year or so, it’s worthwhile doing an audit of your online security. The most important accounts to protect are your bank accounts and your email accounts. Here are some things to consider doing: – Choose strong passwords. Just as important: don’t re-use the same password across web services. Consider using a password manager like […]
Say you build a machine learning model, like a movie recommender system. You need to optimize for something. You have 1-5 stars as ratings so let’s optimize for mean squared error. Great. Then let’s say you build a new model. It has even lower mean squared error. You deploy it. This model turns out to give a lower mean squared…
21 Nov 2014
This tutorial shows how to stream sensor readings in real time using the Texas Instrument LaunchPad, Energia, and PubNub
This tutorial shows how to stream sensor readings in real time using the Texas Instrument LaunchPad, Energia, and PubNub
Juju is a pretty large project. Some of our core packages have large complex dependency graphs and this is undesirable because the packages which import those core packages inherit these dependencies raising the spectre of an inadvertent import loop. Reducing the coupling between our core packages has been a side project for some time for me. […]
Take a look at the 5 main options for taking payments in Europe.
When I was in grad school in the late 90s, not very much scholarly work was on the web. I had to walk over to the campus library to access scholarly papers, and sometimes make photocopies of the physical papers I wanted. Things have gotten better, but it’s still harder to do research than it […]
It is common for agile teams to adopt a number of ceremonies, and usually they are chosen by team members.The purpose of each ceremony is specific and I shall now explore Retrospectives and the role of the facilitator in this kind of meeting.
Imagine yourself as a taxi driver, waiting at the front of a taxi rank for your next fare to who knows where. You've been in the business a long time and the city's streets feel like old friends. All of a sudden your rear passenger door opens and a new customer starts to climb into the back seat. The passenger…
20 Nov 2014
This blog post walks you through how to build a fully featured chat application that is optimized for customer facing sales and support purposes.
This blog post walks you through how to build a fully featured chat application that is optimized for customer facing sales and support purposes.
MySQL is a database that has been bending the SQL standard in ways that make it hard to move off MySQL. What may appear to be a clever technique for vendor lockin (or maybe just oversight of the standard) can be quite annoying in understanding the real meaning of the SQL language. One such example … Continue reading Use MySQL’s…
The week before XOXO, a festival dedicated to independent artists and creators, I was in Juneau, Alaska for a cruise with my wife and my parents. I got off the ship with my Dad and we walked around town. We kept walking, past the touristy stores selling smoked salmon and tanzanite. We walked for a […]
At Thoughtworks, most of our projects begin with an inception where all the stakeholders in the project get together to analyse and start the discovery phase of the project. It’s usually done in order to develop a shared understanding about the project. There’s no working software to speak of, but we get a clear sense of why we want to…
19 Nov 2014
Helping teams to collaborate on creating, shipping and operating great apps is a core Heroku value. People collaborating on Heroku apps are not all alike: Some spend all day in the terminal, others prefer using Heroku from a browser. That’s why we’ve built both a powerful CLI and a great Dashboard. Today, we’re adding beta […] The post Announcing Beta…
The state of Kentucky has 120 counties. It has so many because the idea was that you should be able to make it to the county seat and back in a single day. That speaks to how isolated people used to be. Likewise, the Galapagos Islands are known for their diversity, in part because the […]
We released a video on how to create a Google Earth KML SuperOverlay.
To mark Ada Lovelace Day, Thoughtworks offices around the globe came together to celebrate women’s goals and accomplishments in Science, Technology, Engineering, and Math (STEM). We had events spanning from Dallas to Chicago to London and more! Here at Thoughtworks San Francisco, we brought together a diverse group of women to tell us their stories on how and why they…
When designers and developers work together from the start, it produces better outcomes. But how can we get designers involved and wanting to participate in the open source community from the start?
18 Nov 2014
This tutorial shows you how to build a real-time voting app that broadcasts live results as votes come in using D3js and PubNub Data Streams.
This tutorial shows you how to build a real-time voting app that broadcasts live results as votes come in using D3js and PubNub Data Streams.
Problem: Alice chooses a secret polynomial $ p(x)$ with nonnegative integer coefficients. Bob wants to discover this polynomial by querying Alice for the value of $ p(x)$ for some integer $ x$ of Bob’s choice. What is the minimal number of queries Bob needs to determine $ p(x)$ exactly? Solution: Two queries. The first is $ p(1)$, and if we…
This weekend I swapped comic book recommendations with a few folks. Today I was emailing someone a few of my favorites and thought “I should just put this up on the blog.” So to call out a few comics I’ve enjoyed: – Sandman – the classic Neil Gaiman books that make it “okay” to be a […]
Have you ever written JUnit tests extending a class that does some before and after work, so you didn’t have to repeat that code in various test classes?
If I had to guess, I'd say I probably work around hundreds of bugs in an average week, and thousands in a bad week. It's not unusual for me to run into a hundred new bugs in a single week. But I often get skepticism when I mention that I run into multiple new (to me) bugs per day, and…
Service companies often find it hard to instill product thinking in teams. People working on software applications believe that they are only on a temporary project - that could range from a few months to a year. When it’s done, they can move on to other projects. The application is seldom treated as a 'product', that needs to live in…
17 Nov 2014
Imagine that you’re training for the San Francisco Marathon. You’d like to prepare for the distinctive pattern of hills on the course: Now if you live in San Francisco, you could just run along the actual race course. But what if you don’t live near San Francisco? Wouldn’t it be cool if a service could […]
I've seen all these studies that show how a 100ms improvement in page load time has a significant effect on page views, conversion rate, etc., but I'd never actually tried to optimize my site. This blog is a static Octopress site, hosted on GitHub Pages. Static sites are supposed to be fast, and GitHub Pages uses Fastly, which is supposed…
Over the weekend I spoke at the Embergarten Saturday Symposium, which was an awesome mini conference on Ember in Toronto. My topic was “Ember at 10ft”, and it was about how to build a TV friendly interface in Ember.js. The talk was recorded but not yet posted, however I’ve already posted the source code on github. The github repo contains…
The SoundCloud API will be dropping support for Extensible Markup Language (XML) responses. XML will be phased out on the following schedule…
Do you know what makes you want to go to work, even when the work’s not great? Do you know what keeps you strong when all tests are failing and people constantly ask you what’s going wrong? Well, I didn’t. At least not consciously. But life as a consultant teaches us many things about people, their interactions with team members…
Pair programming has a lot of known benefits, but is it always the easiest way to get work done? Is your team on the verge of adopting pair programming? In this post, I want to talk about my experience with pair programming and suggest an activity that will help improve the benefits and reduce the risks when applying this technique.…
Mobile is rapidly taking over desktop as a channel to reach customers. In fact, according to Mary Meekers’ 2014 Internet trends, Internet traffic from mobile devices is up from 14% in May 2013 to 25% globally in May 2014. That's significant year-on-year growth. Businesses all around the globe are adapting to include a compelling mobile experience for customers as part…
15 Nov 2014
Here’s something that I wrote internally within Google in mid-2013. I think at the time, folks within Google were discussing XMPP. The discussion wasn’t as much about client-to-server XMPP, but server-to-server XMPP, which is a less followed area. Anyway, here’s the internal post I wrote: We want to compete on a level playing field We’ve […]
I keep forgetting to buy a costume for Halloween every year, so this year I prepared and got myself a Luigi costume a month in advance. Only to realize I was going to be out of town the whole weekend. If anyone wants a Luigi costume, let me know! (I’m not as big as the guy in the picture) Anyway,…
14 Nov 2014
I recently had a web page with a long list of Twitter names that were not linked, like @mattcutts. I thought that someone has to have made a Chrome extension that would “linkify” names so they would be clickable like @mattcutts. And with a little bit of searching, I found twlinkfy. It looked like a […]
This blog post gives an overview of a data firehose API, how it works, use cases, and how to build one yourself from any data source.
This blog post gives an overview of a data firehose API, how it works, use cases, and how to build one yourself from any data source.
We’ve recently encountered this interesting use-case on the jOOQ user group. How do you discover all primary keys of your schema via the jOOQ API? There are two ways: Using the generated meta data Using runtime meta data Let’s see how it works: Using the generated meta data This is straightforward. If you’re using Java … Continue reading jOOQ Tip…
"Innovate or die” is the mantra of successful companies. So how can we build innovation into our product development process? By combining design thinking, lean startup and agile we get a recipe for repeatable innovation: lean UX. Lean UX and lean startup methods are being used today by many startups and innovation labs to take a learning approach to discovering…
13 Nov 2014
One trick that I’ve discovered pretty recently for my 30 day challenges is based on advice from Jerry Seinfeld. The idea is that you get yourself a cheap calendar and a red pen. Every day you complete your daily challenge, you can cross that day off with a satisfying swipe of the red pen. Once […]
Today we are announcing a new data solution for combined users of the Heroku and Salesforce platform: Heroku External Objects. The newest feature of Heroku Connect, Heroku External Objects makes data from any Heroku Postgres database – like that from customer apps, transaction systems, or data warehouses- seamlessly available within a given Salesforce deployment. Leveraging […] The post Heroku External…
With remote configuration, you can control smart devices from anywhere. This tutorial shows you how to do it with Raspberry Pi, Arduino, and a browser
With remote configuration, you can control smart devices from anywhere. This tutorial shows you how to do it with Raspberry Pi, Arduino, and a browser
History is an angel being blown backwards into the future. History is a pile of debris, and the angel wants to go back and fix things, to repair things that have been broken. But there is a storm blowing from Paradise, and this storm keeps blowing the angel backwards into the future. And this storm […]
Klokan Technologies GmbH team, in cooperation with CampToCamp and BoundlessGeo, designed and implemented a binding between the OpenLayers and Cesium projects allowing to display maps in 3D.
An alphabetized list of styleguides and pattern libraries and a look into the differences between those two terms.
Our new website for Austin's Sass Meetup is live!
12 Nov 2014
This tutorial shows you how to build a second screen game in a web browser with JavaScript that uses a phone controller.
This tutorial shows you how to build a second screen game in a web browser with JavaScript that uses a phone controller.
Now that I have your attention, I’d like to invite you to a critical review of where we’re at in the MySQL vs. MariaDB debate. Around one month ago, I visited Oracle Open World 2014, and I’ve met with Morgan Tocker, the MySQL community manager at Oracle to learn about where MySQL is heading. Who … Continue reading Don’t Migrate…
Merchants often ask us for help getting their customers set up to use Direct Debit, so we've put together six simple steps that you can use to help them through the process.
Our motto is Thoughtworks meets Berlin at Werkstatt. As part of expanding our presence in Germany, Thoughtworks has opened an innovation centre in Berlin called Werkstatt. Werkstatt means workshop – in the cobbler and carpenter sense, a place to roll-up your sleeves and work shoulder-to-shoulder to build stuff. In German the term Werkstatt has a nice ring to it, a…
11 Nov 2014
If you had to pick the top four cities that matter the most in the U.S. based on the industry that they represent, which cities would you pick? I’d argue for these four: – New York City: money/finance/Wall Street – Los Angeles: culture, such as TV and movies – Silicon Valley (taking San Jose up […]
When writing DDL in SQL, you can specify a couple of constraints on columns, like NOT NULL or DEFAULT constraints. Some people might wonder, if the two constraints are actually redundant, i.e. is it still necessary to specify a NOT NULL constraint, if there is already a DEFAULT clause? The answer is: Yes! Yes, you … Continue reading Have You…
Googlers love to discuss and debate things within the company. As a rule of thumb, the internal discussion is civil and respectful, but can be passionate. I may take a few of my favorite internal posts that I wrote, tweak them a bit, and publish them here just so I can refer to them more […]
We’re very excited that our Heroku colleagues Matz, Nobu and Ko1 will all be visiting from Japan soon to attend RubyConf, and it’s especially serendipitous that it is happening in such close proximity to Thanksgiving. Not only is Thanksgiving one of the few holidays that Japan and the U.S. share, it’s a holiday that brings […] The post Announcing A…
I spent a couple of hours this weekend going through some pull requests and issues to Annoy, which is an open source C++/Python library for Approximate Nearest Neighbor search. I set up Travis-CI integration and spent some time on one of the issues that multiple people had reported. At the end of the day, it turns out the issue was…
Australia’s Workplace Gender Equality Agency recently launched a campaign focused on fixing the pay gap between men and women. This is on the back of news in August 2014 that the gender pay gap in Australia increased to 18.2%, the highest it has been in 10 years.
10 Nov 2014
satellite One of the most interesting questions posed in the last thirty years of computer science is to ask how much “information” must be communicated between two parties in order for them to jointly compute something. One can imagine these two parties living on distant planets, so that the cost of communicating any amount of information is very expensive, but…
You have many choices about where to put your data (email, docs, calendar, contacts): Apple, Microsoft, Google, Amazon, Facebook, Twitter, open source/self-hosting, etc. One big consideration for me is how hard it is to export my data. In essence, I’m looking for the exits before I even sit down in any company’s virtual room. For […]
Design for disaster: Building software that survives production chaos.
I've noticed that builds are broken and tests fail a lot more often on open source projects than on “work” projects. I wasn't sure how much of that was my perception vs. reality, so I grabbed the Travis CI data for a few popular categories on GitHub1. For reference, at every place I've worked, two 9s of reliability (99% uptime)…
We were excited to contribute to San Francisco’s booming technology sphere with our bi-annual TechRadar event in the heart of the Financial District.
9 Nov 2014
On balance, I’m already a Charlie Huston fan. My previous favorite book by Huston is Already Dead, which is a hard-boiled noir novel about vampires in the New York underground. I didn’t care for the rest of the trilogy quite as much, but Huston is high on the list of authors I enjoy. I’m not […]
My step-dad is a cabinet-maker by trade. We chat about his work from time to time. I've often been struck by the similarities between building furniture and building software. Take tooling for example. Choosing high quality tools and learning how to use them correctly is of course a very important part of woodworking.
A closer look at one of the reasons why designers don't participate in the open source community. (This links out to designopen.org)
8 Nov 2014
A few years ago I read some short financial advice by Scott Adams, the author and creator of the Dilbert cartoon. It’s great advice–it’s perfect for 95% of Americans’ finances and investing. Without further ado, here is Dilbert’s One Page Personal Finance List: Make a will. Pay off your credit card balance. Get term life […]
7 Nov 2014
When is a string not a string? As part of my “work” on the ECMA-334 TC49-TG2 technical group, standardizing C# 5 (which will probably be completed long after C# 6 is out… but it’s a start!) I’ve had the pleasure of being exposed to some of the interesting ways in which Vladimir Reshetnikov has tortured … Continue reading When is…
If you’re using a commercial database or PostgreSQL / Firebird / CUBRID, you will be able to take advantage of the full power of window functions. We’ve blogged about window functions’ awesomeness a couple of times, in particular about ROW_NUMBER(), RANK(), DENSE_RANK(). Today, we’re going to look into some awesome window functions that produce values … Continue reading Don’t Miss…
Of the many Platform-as-a-Service innovations Heroku has contributed in its seven year existence, perhaps the most iconic is git push heroku master. Today we’re announcing a significant upgrade to Heroku’s Git implementation: Beta support for Git’s HTTP transport. HTTP Git has some notable advantages over traditional SSH Git. Instead of relying on port 22 (often […] The post Announcing HTTP…
Before 2011, I had never run farther than eight miles. Then I found a program called USA FIT which helps runners across the country train up and run a marathon. My goal was to run one marathon and then stop, but I found some friendly folks and so I just kept running. It’s been wonderful. […]
There are some pretty strong statements about types floating around out there. The claims range from the oft-repeated phrase that when you get the types to line up, everything just works, to “not relying on type safety is unethical (if you have an SLA)”1, "It boils down to cost vs benefit, actual studies, and mathematical axioms, not aesthetics or feelings",…
6 Nov 2014
This post has a few purposes – it’s partly a bit of advertising, but it’s also meant to serve as a quick way of replying to speaking requests for a while… if you’ve been directed here by an email from me, I hope you’ll excuse the “form letter” approach. (You can probably skip down to … Continue reading Writing and…
Hey Active.com, I know that a lot of races rely on you for registration. And you do some things really well, like handling the spike of traffic when a race opens up for registration. But you do some stuff really badly. Here’s some feedback about things you could do better. Negative Option Billing? I always […]
Journalist Barrett Brown will be sentenced on 22 January 2015 in Texas.
For the past four weeks, I've been keeping a very public and open version of my personal goals on Github. Its definitely made me a lot more productive, and you should give it a try.
5 Nov 2014
We’re excited to announce that the Cedar-14 – the new version of the Celedon Cedar stack – is ready for general availability and is now the default stack on Heroku. Cedar-14 is based on the latest Ubuntu LTS Linux version and comes with a modern set of libraries and system dependencies that will stay current […] The post Cedar-14 now…
The latest version of the Intel manual has a couple of new instructions for non-volatile storage, like SSDs. What's that about? Before we look at the instructions in detail, let's take a look at the issues that exist with super fast NVRAM. One problem is that next generation storage technologies (PCM, 3d XPoint, etc.), will be fast enough that syscall…
Much has been said and written about how the world is moving towards online retail and the imminent demise of ‘brick and mortar’. With the forecast of online retail to reach $306 billion in the US alone this year, this prophecy is not entirely surprising. But while it may be true for exclusive ‘brick and mortar’ players, for retailers having…