Welcome to the Mashery-powered Bazaarvoice Developer portal. We strive to give you the tools you need to develop cutting-edge applications on the Bazaarvoice platform. Some changes you’ll notice: You no longer have to login to see documentation. Just click the Expand icon () to drill down to the information you need. If you want to […]
1 Mar 2013
Every selector you write is additional complexity that will need to be maintained. Can you generalize or abstract that selector so other components can use it? Write your CSS selectors to be as concise as possible Write your CSS selectors to be as performant as possible, efficient as possible and even more efficient Don’t overqualify your CSS selectors Use the…
28 Feb 2013
In this post we’ll expand our toolbox of proof techniques by adding the proof by contradiction. We’ll also expand on our knowledge of functions on sets, and tackle our first nontrivial theorem: that there is more than one kind of infinity. Impossibility and an Example Proof by Contradiction Many of the most impressive results in all of mathematics are proofs…
Feb 2015: A lot’s happened since I wrote this post two years ago. Chrome forked WebKit and started Blink, Opera adopted Chromium, and node-webkit became nw.js. This post describes a complexity of defining WebKit that doesn’t exist much anymore; with Chrome’s departure the WebKit world is more simple and clear. WebKit is deployed through iOS Safari and Mac Safari, and…
Over the past few years, there’s been certain paradigm shifts in web development. When you think of milestones that really changed how development on the web was done, the two biggest were Ajax and HTML5. Development was identifiably different before and after such technological advancements. There were some who initially doubted the technologies, but I’m sure such doubters eventually saw…
27 Feb 2013
We, Kolja and Timur, attended the jQuery Europe conference in Vienna, Austria this year. We met Sebastian Helzle who used to be developer at Small Improvements about a year ago and contributed a lot back then. The baroque location was breathtaking; the Gartenparlais Liechtenstein (Liechtenstein Garden Palace) is spectacular, especially the room were speeches took […]
25 Feb 2013
Recently we ported Discourse from CoffeeScript to plain old Javascript. The process was straightforward since CoffeeScript spits out fairly good Javascript, although I did have to spend the better part of a day cleaning it up afterwards. (Note: we’d love any patches to further tidy up the generated Javascript.) One thing that CoffeeScript does by default that’s nice is it…
23 Feb 2013
It’s part of Haskell folklore that the archetypal example for comonads is Conway’s game of life. Here’s an implementation using arrays. > {-# OPTIONS_GHC -Wall #-} > {-# OPTIONS_GHC -fno-warn-name-shadowing #-} > {-# OPTIONS_GHC -fno-warn-type-defaults #-} > import Diagrams.Prelude > import Diagrams.Backend.Cairo.CmdLine > import Data.Array > import Data.List The usual comonad class: > class Comonad … Continue reading Comonads, Life…
"Google's grip on your digital life: A tongue-in-cheek journey through a day with the tech giant."
22 Feb 2013
In this post we’ll cover the second of the “basic four” methods of proof: the contrapositive implication. We will build off our material from last time and start by defining functions on sets. Functions as Sets So far we have become comfortable with the definition of a set, but the most common way to use sets is to construct functions…
Using the right technology is important to boost your development efficiency. But efficiency alone isn’t sufficient, you need to boost employee morale as well. Among the core ingredient to employee happiness are the company’s working conditions. And of course the office space itself plays a major role in that. We just moved into our new […]
20 Feb 2013
19 Feb 2013
We’re a tiny startup, and yet we’re able to compete with some heavy weight companies. For instance, our main competitor Rypple launched two years ahead of us, received millions in funding, was led by a team of experienced entrepreneurs and staff, and got acquired by Salesforce last year. We have: No funding, no entrepreneurs, mostly […]
18 Feb 2013
I recently finished the Coursera course Algorithms: Design and Analysis, Part 2 by Professor Tim Roughgarden of Stanford. I’ve already reviewed part 1, and here are my thoughts on the second part. The main theme of part 1 was the divide … Continue reading →
17 Feb 2013
Do you write forms on the Internet? Are you planning to send them to your server with Javascript? You should read this. The One-Sentence Summary It's okay to submit forms with Javascript. Just don't break the internet. What Do You Mean, Break the Internet? Your browser is an advanced piece of software that functions in […]
16 Feb 2013
I recently posted an exploratory piece on why programmers who are genuinely interested in improving their mathematical skills can quickly lose stamina or be deterred. My argument was essentially that they don’t focus enough on mastering the basic methods of proof before attempting to read research papers that assume such knowledge. Also, there are a number of confusing (but in…
Shortly after we began working together on Discourse, Jeff wrote a post about infinite scrolling. At first, I was surprised at how many people claimed to hate sites that used it. However, after reading through many comments about it, I realized that most didn’t hate the scrolling itself, they hated how it broke their browser! Infinite Scrolling done wrong: Twitter…
15 Feb 2013
[This is an extended essay on the news out of Norway yesterday. See the closing for encouragement toward Opera and its fans, whatever the open source projects they choose to join, from me on behalf of Mozilla. /be] Founder Flashback I wrote about the founding of HTML5 in June, 2004, without dropping that acronym, mentioning … Continue reading "Why Mozilla…
13 Feb 2013
A few days ago I finished my bachelor thesis with the title Integrating Xtext in an existing Software development process. I developed a domain specific language with Xtext and some extensions for easily adding new generators as new Eclipse plug-ins. After finishing the thesis I added a Maven Tycho based build […] The post Build and deploy your Xtext DSL…
12 Feb 2013
If you've ever tried to teach someone HTML, you know how hard it is to get the syntax right. It's a perfect storm of awfulness. Newbies have to learn all of the syntax, in addition to the names of HTML elements. They don't have the pattern matching skills (yet) to notice when their XML is […]
This is a transcript of the Kara Swisher / Jack Dorsey interview from 2/12/2019, made by parsing the original Tweets because I wanted to be able to read this linearly. There's a "moment" that tries to track this, but since it doesn't distinguish between sub-threads in any way, you can't tell the difference between end of a thread and a…
11 Feb 2013
10 Feb 2013
Path Dependency Now we are able to price options using parallelism, let us consider a more exotic financial option. Let us suppose that we wish to price an Asian call option. The payoff at time is Thus the payoff depends not just on the value of the underlying at time but also on the path … Continue reading Parallelising Path…
How should you design the controls for a shower? Let's take a quick look. Affordance A device should make clear by its design how to use it. Take a hammer for example. No one has ever looked at a hammer and wondered which end you are supposed to grab and which part you're supposed to […]
This week, I was delighted to finally reveal Discourse, the app I’ve been working on for most of the last year in secrecy with awesome people. The launch got a lot of attention - we were featured on Hacker News, Slashdot, Wired, Reddit, Techcrunch and countless other places. Personally I’ve been floored with the amount of feedback so far. It’s…
8 Feb 2013
We are pleased to announce that on March 1, 2013, we are moving our developer portal hosting to Mashery. What does this mean to you, our developer community: None of your existing API keys will be affected by this transition. They will continue to work without interruption. You no longer need to log in to […]
For those who aren’t regular readers: as a followup to this post, there are four posts detailing the basic four methods of proof, with intentions to detail some more advanced proof techniques in the future. You can find them on this blog’s primers page. Do you really want to get better at mathematics? Remember when you first learned how to…
Git has a lot of features, and I bet that 90% of who use it (including me) doesn’t know half of them. Well, maybe, someday, one of those “unknown features” can “save your life”.
7 Feb 2013
Play SQL is a an Atlassian Confluence plug-in for querying database tables and displaying the results inside a Confluence page. The plug-in has only native support for PostgreSQL and HSQL but other drivers can be used via a JNDI datasource. For using MySQL with Play SQL you have to download the […] The post Use Confluence Play SQL Plug-in with…
6 Feb 2013
5 Feb 2013
Rails 3.1 introduced the asset pipeline, which makes it easy to include versioned external assets as application dependencies.
4 Feb 2013
A common problem in machine learning is to take some kind of data and break it up into “clumps” that best reflect how the data is structured. A set of points which are all collectively close to each other should be in the same clump. A simple picture will clarify any vagueness in this: cluster-example Here the data consists of…
1 Feb 2013
Hey folks, I just finished January’s 30 day challenge: no news, no Twitter, fewer emails, and no social media in general. For February, my wife and I are trying a gluten-free, wheat-free month to see what that’s like. Okay, so how was January? I started with a week completely off the internet, which coincided with […]
30 Jan 2013
Today I struggled to get OmniAuth and Google apps to work properly together. I just wanted to add authentication to my application and restrict access to only my Google Apps domain users. I was hoping it would be straight forward since I could use Google’s OpenID service. Turns out it wasn’t that hard, but the lack of documentation made me…
29 Jan 2013
I've worked with Twilio's client libraries pretty much every day for the last year and I wanted to share some of the things we've learned about helper libraries. Should you have helper libraries? You should think about helper libraries as a more accessible interface to your API. Your helper libraries trade the details of your […]
28 Jan 2013
27 Jan 2013
26 Jan 2013
Hello! One of the most big changes happening in PHP world is the Composer. I’m shure you heard about it but maybe you don’t know why you should use it and how much it is good for you and your projects. What is Composer? When you need some specific code in PHP you can go … Continue reading Why you…
On an interview with Square, I made the mistake of stating that one of the benefits of working with JavaScript over C is that functions are first class in JavaScript, therefore they may be passed around. To which the interviewer replied, “Well, C can do that, what about function pointers?” What? Luckily, I was able to get out of that…
25 Jan 2013
Hello! Today I had to update a project that was developed using WordPress and PHP 5.3. Today I have PHP 5.4 installed on my machine and this newer version abandoned some old features, and you have some Fatal errors like Call-time pass-by-reference has been removed. The solution was go back to PHP 5.3 and do … Continue reading Working with…
24 Jan 2013
23 Jan 2013
Last weekend, we sponsored and attended our first PennApps, the world’s largest student run hackathon held at the University of Pennsylvania in Philadelphia. Nearly 500 students participated from a variety of universities across the US and elsewhere. Students were given 36 hours to get into teams, hack on projects, then show them off to the judges. The results were astounding.…
22 Jan 2013
Hello everyone! Use or not to use a PHP Framework on your new projects? Here I’ll talk about my personal opinion about that and I wish help you. First, I have a simple concept about languages and respectives frameworks: a framework must make the development simpler. Every software has a single purpose: work! This is … Continue reading Why you…
The graph is among the most common data structures in computer science, and it’s unsurprising that a staggeringly large amount of time has been dedicated to developing algorithms on graphs. Indeed, many problems in areas ranging from sociology, linguistics, to chemistry and artificial intelligence can be translated into questions about graphs. It’s no stretch to say that graphs are truly…
Since I’ve seen the new Basecamp, I fell in love with it.
19 Jan 2013
Last week, the Internet community lost a member in the on going war against the copyright industry. While I’ve never met the deceased, or even heard of the deceased before his suicide, I’m horrified. I’m horrified that the government we are asked to put so much faith in, would give someone, not that different from myself, such a ridiculous sentence.…
18 Jan 2013
Hi all! Last update April 5 2015! I’ll try use the new Yahoo! Mail for a while but I need my old emails messages. I am a Gmail user and want to copy everything to Yahoo! Mail. After search a lot at Google I found imapsync. It is a Linux program that runs on the … Continue reading Migrating emails…
17 Jan 2013
A short blog post to let everyone in the Mozilla community know the latest news. As the “About Brendan” sidebar says, I’m a founder of Mozilla, and since 2005 I have had the title of CTO. That job has entailed work on technical strategy, Web standards, influencing/partnering, Mozilla Research, public speaking, and talent-scouting. (Oh, and … Continue reading "Leading Mozilla:…
16 Jan 2013
We’re looking for a fulltime Junior Java Developer based in Berlin. Your first major task: Visit some of our clients in New York! Are you looking for a challenging job that involves some customer interaction too? You’ve come to the right place! While we build our software in Berlin and don’t really have to visit […]
ShitRedditSays and The Downvote Brigades of Reddit (note: if you’re familiar with reddit and ShitRedditSays, you can skip to the next section.) As you probably know, Reddit is a site that revolves around voting. All users are encouraged to vote on things, which are then prioritized based on their total scores. Over time, Reddit’s userbase has grown a lot. It…
15 Jan 2013
As I mentioned in my last post the current Xtext DSL I am working on provides annotation support. Every artifact generator plug-in can provide additional annotations which influences the generation process of different artifacts. My unit tests were all green but at runtime in Eclipse/OSGi environment I received the following […] The post Processing annotations in Xtext and receiving “Could…
C99 brings the magic: Keyword arguments in C!
We are pleased to announce that the following functionality has been developed for version 5.4: Submission forms pre-filled for non-anonymous users Full text search on all UGC and on includes Product family queries Photo upload accepts URLs Brightcove Smart Player Javascript integration Story rating field exposed in the response Special product attributes exposed in the response […]
14 Jan 2013
It’s all about closures. Understanding scope is paramount to coding. What can you access and what can’t you access. Closures allow us to access variables that otherwise might be awkward to pass into a function. Closures can help us out of tricky situations, but can confuse those from backgrounds with (typically) statically typed languages that may not support closing over…
13 Jan 2013
12 Jan 2013
Being part of the subject of algebraic topology, this post assumes the reader has read our previous primers on both topology and group theory. As a warning to the reader, it is more advanced than most of the math presented on this blog, and it is woefully incomplete. Nevertheless, the aim is to provide a high level picture of the…
Today I implemented the last feature of my bachelor thesis and struggled upon a small problem: My DSL makes use of XAnnotation to annotate various grammar elements. The generators can extend the DSL by introducing new annotations which can be used for modifying the generation process of the resulting fragments. […] The post Accessing the values of an annotation inside…
11 Jan 2013
Congratulations to Marcos Caceres, Yehuda Katz, Alex Russell, and Anne van Kesteren on the news of their election to the W3C Technical Architecture Group (TAG). This is great news: four out of the five reformers won. Back-story: in late 2010, TBL invited me to join the TAG. I declined with thanks for two reasons: I … Continue reading "TAG, You’re…
10 Jan 2013
A story of a game exploit Once upon a time I developed a somewhat popular web game called Forumwarz. At its peak, we were serving about 6 million dynamic requests a day off a single quad-core server. Forumwarz limits how many turns a player can take in a day. We designed it this way so that the competitive aspect of…
8 Jan 2013
6 Jan 2013
Turbolinks Turbolinks is a new Ruby library, enabled in Rails 4 by default, that is designed to speed up your web applications. It does this by binding a Javascript handler to all link clicks. Instead of allowing the browser to load the new page, it fetches it in the background via AJAX. It then parses out the body, and injects…
5 Jan 2013
Can we get better performance for pricing financial options in Haskell? First let us translate our pricer using the Explicit Euler Method to use repa. {-# LANGUAGE FlexibleContexts, TypeOperators #-} {-# OPTIONS_GHC -Wall -fno-warn-name-shadowing -fno-warn-type-defaults #-} import Data.Array.Repa as Repa import Data.Array.Repa.Eval import Control.Monad r, sigma, k, t, xMax, deltaX, deltaT :: Double m, n, … Continue reading Option Pricing…
4 Jan 2013
It is a wonder that we have yet to officially write about probability theory on this blog. Probability theory underlies a huge portion of artificial intelligence, machine learning, and statistics, and a number of our future posts will rely on the ideas and terminology we lay out in this post. Our first formal theory of machine learning will be deeply…
3 Jan 2013
Recently, I wrote a short essay on privilege and programming. It was quite popular on /r/programming and generated hundreds of comments, both there and on this blog. I was surprised and flattered to see the majority of the comments agreed with my post, however a few people brought up a concern which I’d like to address: Why this is person…
31 Dec 2012
Optimize your life: Balancing career, family, and purpose with business-school wisdom.
The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog. Here’s an excerpt: About 55,000 tourists visit Liechtenstein every year. This blog was viewed about 170,000 times in 2012. If it were Liechtenstein, it would take about … Continue reading →
30 Dec 2012
The end of the year is a perfect time to think about goals. Did you get done what you wanted in 2012? What do you want to accomplish in 2013? Instead of setting year-long goals, I’m a big fan of trying out new things for a month at a time: This month I’m going to […]
When I was in grade 6, I handed out a couple of 3 1/2" floppy disks to a couple of friends in my class whose parents had recently purchased PCs. On each disk was a game I created. You’d fly a ship horizontally through outer space. It had two controls, up and down, to avoid asteroids. The longer you survived…
22 Dec 2012
The First Isomorphism Theorem The meat of our last primer was a proof that quotient groups are well-defined. One important result that helps us compute groups is a very easy consequence of this well-definition. Recall that if $ G,H$ are groups and $ \varphi: G \to H$ is a group homomorphism, then the image of $ \varphi$ is a subgroup…
20 Dec 2012
Update (2016): The more canonical writeup of this technique is at High Performance Animations - HTML5 Rocks. TL;DR: Only transform & opacity; never top/left! In modern days we have two primary options for moving an element across the screen: using CSS 2D transforms and translate() using position:absolute and top/left Chris Coyier was asked why you should use translate. Go read…
19 Dec 2012
I recently did a presentation at the Berlin Java User Group, during which I summarised the past two years that we’ve been operating Small Improvements on the Google App Engine platform. Some things went great, others not so much. Here are the slides (German only) [slideshare id=15704136&w=510&h=410&sc=no]
18 Dec 2012
So, I just bought “Seven Languages in Seven Weeks”. I’ve read the Ruby chapter, not a big deal at all, so I skipped it. I also skip Io, Prolog and Scala (for now), and then, fall in Erlang!
16 Dec 2012
After a while using Jekyll Bootstrap, I just realized that it was so much bloated. Then, few days ago, I forked the old Zach Holman’s blog, and started to tweak my own theme based on theirs (that now is opensource). At first, I like it, but after a while, I just start thinking that it had a “old style” design.
15 Dec 2012
So, I just compiled a little list of things that, I believe, make me dislike Java everyday a little more.
13 Dec 2012
Hi! Today I’ll talk a practice that changed my life. Since when I work developing web applications I used to work with FTP to send files to server. Forget using FTP for that and welcome to the GIT world. GIT became famous after the launch of GitHub website. GIT is a version control tool used … Continue reading Deploying/Upload applications…
12 Dec 2012
I recently gave a presentation on what it is like to work as a software developer to first-year engineering students at KTH taking an introductory programming course. I wanted to give my view on the main differences between professional software … Continue reading →
10 Dec 2012
9 Dec 2012
Neurons, as an Extension of the Perceptron Model In a previous post in this series we investigated the Perceptron model for determining whether some data was linearly separable. That is, given a data set where the points are labelled in one of two classes, we were interested in finding a hyperplane that separates the classes. In the case of points…
8 Dec 2012
The study of groups is often one’s first foray into advanced mathematics. In the naivete of set theory one develops tools for describing basic objects, and through a first run at analysis one develops a certain dexterity for manipulating symbols and definitions. But it is not until the study of groups that one must step back and inspect the larger…
4 Dec 2012
This post assumes familiarity with our primer on Kolmogorov complexity. We recommend the uninformed reader begin there. We will do our best to keep consistent notation across both posts. Kolmogorov Complexity as a Metric Over the past fifty years mathematicians have been piling up more and more theorems about Kolmogorov complexity, and for good reason. One of the main interpretations…
Search is front-and-center in the new SoundCloud, key to the consumer experience. We’ve made the search box one of the first things you see…
2 Dec 2012
Define the Ramsey number $ R(k,m)$ to be the minimum number $ n$ of vertices required of the complete graph $ K_n$ so that for any two-coloring (red, blue) of the edges of $ K_n$ one of two things will happen: There is a red $ k$-clique; that is, a complete subgraph of $ k$ vertices for which all edges…
27 Nov 2012
The structure of a programming language reflects the challenges and solutions the designers decided to address. Each designer coming with his/her own background decides to tackle some specific issues in a novel way and/or often decides to borrow existing paradigms from other languages. We can’t, then, fairly judge a language without understanding what problem the language designer was trying to…
26 Nov 2012
A couple of days ago I wrote about how to build a simple and non intrusive AJAX status with CoffeeScript in RubyOnRails.
23 Nov 2012
My desktop