~/devreads

3 Apr 2019

Dave Cheney 1 min read

A short talk about unit testing that I gave at the Go London User Group last month. Links: Slides Playlist of videos from the March meetup

go

5 min read

Once every two weeks, we prepare new versions of our mobile apps to be published to the app stores. Being confident about releasing software at that scale — with as many features and code contributions as we have and while targeting a wide range of devices like we do at SoundCloud — is no easy task. So, over the last…

Kevin Telford 1 min read

In my previous post, I looked at why a ‘trust mantra” is not enough to stop customers from leaving if they feel their trust has been abused. To succeed, integrity needs to be an intrinsic part of your business; this means laying the foundations, serving customers the way they want, building confidence through useful services, and being proactive on their…

2 Apr 2019

ericlippert 3 min read

Before that silly diversion I mentioned that we will be needing the empty distribution; today, we’ll implement it. It’s quite straightforward, as you’d expect. [Code for this episode is here.] public sealed class Empty<T> : IDiscreteDistribution<T> { public static readonly Empty<T> Distribution = new Empty<T>(); private Empty() { } public T Sample() => throw new Exception(“Cannot sample from empty distribution”);…

uncategorizedfixing random

1 Apr 2019

ericlippert 4 min read

I just thought of a really cute application of the stochastic workflow technology we’ve been working on; most of the series has already been written but it fits in here, so I’m going to insert this extra bonus episode. We’ll … Continue reading →

uncategorizedfixing random

Sathyan Sethumadhavan 1 min read

Truth be told, we experience self-service every single day of our lives - when we buy shoes online, withdraw cash from an ATM, self-checkout at supermarkets and more. And this model’s growing popularity makes it obvious that a growing number of tech-savvy, self-reliant customers, including the millennial generation clearly prefer the do-it-yourself model.

30 Mar 2019

Henrik Warne 4 min read

Is programming like math, or is it like writing? I think there are elements of both in it, even though programming is a discipline of its own. Nevertheless, it is interesting to think about what aspects are like math, and … Continue reading →

programmingmathwriting

29 Mar 2019

Shweta Jain 1 min read

Your last Big Data investment has most probably run into a data quality wall, but you’ve managed to declare the investment a success. All while knowing that it could have been a bigger value add. Don’t worry because you’re not alone in this (mis)adventure.

28 Mar 2019

27 Mar 2019

jonskeet 17 min read

Note: this is a pretty long post. If you’re not interested in the details, the conclusion at the bottom is intended to be read in a standalone fashion. There’s also a related blog post by Lau Taarnskov – if you find this one difficult to read for whatever reason, maybe give that a try. When … Continue reading Storing UTC…

generalnoda time

26 Mar 2019

Wade 5 min read

There’s obviously more to security than humans, technology, and vendors with all of their implementations and expertise. At Heroku we believe that security is a byproduct of excellence in engineering. All too often, software is written solely with the happy path in mind, and security assurances of that software has its own dangerous assumptions. A […] The post Bug Bounties…

engineeringpostgressecuritysecurity incidents

lukaseder 1 min read

What’s a good natural key? This is a very difficult question for most entities when you design your schema. In some rare cases, there seems to be an “obvious” candidate, such as a variety of ISO standards, including: ISO 639 language codes ISO 3166 country codes ISO 4217 currency codes But even in those cases, … Continue reading The Cost…

sqlclustered indexheap tableindex organised tableinnodb

25 Mar 2019

21 Mar 2019

Becky Jaimes 3 min read

After a successful two-month Beta period, PostgreSQL 11 is now the default version for all new provisioned Heroku Postgres databases. All Postgres extensions, tooling, and integration with the Heroku developer experience are ready to use, giving you the power of PostgreSQL 11 with the ease and usability of Heroku for building data-centric applications. We’d like […] The post PostgreSQL 11…

newsdatabasepostgressql

1 min read

We’ve made progress towards stable and scalable training of energy-based models (EBMs) resulting in better sample quality and generalization ability than existing models. Generation in EBMs spends more compute to continually refine its answers and doing so can generate samples competitive with GANs at low temperatures, while also having mode coverage guarantees of likelihood-based models. We hope these findings stimulate…

research

8 min read

In the past, the Search Team at SoundCloud had high lead times for making updates to Elasticsearch clusters, either during the implementation of a new feature or simply while fixing a bug. This was because both tasks require us to reindex our catalog from scratch, which means reindexing more than 720 million users, tracks, playlists, and albums. Altogether, this process…

Wisen Tanasa 1 min read

Serverless architecture has fast become a hot topic in tech, thanks partly to its promise of drastically reducing your time-to-market. Nonetheless, many IT leaders remain cautious about serverless because of their fears over vendor lock-in. In this article, I’ll explore the realities of what lock-in means in the context of serverless — and propose strategies to minimize your risks.

20 Mar 2019

Amy Unger 25 min read

This blog post is adapted from a talk given by Amy Unger at RailsConf 2018 titled "Knobs, buttons & switches: Operating your application at scale." We've all seen applications that keel over when a single, upstream service goes down. Despite our best intentions, sometimes an unexpected outage has us scrambling to make repairs. In this […] The post Seven Ways…

engineeringdeveloper toolsperformance optimizationrailsruby

19 Mar 2019

18 Mar 2019

Kevin Telford 1 min read

Banking is indisputably an industry in a transformational era if not undergoing a revolution. The forcible overthrow of the old ways and in with the new is underway. The force of change precipitated with diminished trust, legislation, changing behaviours and economic events has left behind a legacy. The revolutionary impact on banking brings massive change. New entrants are not shackled…

Anirban Ghosh 1 min read

It’s like a scene out of Cartoon Network’s Dexter’s Laboratory. The boy genius, Dexter is busy hacking away at his next tech innovation while his mischief-monger sister, Dee Dee tiptoes into the lab. She says, "Oooh, what does this button do?" As she’s about to press the big red button, Dexter pleads with her not to. He says, “Please Dee…

17 Mar 2019

15 Mar 2019

lukaseder 1 min read

I stumbled upon a very interesting jOOQ question on Stack Overflow that required the calculation of a weighted average. Why is that. Problem description Assuming you have this database (using PostgreSQL syntax): As can be seen, this schema is slightly denormalised as the number of lines per transaction are precalculated in the transactions.lines column. This … Continue reading Calculating Weighted…

sqlaverageaverage after joinavgweighted average

14 Mar 2019

lukaseder 1 min read

When configuring a jOOQ runtime Configuration, you may add an explicit Settings instance, which contains a set of useful flags that change jOOQ’s SQL generation behaviour and other things. Example settings include: Object qualification (generate schema.table.column or just table.column) Identifier style (to quote or not to quote) Keyword style (UPPER, lower, or Pascal Case for … Continue reading How to…

jooq-in-useidentifier styleidentifiersinformixjooq

13 Mar 2019

12 Mar 2019

kevin 1 min read

The phone number for the SFMTA Temporary Sign Office is very difficult to find. The SFMTA Temporary Sign web page directs you to 311. 311 does not know the right procedures for the Temporary Sign Office. The email address on the website is also slow to get back to requests. The Temporary Sign department address […]

tips and tricksusability

11 Mar 2019

1 min read

We’ve created OpenAI LP, a new “capped-profit” company that allows us to rapidly increase our investments in compute and talent while including checks and balances to actualize our mission.

company

10 Mar 2019

Aiko Klostermann 1 min read

Ever burgeoning digital data combined with impressive research has lead to a rising interest in Machine Learning or ML, which has further powered a vibrant ecosystem of technologies, frameworks, and libraries in the space.

8 Mar 2019

0xADADA 5 min read

A browser extension adds features to a web browser. They’re created using standard web technologies— JavaScript, HTML, and CSS. Extensions can run JavaScript permanently in the background or can run on any page the user visits. Extensions can also specify popup windows and options pages. All modern browsers increasingly support a standard called the WebExtensions API. This API provides extensions…

projectsopen-sourcewebextensionsweb extensionsbrowser extensions

7 Mar 2019

Shlok Amin 1 min read

For anybody beginning a career as a software developer, we often make assumptions about how to succeed — assumptions that often turn out to be hopelessly wrong. As I've discovered over the last year, growth opportunities present themselves in all sorts of surprising ways, and I wanted to share my experiences, with the hope that you too can learn from…

6 Mar 2019

1 min read

We’ve created activation atlases (in collaboration with Google researchers), a new technique for visualizing what interactions between neurons can represent. As AI systems are deployed in increasingly sensitive contexts, having a better understanding of their internal decision-making processes will let us identify weaknesses and investigate failures.

safety alignment

Christine Dodrill 7 min read

Progressive web apps (or PWAs) enable websites to function more like native mobile apps in exchange for some flexibility. You get cross-platform native mobile app functionality (or close to it) without all the overhead of app store approvals and tons of platform-specific native code. Users can install a progressive web app to their home screen […] The post PWA Tutorial:…

engineeringapp architecturedeveloper toolsjavascriptlanguages

5 min read

Last month we launched SoundCloud Premier Distribution, which allows creators to distribute their music from SoundCloud to many other…

4 Mar 2019

1 min read

We’re releasing a Neural MMO, a massively multiagent game environment for reinforcement learning agents. Our platform supports a large, variable number of agents within a persistent and open-ended task. The inclusion of many agents and species leads to better exploration, divergent niche formation, and greater overall competence.

research

2 Mar 2019

Stanko 1 min read

Let me start with a little disclaimer. Just because you can, doesn't mean you should use it. Hiding scrollbars can be bad for accessibility and user experience. But there are rare cases where it makes sense, usually when you have scrolling effects or when modal is opened. So use it wisely. Check the demo. And find the cross browser code…

28 Feb 2019

Mars Hall 4 min read

The recent introduction of Platform Events and Change Data Capture (CDC) in Salesforce has launched us into a new age of integration capabilities. Today, it's possible to develop custom apps that respond to activity in Salesforce. Whether you're creating a memorable customer interaction or implementing an internal workflow for employees, consider an event-sourced design to […] The post Reactive Programming…

engineeringdata analyticsdeveloper toolsnode.jssalesforce

1 min read

Jane Street is sponsoring this year’s MakeMIT hackathon, and we wanted to create a prize for the winners that would do justice to the maker spirit of the competition. As makers ourselves – it’s not unusual to find a “software” engineer here who hacks on FPGAs or who has a CNC machine at home – it felt natural to get…

1 min read

At Jane Street, over the last few years, we’ve been increasingly exploring machine learning to improve our models. Many of us are fascinated by the rapid improvement we see in a wide variety of applications due to developments in deep learning and reinforcement learning, both for its exciting potential for our own problems, and also on a personal level of…

27 Feb 2019

Richard Schneeman 7 min read

Debugging is an important skill to develop as you work your way up to more complex projects. Seasoned engineers have a sixth sense for squashing bugs and have built up an impressive collection of tools that help them diagnose and fix bugs. I’m a member of Heroku’s Ruby team and creator of CodeTriage and today […] The post Debugging in…

engineeringdeveloper toolsrailsruby

26 Feb 2019

Babitha Rakesh 1 min read

According to PwC, almost two million women in the UK are inactive due to caring commitments, and 76% of women on career breaks want to return to work. Read about the experience of Babitha, a Lead Consultant at Thoughtworks who got back into the tech industry through the Back to IT training program.

25 Feb 2019

Stanko 3 min read

Exactly ten years ago, on my my friend's blog I published a blog post about Internet Explorer 6 CSS hacks. I remembered it recently, and thought it would be really cool if I republished that same post, on it's 10th anniversary. I added comments about the hacks from today's perspective to give you some context. Cited parts are from the…

22 Feb 2019

jgamblin 1 min read

With the 2019 RSA Conference fastly approaching I thought I would take a few minutes and put together a quick list of what I am excited to see this year. Sunday BSides San Francisco How to Build an Application Security Program (Presenting) Automating Web Application Bug Hunting (Presenting With @JCran) Monday RSAC Innovation Sandbox Contest CSA Summit BSides San Francisco…

uncategorized

3 min read

One of the first things you stumble on when you start using TensorFlow.js is that sometimes you need your data as a Tensor, and sometimes you need it as a JavaScript number. Maybe it’s for logging it, maybe it’s for displaying it somewhere during training, maybe it’s because you don’t trust the robots to be better than you at math.…

21 Feb 2019

Joe Kutner 9 min read

This blog post is adapted from a talk given by Joe Kutner at Devoxx 2018 titled “10 Mistakes Hackers Want You to Make.” Building self-defending applications and services is no longer aspirational–it’s required. Applying security patches, handling passwords correctly, sanitizing inputs, and properly encoding output is now table stakes. Our attackers keep getting better, and […] The post Ten Ways…

engineeringjavasecurity

Emily Namugaanyi 1 min read

After successfully delivering a recent project, my Client Principal shared that he believed that I needed only a small push to move up a grade, and be considered a senior consultant at Thoughtworks. This was great feedback; however, I was not sure what had changed.

20 Feb 2019

19 Feb 2019

1 min read

We’ve written a paper arguing that long-term AI safety research needs social scientists to ensure AI alignment algorithms succeed when actual humans are involved. Properly aligning advanced AI systems with human values requires resolving many uncertainties related to the psychology of human rationality, emotion, and biases. The aim of this paper is to spark further collaboration between machine learning and…

safety alignment

26 min read

A recurring discussion in Overwatch (as well as other online games) is whether or not women are treated differently from men. If you do a quick search, you can find hundreds of discussions about this, some of which have well over a thousand comments. These discussions tend to go the same way and involve the same debate every time, with…

18 Feb 2019

Luciano Mammino 12 min read

This article shows how to quickly build web app prototypes using Fastify for the backend API and Preact for the frontend UI. It also covers how to dockerize the app for easy sharing. Key points are the plugin architecture of Fastify, the lightweight nature of Preact, and the use of htm for defining UI without transpilation.

javascriptnode-jsfastifyreactdocker

17 Feb 2019

Dave Cheney 2 min read

The open source projects that I contribute to follow a philosophy which I describe as talk, then code. I think this is generally a good way to develop software and I want to spend a little time talking about the benefits of this methodology. Avoiding hurt feelings The most important reason for discussing the change you want […]

programmingsmall ideascontributingopen source

Jeff Atwood 5 min read

When we started Discourse in 2013, our server requirements were high: 1GB RAM modern, fast dual core CPU speedy solid state drive with 20+ GB I’m not talking about a cheapo shared cpanel server, either, I mean a dedicated virtual private server with those specifications. We

cloud computingdiscourse

kevin 7 min read

Three years ago I quit my job and started consulting full time. It's worked out really well. I get to spend more time doing things I like to do and I've been able to deliver great products for clients. I wanted to go over some tips for starting a successful consulting business. Charge more - […]

code

15 Feb 2019

14 Feb 2019

lukaseder 1 min read

A fun report to write is to calculate a cumulative percentage. For example, when querying the Sakila database, we might want to calculate the percentage of our total revenue at any given date. The result might look like this: Notice the beautifully generated data. Or as raw data: payment_date |amount |percentage -------------|--------|---------- 2005-05-24 |29.92 |0.04 … Continue reading How to…

sqlcumulative percentagecumulative sumwindow functions

1 min read

We’ve trained a large-scale unsupervised language model which generates coherent paragraphs of text, achieves state-of-the-art performance on many language modeling benchmarks, and performs rudimentary reading comprehension, machine translation, question answering, and summarization—all without task-specific training.

research

11 Feb 2019

Matthew Green 18 min read

A few days ago I had the pleasure of hosting Kenny Paterson, who braved snow and historic cold (by Baltimore standards) to come talk to us about encrypted databases. Kenny’s newest result is with first authors Paul Grubbs, Marie-Sarah Lacharité and Brice Minaud (let’s call it GLMP). It isn’t so much about building encrypted databases, as it … Continue reading…

attacksdatabases

lukaseder 1 min read

jOOλ is our second most popular library. It implements a set of useful extensions to the JDK’s Stream API, which are useful especially when streams are sequential only, which according to our assumptions is how most people use streams in Java. Such extensions include: … and many more. Collectors But that’s not the only thing … Continue reading Lesser Known…

java 8joocollectorsfunctional programming

Kiran Prakash, Lucy Chambers 1 min read

Artificial intelligence and machine learning are currently all the rage. Every organization is trying to jump on this bandwagon and cash in on their data reserves. At Thoughtworks, we’d agree that this tech has huge potential — but as with all things, realizing value depends on understanding how best to use it.

10 Feb 2019

jonskeet 7 min read

Background: Noda Time and C# 8 Note: this blog post was written based on experimentation with Visual Studio 2019 preview 2.2. It’s possible that some of the details here will change over time. C# 8 is nearly here. At least, it’s close enough to being “here” that there are preview builds of Visual Studio 2019 … Continue reading NullableAttribute and…

c#c# 8noda time

9 Feb 2019

Stanko 2 min read

Few days ago, I was chatting with our design team, and we were wondering how hard would be to create a fake audio spectrum (that mimics human speech) and visualize it. I immediately said it should be easy, and that I will play with it over the weekend. Of course, I didn't wait for the weekend, but wrote it the…

8 Feb 2019

7 Feb 2019