background preloader

20 lines of code that will beat A/B testing every time

20 lines of code that will beat A/B testing every time is a drop-in solution that lets users draw on your web site. A/B testing is used far too often, for something that performs so badly. It is defective by design: Segment users into two groups. Show the A group the old, tried and true stuff. Show the B group the new whiz-bang design with the bigger buttons and slightly different copy. After a while, take a look at the stats and figure out which group presses the button more often. In recent years, hundreds of the brightest minds of modern civilization have been hard at work not curing cancer. With a simple 20-line change to how A/B testing works, that you can implement today, you can always do better than A/B testing -- sometimes, two or three times better. It can reasonably handle more than two options at once.. The Multi-armed bandit problem The multi-armed bandit problem takes its terminology from a casino. Like many techniques in machine learning, the simplest strategy is hard to beat. Why does this work? More blog entries

How do you review code? I'm hoping to find ways to improve the code review process at the company where I work. My team has a fairly has a fairly standard github PR-based process. When you have some code you want to merge into the master branch you open a PR, ask another developer or two to review it, address any comments they have, and then wait for one of the reviewers to give it an LGTM (looks good to me). The problem is that there can be a lot of lag between asking someone to review the PR and them actually doing it, or between addressing comments and them taking another look. Worst of all, you never really know how long things will take, so it's hard to know whether you should switch gears for the rest of the day or not. Over time we've gotten used to communicating a lot, and being shameless about pestering people who are less communicative. So, has anyone else run I to similar problems?

Nick Craver - Stack Overflow: How We Do Deployment - 2016 Edition This is #3 in a very long series of posts on Stack Overflow’s architecture. Previous post (#2): Stack Overflow: The Hardware - 2016 Edition We’ve talked about Stack Overflow’s architecture and the hardware behind it. The next most requested topic was Deployment. How do we get code a developer (or some random stranger) writes into production? I’m going ahead and inserting a set of section links here because this post got a bit long with all of the bits that need an explanation: Source This is our starting point for this article. A Little Context We deploy roughly 25 times per day to development (our CI build) just for Stack Overflow Q&A. The Human Steps When we’re coding, if a database migration is involved then we have some extra steps. And here’s the local %Repo%\StackOverflow.Migrations\ folder: You can see both in chat and locally that 726 was the last migration number taken. Now let’s add some code — we’ll keep it simple here: A \StackOverflow\Models\User.cs diff: .. So far, so good. Tiers

Rule of Silence definition by The Linux Information Project The rule of silence, also referred to as the silence is golden rule, is an important part of the Unix philosophy that states that when a program has nothing surprising, interesting or useful to say, it should say nothing. It means that well-behaved programs should treat their users' attention and concentration as being valuable and thus perform their tasks as unobtrusively as possible. That is, silence in itself is a virtue. There is no single, standardized statement of the Unix philosophy, but perhaps the simplest description would be: "Write programs that are small, simple and transparent. This philosophy has been fundamental to the the fact that Unix-like operating systems have been thriving for more than three decades, far longer than any other family of operating systems, and can be expected to see continued expansion of use in the years to come, particularly in the form of Linux. The rule of silence is one of the oldest and most persistent design rules of such operating systems.

The Wrong Abstraction — Sandi Metz I originally wrote the following for my Chainline Newsletter, but I continue to get tweets about this idea, so I'm re-publishing the article here on my blog. This version has been lightly edited. I've been thinking about the consequences of the "wrong abstraction." My RailsConf 2014 "all the little things" talk included a section where I asserted: duplication is far cheaper than the wrong abstraction And in the summary, I went on to advise: prefer duplication over the wrong abstraction This small section of a much bigger talk invoked a surprisingly strong reaction. The strength of the reaction made me realize just how widespread and intractable the "wrong abstraction" problem is. Programmer A sees duplication.Programmer A extracts duplication and gves it a name. Existing code exerts a powerful influence. When you appear in this story in step 8 above, this pressure may compel you to proceed forward, that is, to implement the new requirement by changing the existing code. News: 99Bottles Book

Extreme Programming Rules Planning User stories are written. Release planning creates the release schedule. Make frequent small releases. The project is divided into iterations. Iteration planning starts each iteration. Managing Give the team a dedicated open work space. Set a sustainable pace. A stand up meeting starts each day. The Project Velocity is measured. Move people around. Fix XP when it breaks. Designing Simplicity. Choose a system metaphor. Use CRC cards for design sessions. Create spike solutions to reduce risk. No functionality is added early. Refactor whenever and wherever possible.

Knuth: Computer Programming as an Art CACM, December 1974 When Communications of the ACM began publication in 1959, the members of ACM'S Editorial Board made the following remark as they described the purposes of ACM'S periodicals [2]: "If computer programming is to become an important part of computer research and development, a transition of programming from an art to a disciplined science must be effected." Such a goal has been a continually recurring theme during the ensuing years; for example, we read in 1970 of the "first steps toward transforming the art of programming into a science" [26]. Meanwhile we have actually succeeded in making our discipline a science, and in a remarkably simple way: merely by deciding to call it "computer science." Implicit in these remarks is the notion that there is something undesirable about an area of human activity that is classified as an "art"; it has to be a Science before it has any real stature. In this talk I shall try to explain why I think "Art" is the appropriate word. Summary

do not use debuggers Date: Wed, 6 Sep 2000 12:52:29 -0700 (PDT) From: Linus Torvalds <> To: Tigran Aivazian <> Subject: Re: Availability of kdb On Wed, 6 Sep 2000, Tigran Aivazian wrote: > > very nice monologue, thanks. It would be great to know Linus' opinion. I> mean, I knew Linus' opinion of some years' ago but perhaps it changed? He> is a living being and not some set of rules written in stone so perhaps> current stability/highquality of kdb suggests to Linus that it may be> (just maybe) acceptable into official tree? hemanth/functional-programming-jargon: Jargon from the functional programming world in simple terms!