Over the years many people have asked me the same question: I’m starting this new project, what technology do you think I should use? Categories = [] +++ Update: Speaking of HN, here is the thread for this post
27 Aug 2013
26 Aug 2013
Earlier this year I wrote a small harness to compare the relative performance of Go 1.0 and the then just released Go 1.1. You can read the posts about the Go 1.1 performance improvements: amd64, 386 and arm. As the Go 1.2 cycle is entering feature freeze next week, I’ve taken the opportunity to create a […]
23 Aug 2013
In this blog post, we highlight four awesome smart home automation companies and solutions that use real-time technology.
Hi, my name is Ralph Pina, I am a Summer ’13 intern and UT-Austin Computer Science student. During this summer I had the privilege of working with another intern, Devin Carr, on Bazaarvoice’s .NET SDK for Windows Phone 8 and Windows 8 Store apps. Our goal was to provide convenient access to our Conversations API […]
22 Aug 2013
During the 1950’s the famous mathematician Paul Erdős and Alfred Rényi put forth the concept of a random graph and in the subsequent years of study transformed the world of combinatorics. The random graph is the perfect example of a good mathematical definition: it’s simple, has surprisingly intricate structure, and yields many applications. In this post we’ll explore basic facts…
21 Aug 2013
A couple friends have recently had security scares with their Gmail account where they were worried that their accounts might have been hacked. I was emailing one of them about how to make sure that your account is safe, and I realized it might be handy to post this on my blog as well. Here’s […]
I have read a couple of blog posts about LinkedIn recently. “Is LinkedIn Cheating Employers and Job Seekers Alike?” is criticizing LinkedIn for charging job seekers to appear “at the top of the list” when applying for a job. “LinkedIn … Continue reading →
The Bazaarvoice Mobile Team is happy to announce our newest mobile SDK for Windows Phone 8. It is a .NET SDK that supports Windows Phone 8 as well as Windows 8 Store apps. This will add to our list of current open-source mobile SDKs for iOS, Android and Appcelerator Titanium. The SDK will allow developers […]
19 Aug 2013
I’ve been traveling a bit over the past couple of weeks, so I haven’t had much of a chance to keep up on blogging. One consequence is that I completely missed my chance to say something about, well, anything that happened at BlackHat or Def Con. Which is too bad, since a surprising amount of … Continue reading Is the…
18 Aug 2013
Machine learning is broadly split into two camps, statistical learning and non-statistical learning. The latter we’ve started to get a good picture of on this blog; we approached Perceptrons, decision trees, and neural networks from a non-statistical perspective. And generally “statistical” learning is just that, a perspective. Data is phrased in terms of independent and dependent variables, and statistical techniques…
Recently I've fallen in love with the IPython Notebook. It's the Python REPL on steroids and I've probably just scratched the surface of what it can actually do. This will be a short post because long posts make me feel pain when I think about blogging more again. This is also really more about setting […]
16 Aug 2013
The days of static web analytics and metrics are dwindling. In an era where trends move at the speed of light and turn on a dime, you need to have access to
Regardless of the development process that you use, a description of the software architecture can be essential for any project, big or small. If software architecture is about the structure of a system and is the vehicle for satisfying the requirements, then the software architecture document is a written description of this. The Software Architecture […]
15 Aug 2013
We finally took the plunge and invested some 1200 Euro into buying a good coffee machine. Wow, these latte macchiatos are truly amazing! Worth every penny. Looking for a job with great coffee? Join us!
14 Aug 2013
The Bazaarvoice Platform Infrastructure Team recently open sourced project Lassie. Lassie is a Java library that can manipulate the new DataDog screenboards. The Lassie library can create, get, update, and delete the DataDog screenboards via the REST API. We use DataDog across various teams to collect metrics at both a system-wide and application level to give […]
13 Aug 2013
This tutorial shows you how to use the PubNub geolocation API to build real-time geolocation and mapping applications.
Yesterday I sped up our unit/integration test runs from 16 minutes to 3 minutes. I thought I'd share the techniques I used during this process. We had a hunch that an un-mocked network call was taking 3 seconds to time out. I patched this call throughout the test code base. It turns out this did […]
12 Aug 2013
We’ll soon be giving our Developer Portal some love in the way of functionality and style updates. To facilitate this, we’ll be taking the portal offline for approximately 6 hours on Thursday, August 15th; the estimated times are listed in a few timezones below: Timezone Start date/time End date/time UTC Thursday, August 15, 2:00 AM […]
People have a lot of confusion about Javascript context mechanism. I don’t think it’s confusing at all, it’s just that it’s different when compared with other languages we generally use.
A common problem in Android development is that you need to jump off the main UI thread to retrieve data from an IO-based source. At…
11 Aug 2013
I received the message “Segmentation fault” while running an apt-get install. My syslog contained the following lines: Aug 11 11:34:19 srv kernel: [65729.407484] check-new-relea[12700]: segfault at 7f2dfd94746c ip 00007f2dfc0becd8 sp 00007fffd0671d20 error 4 in libapt-pkg.so.4.12.0[7f2dfc069000+11c000] Aug 11 11:35:52 srv kernel: [65822.603384] apt-get[12820]: segfault at 7f7d256e346c ip 00007f7d24252cd8 sp 00007fffdbb89140 error 4 in libapt-pkg.so.4.12.0[7f7d241fd000+11c000] […] The post Fixing
10 Aug 2013
Here are the instructions for letting your home server send e-mails with help of your Uberspace account. This small guide is based on Ubuntu 13.04. I assume your Uberspace username is $USUSER and your Uberspace host is $USHOST. Setup an additional mail address See http://uberspace.de/dokuwiki/start:mail ssh $USUSER@$USHOST.uberspace.de vadduser local-server # […] The post Use your Uberspace server as relay host…
9 Aug 2013
The lineup for BaRuCo 2013 looks amazing, with speakers such as Aaron Patterson, Katrina Owen, Sandi Metz, and Ruby’s inventor Yukihiro…
A behind-the-scenes look at the making of the Proofessor app. (This links out to viget.com)
8 Aug 2013
Every year at Bazaarvoice we bring on a new class of Summer interns and put them to work creating innovative (and educational) projects. At the beginning of the Summer interns choose from a list of projects and teams that interest them. From there they are embedded in a team where they spend the rest of […]
6 Aug 2013
This article attempts to show that Haskell [@Hudak:2007:HHL:1238844.1238856] performs reasonably well on numerical problems. When I started to do this, it seemed straightforward enough: pick a problem which admitted a numerical solution, find an algorithm and code it up. I chose the problem of orbital dynamics as I had always been fascinated by the precession … Continue reading Planetary Simulation…
Thanks to Little Bird Electronics I just picked up the recently released Cubieboard 2. For less than 90 bucks Australian you get the case, 4Gb of onboard NAND flash, a USB to serial adapter, USB to power adapter (althought you should use a real wall wart), and an adapter for the onboard SATA port which […]
5 Aug 2013
2 Aug 2013
For June 2013, my 30 day challenge was to record a second of video every day. I was inspired by Cesar Kuriyama’s wonderful TED talk about how he records a second of video every day. There’s a couple things Cesar said in his talk that really resonated with me: – “[A]s the days and weeks […]
1 Aug 2013
The WebRTC data channel allows you to establish a peer to peer connection and send data between two browsers, no backend required.
31 Jul 2013
What do you get when you lock 100+ engineers, product managers, designers and other techies in a building for 2 days and ask them to come up with new and creative ways to “unlock the power of our data”? Well, I could tell you, but then I would have to… yeah that’s top secret awesome […]
Back in February, I gave a presentation on Discourse and client side MVC at TechTalksTO. It wasn’t recorded, but I’ve taken the liberty of creating a video version of the presentation with an audio track. While the presentation is about Browser Applications, I take a large detour in the beginning to talk about Discourse and Forum software in general. Enjoy!
30 Jul 2013
Demystifying GPG encryption: A straightforward guide to the process.
How to build a real-time, iOS group messaging chat app with Objective-C with presence user detection
29 Jul 2013
28 Jul 2013
You know it: an old project gets reactivated because your customer needs a new feature or has found bug. Meanwhile, the responsible developers have been reassigned to new projects and have no time to finish the task. You are currently not at a 100 percent workload so you get the […] The post DevOps: Stop coding and get your stuff…
Note: This is a repost of my TechInferno Forum article from July 28th, 2013. Methods have changed and are somewhat easier these days. Make sure to check out that forum for more info. TLDR: By buying around $250 in commonly available parts, plus a video card, you can make the graphics of your 11” Macbook Air from 5X to 7X…
25 Jul 2013
Just a quick post on something I just discovered and found neat (I always find obscure C syntax interesting). I was trying to figure out how to use a C designated initializer, where a member was a pointer to another designated initializer. At this point, you need a compound literal. Just a quick background on C initialization: // verbosely create…
23 Jul 2013
For May 2013 I decided to try making a Chromebook Pixel my primary laptop. So how did it go? Well, the short version is that I’m still a happy Pixel user, almost three months after my one month challenge started. Previously, I was using a Thinkpad 420s running Goobuntu. In fact, I’ve been using Thinkpads […]
PubShare is an open source demo and tutorial showing you how to build WebRTC filesharing to share files entirely in a web browser with WebRTC.
Problem: Prove that for vectors $ v, w$ in an inner product space, the inequality $$\displaystyle |\left \langle v, w \right \rangle | \leq \| v \| \| w \|$$ Solution: There is an elementary proof of the Cauchy-Schwarz inequality (see the Wikipedia article), and this proof is essentially the same. What makes this proof stand out is its insightful…
22 Jul 2013
Yesterday I read the article written by Christoph and thought about updating my current installed CyanogenMod 9 with the current version. Here are the instructions (assuming, you have already CM installed): wget http://108.166.171.36/goodata/50d9ef8310a7cba36225d98a0a37ea26/51ec1e7a/devs/milaq/tenderloin/cm10.1/cm-10.1-20130721-UNOFFICIAL-tenderloin.zip wget http://108.166.171.36/goodata/5dc90f8102df2b869507ff02a7642a07/51ec1e4a/gapps/gapps-jb-20130301-signed.zip Restart the HP TouchPad and sele
There are a lot of people complaining about lousy software patents these days. I say, stop complaining, and start killing them. It took me about fifteen minutes… Read more "Victory Lap for Ask Patents"
21 Jul 2013
Upgrade your server without dropping connections: A guide to zero downtime upgrades.
20 Jul 2013
About a year ago I got into a discussion on Twitter with a couple of other cryptographers. The subject: why do so many software developers use lazy cryptography? The instigation for this discussion was actually a piece of malware – a popular, widespread botnet that forgot to use digital signatures to sign its control messages. Though … Continue reading TweetNaCl…
18 Jul 2013
17 Jul 2013
I realized that I didn’t mention this widely: my current 30 day challenge (July 2013) is not to read any news or social media. So no Twitter, Google News, Techmeme, Google+, Hacker News, Reddit, Imgur, etc. So if you’re wondering why I haven’t replied to a question, that’s the reason. I might still share a […]
15 Jul 2013
14 Jul 2013
Last time we worked through some basic examples of universal properties, specifically singling out quotients, products, and coproducts. There are many many more universal properties that we will mention as we encounter them, but there is one crucial topic in category theory that we have only hinted at: functoriality. As we’ve repeatedly stressed, the meat of category theory is in…
11 Jul 2013
It has not been long since the holy war between SQL and NoSQL database technologies faded, and now we see a new contender, NewSQL, rising. What is it? Will it cause another round of the war? Recently at Bazaarvoice we hosted an informational session on VoltDB, one of the better known NewSQL solutions, with several engineers and […]
10 Jul 2013
How to build a real-time photo sharing app with PubNub and the Cloudinary API
9 Jul 2013
The first Music Hack Day — organized by our very own Dave Haynes — was held in July 2009 in London, UK. Since then there have been over 3…
8 Jul 2013
This post is a compliment to one I wrote in August of last year, updating it for Go 1.1. Since last year tools such as goxc have appeared which go a beyond a simple shell wrapper to provide a complete build and distribution solution. Introduction Go provides excellent support for producing binaries for foreign platforms […]
7 Jul 2013
This package has been superseded. Please read this blog post for more details. Introduction The Go runtime has built in support for several types of profiling that can be used to inspect the performance of your programs. A common way to leverage this support is via the testing package, but if you want to profile […]
Computed Properties By design, Handlebars templates don’t allow complex expressions. You are given an {{#if}} block helper, but it can only evaluate whether something is “truthy” (aka true, a non-empty string or array or other value that is not undefined or null.) For example, you can’t do something like this: {{#if (eyes.length == 1) && (horns.length == 1) && flies…
5 Jul 2013
Problem: Given a data stream of unknown size $ n$, pick an entry uniformly at random. That is, each entry has a $ 1/n$ chance of being chosen. Solution: (in Python) import random def reservoirSample(stream): for k,x in enumerate(stream, start=1): if random.random() < 1.0 / k: chosen = x return chosen Discussion: This is one of many techniques used to…
3 Jul 2013
If you’ve done nothing wrong, then you’ve got nothing to hide. Wrong. Nothing ever justifies giving up your human rights , especially to prove lack of wrong doing, and any government that asks you to do so is not your friend. Terrorism has become a weapon used against us by those elected to lead to keep us compliant, like blinders…
2 Jul 2013
This evening I rebuilt my unofficial ARM tarball distributions to Go version 1.1.1. You can find them by following the link in the main header of this page.
1 Jul 2013
At Bazaarvoice, we strongly believe that our people are our most important asset. We hire extremely smart and passionate people, let them loose on complex problems, and watch all the amazing things they create. We had another opportunity to see that innovation engine in full effect last week at our internal technical conference and 2 […]
Just under two years ago, we started Firefox OS as the Boot to Gecko (B2G) project, with little more than a belief that the Web should be the only platform you need to build an open mobile device ecosystem. This vision was so compelling that we found ourselves on a rocket, joined by developers and … Continue reading "Firefox OS…
Back in the 90s, the heart of a computer was the CPU. The faster the CPU, the better the computer was–you could do more, and the speed of the CPU directly affected your productivity. People upgraded their computers or bought new ones whenever they could to take advantage of faster CPU speeds. I remember the […]
The Go language is one of my favorite programming languages. However, sometimes doing simple things can seem a bit harder than it should. However, most of the time, the problem is just to find out how to do things the easy way. While Go’s documention isn’t bad, the real key to finding out how to do things is often to…
30 Jun 2013
This post continues a series on the testing package I started a few weeks back. You can read the previous article on writing table driven tests here. You can find the code mentioned below in the https://github.com/davecheney/fib repository. Introduction The Go testing package contains a benchmarking facility that can be used to examine the performance […]
29 Jun 2013
GenCar.co is a multiplayer version of GenCar, which uses genetic algorithms to test and improve simple racing cars on a randomly generated track
28 Jun 2013
We are pleased to announce a new open source contribution, a Java based JSON to JSON transformation tool named Jolt. Jolt grew out of a BV Platform API project to migrate the backend from Solr/MySql to Cassandra/ElasticSearch. As such, we were going to be doing a lot of data transformations from the new ElasticSearch JSON […]
Guest Post: Torus-Knotted Baklava at Baking And Math, a blog by my friend and colleague, Yen.
27 Jun 2013
This demo and tutorial shows you how to build a WebRTC file transfer application enabling you to send files entirely in a web browser with WebRTC.
26 Jun 2013
The WebRTC SDK is now available on PubNub for WebRTC signaling, voice, and video calling.
About a year ago I wrote a short post urging Apple to publish the technical details of iMessage encryption. I’d love tell you that Apple saw my influential crypto blogging and fell all over themselves to produce a spec, but, no. iMessage is the same black box it’s always been. What’s changed is that suddenly people seem to … Continue…
Some time ago, I posted here about a simple project that I’ve done in my post-graduation classes. Since I need it in other projects, and also some friends ended up using it in small projects, I decided to evolve it a little bit.
Engineers love to improve things. Refactoring and optimizations drive us. There is just a slight problem: we often do that in a vacuum. Before optimizing, we need to measure. Without a solid baseline, how can you say that the time you invested in making things better wasn’t a total waste? True refactoring is done with a solid test suite in…
24 Jun 2013
Hi all! Today I am starting a post series about Design Patterns. I have wrote about them a lot but only suggesting you to learn about to be a better developer. I am studying them, so nothing better to write about and improve my knowledges too. I only ask you to read everything to understand … Continue reading Design Patterns…
23 Jun 2013
A few days ago, I was wondering if using Go would be worth it when developing new web APIs. I obviously knew that Go would be faster than Ruby, but I wasn’t sure how much faster. I also wondering about the amount of work required to write get a full API implemented. I therefore wrote the same web API in…
22 Jun 2013
Greetings all! In the world of SaaS, wiser men than I have referred to Operations as the “Secret Sauce” that distinguishes you from your competition. As manager of one of our DevOps teams, I wanted to talk to you about how Bazaarvoice uses the cloud and how we engineer our systems for maximum reliability. You […]
It seems to be quite a long time since I’ve written a genuine "code" blog post. Time to fix that. This material may well be covered elsewhere – it’s certainly not terrifically original, and I’ve been meaning to post about it for a long time. In particular, I remember mentioning it at CodeMash in 2012. … Continue reading Array covariance:…
21 Jun 2013
Hello again! It’s my second post today! I’m electric! I am developing a project that uses a package I’m developing too. So, it is a real time test project. I find a new way to do something and write it inside my package and uses that. But sometimes this is a boring work. I am … Continue reading Testing your…
Hi guys! Everyone wants to contribute in some way with developers. Maybe you’re thinking in a project to develop and share but you search at Google and find someone who already did that. Maybe the answer to this problem is in front of you. Everything you do can be reused in a future project. If … Continue reading Contributing with…
This year before NDC, I wrote an article for the conference edition of "The Developer" magazine. Follow that link to find the article in all its illustrated glory (along with many other fine articles, of course) – or read on for just the text. Back when I used to post on newsgroups I would frequently … Continue reading But what…
20 Jun 2013
19 Jun 2013
As you may recall from almost six weeks ago, we held the Safari-like third-party cookie patch, which blocks cookies set for domains you have not visited according to your browser’s cookie database, from progressing to Firefox Beta, because of two problems: False positives. For example, say you visit a site named foo.com, which embeds cookie-setting … Continue reading "The Cookie…
Important Update (May 25, 2014): Google has started parsing and indexing Javascript. The approach of this article is to use <noscript> tags but Google will likely ignore those now. We upgraded our site to sniff Google and other popular search engines and serve our simple content that way. However, in the future it might not be a concern as Google…
18 Jun 2013
Folks at Google get cold-call emails out of the blue just like everybody else. Here’s an email that a colleague of mine got recently: I was on your website www.google.com and wanted to shoot you a quick note. I think I can make a few changes (aesthetically and/or SEO – wise) to make your site […]
In late May the Bazaarvoice team was delighted to speak again as a part of Database Month in New York City, and we were excited to speak about our recent work with Cassandra & Elastic Search. We discussed our goals for replacing the Bazaarvoice data infrastructure, as well as our hopes for the new system, […]
17 Jun 2013
Over the past week or so there’s been a huge burst of interest in encryption software. Applications like Silent Circle and RedPhone have seen a major uptick in new installs. CryptoCat alone has seen a zillion new installs, prompting several infosec researchers to nearly die of irritation. From my perspective this is a fantastic glass of lemonade, if one made…
16 Jun 2013
Problem: Determine if a number is prime, with an acceptably small error rate. Solution: (in Python) import random def decompose(n): exponentOfTwo = 0 while n % 2 == 0: n = n/2 exponentOfTwo += 1 return exponentOfTwo, n def isWitness(possibleWitness, p, exponent, remainder): possibleWitness = pow(possibleWitness, remainder, p) if possibleWitness == 1 or possibleWitness == p - 1: return False…
15 Jun 2013
Recently I got together with some local developers to discuss client side MVC frameworks. We ended up discussing many of the differences between AngularJS and Ember. Discourse is an Ember application and has been since the first prototype, so I have a lot of experience with it. However, it became clear during the conversation with my peers that there was…