~/devreads

16 Nov 2017

JoJo Swords 1 min read

When it comes to campaigning for a change, it can be difficult to create the momentum needed to make a difference. Unless we are fortunate enough to be in a position of power or influence, we can struggle to make ourselves heard or to see any real progress towards our goal.

15 Nov 2017

14 Nov 2017

13 Nov 2017

Jonny LeRoy 1 min read

This is the second part of a two-part article. Read Part One here. Testing in production Given that setting up and maintaining fully production-like environments can get ever more costly and problematic there are various approaches for using production to gain confidence in how your evolving system will respond under load.

12 Nov 2017

10 min read

It's common knowledge that Android device tend to be more out of date than iOS devices, but what does this actually mean? Let’s look at android marketshare data to see how old devices in the wild are. The x axis of the plot below is date, and the y axis is Android marketshare. The share of all devices sums to…

11 Nov 2017

10 Nov 2017

Camilla Falconi Crispim 1 min read

It’s Radar season at Thoughtworks, which means we’re all working hard to get the next Technology Radar ready for release on November 30. During Radar season, sleeping is overrated.

9 Nov 2017

12 min read

About once a month, an app that I regularly use will change its UI in a way that breaks muscle memory, basically tricking the user into doing things they don’t want. Zulip In recent memory, Zulip (a slack competitor) changed its newline behavior so that ctrl + enter sends a message instead of inserting a new line. After this change,…

8 Nov 2017

Matthew Green 5 min read

(Warning: nerdy inside-baseball academic blog post follows. If you’re looking for exciting crypto blogging, try back in a couple of days.) If there’s one thing that academic computer scientists love (or love to hate), it’s comparing themselves to other academics. We don’t do what we do for the big money, after all. We do it … Continue reading A few…

academics

1 min read

Binary search is one of the most basic algorithms I know. Given a sorted list of comparable items and a target item being sought, binary search looks at the middle of the list, and compares it to the target. If the target is larger, we repeat on the smaller half of the list, and vice versa. With each comparison the…

7 Nov 2017

Schakko 4 min read

One of the common required tasks for an application using a persistence store is to initialize the underlying database with basic data sets. Most of the time this contains something like admin users or default roles. Setting the stage To give a proper example, we have the database table role […] The post How to programtically insert versionized initial data…

java

6 Nov 2017

lukaseder 1 min read

Usually, this blog is 100% pro window functions and advocates using them at any occasion. But like any tool, window functions come at a price and we must carefully evaluate if that’s a price we’re willing to pay. That price can be a sort operation. And as we all know, sort operations are expensive. They … Continue reading How to…

sqlorder byperformancesort operationsql performance

5 Nov 2017

jgamblin 1 min read

Like most security professionals I am spending a large amount of time helping my company move securely to AWS. Certificate management in AWS is done with AWS Certificate Manager and while they do offer *free* certificates, ACM generated certs are outside your direct control. You don’t get the keys which, at least for some things, should probably be a non-starter…

careersecurity

0xADADA 1 min read

system-font-i18n-css provides twelve variations for the Sans-serif family of system font. This font stack provides more consistent character typesetting across multiple languages and all modern operating systems. system-font-i18n-css is optimized to select the best system font on a per-character basis, based on the unicode range of that character. system-font-i18n-css provides twelve variations for the Sans-serif family of system font. This…

projectsopen-sourcetypographycssweb-development

4 Nov 2017

kevin 4 min read

It's a common, and distressing, pattern to have factories in tests that call out to a library like Faker to "randomize" the returned object. So you might see something like this: User.create({ id: uuid(), email: faker.random.email(), first_name: faker.random.firstName(), last_name: faker.random.lastName(), address: faker.random.address(), }); package = Package.create({ width: faker.math.range(100), height: faker.math.range(200), length: faker.math.range(300), }) This is […]

code

3 Nov 2017

2 Nov 2017

Jesper Joergensen 2 min read

In June we announced Heroku Shield with new high compliance features for Heroku Private Spaces. Heroku Shield enables businesses like AlignTech to deploy apps that handle protected healthcare information (PHI) in accordance with government regulations. Today, we are proud to announce that Heroku Shield Services have been validated as PCI Level 1 Service Provider compliant. […] The post Announcing PCI…

news

1 Nov 2017

Jesper Joergensen 2 min read

Two years ago, we introduced Heroku Private Spaces as a new platform abstraction that combines powerful network isolation features with the seamless developer experience of Heroku. Today we are announcing Heroku Private Space Peering, a new capability to connect the isolated Private Space network to apps and services in Amazon VPCs controlled by you. Now […] The post Announcing Heroku…

news

Kenney 7 min read

Foreword Our Curations engineering team makes heavy use of serverless architecture. While this typically gives us the benefit of reduced costs, flexibility, and rapid development, it also requires us to ensure that our processes will run within the tight memory and lifecycle constraints of serverless instances. In this article, I will describe an actual case […]

conferencesopen sourcesoftware architecturejavascriptlambda

lukaseder 1 min read

In this post, we’re going to discuss a couple of recent efforts to squeeze roughly 10% in terms of speed out of jOOQ by iterating on hotspots that were detected using JMC (Java Mission Control) and then validated using JMH (Java Microbenchmark Harness). This post shows how to apply micro optimisations to algorithms where the … Continue reading Squeezing Another…

javajooq-developmentbenchmarksjava 8java 9

31 Oct 2017

1 min read

This post is aimed at readers who are already familiar with stochastic gradient descent (SGD) and terms like “batch size”. For an introduction to these ideas, I recommend Goodfellow et al.’s Deep Learning, in particular the introduction and, for more about SGD, Chapter 8. The relevance of SGD is that it has made it feasible to work with much more…

30 Oct 2017

4 min read

There are often close relationships between top level business metrics. For instance, it’s well known that retention has a super strong impact on the valuation of a subscription business. Or that the % of occupied seats is super important for an airline. A fun little toy model that I can up with generates a curious relationship between conversion rates and…

29 Oct 2017

1 min read

It’s time for our next Jane Street Tech Talk. When we’ve solicited suggestions for topics, one common request has been to talk about our internal development process. Our next talk, How Jane Street Does Code Review, should fit the bill. The talk is being given by our own Ian Henry, and discusses how we approach code review, and in particular…

27 Oct 2017

Arif Gursel 1 min read

Need to quickly catch up on this past quarter's announcements? Here are the top three topics to tune in on: Heroku has expanded regions availability for Private Spaces and introduced the general availability of the Dublin region on September 26, 2017. Heroku users are able to run apps in all of the following Private Spaces […] The post FY18 Q3…

ecosystemadd-onsapiscloud infrastructurecustomers

Stanko 1 min read

Just wanted to share two articles that helped me understand visual design better. I was already aware of the most of these things, but having someone explain it how and why was really helpful. 7 Rules for Creating Gorgeous UI Optical Effects in User Interfaces (for True Nerds) Learn more about design # When asked how to learn more about…

26 Oct 2017

Robert Zare 4 min read

Today we are pleased to announce a significant update to Heroku Connect, one that is a culmination of two years of work to improve every aspect of the service. We’ve focused on three primary areas: improving write speed, geographically expanding the service, and intelligently guiding design and troubleshooting workflows. To that end, we’ve enabled bulk […] The post Heroku Connect…

newsdataheroku connectintegrationsperformance optimization

1 min read

We’ve developed a hierarchical reinforcement learning algorithm that learns high-level actions useful for solving a range of tasks, allowing fast solving of tasks requiring thousands of timesteps. Our algorithm, when applied to a set of navigation problems, discovers a set of high-level actions for walking and crawling in different directions, which enables the agent to master new navigation tasks quickly.

research

25 Oct 2017

24 Oct 2017

1 min read

In my last last post, I argued that property-based testing and fuzzing are essentially the same practice, or at least share a lot of commonality. In this followup post, I want to explore that idea a bit more: I’ll first detour into some of my frustrations and hesitations around typical property-based testing tools, and then propose a hypothetical UX to…

Stanko 1 min read

Just a quick proof of concept I made for transitioning between two react components. It animates height (of the parent) and fades components into each other. In componentWillReceiveProps it checks if children prop has changed. When that happens, it will save currently rendered children and the height of the wrapper. Then it will animate wrapper's height to a new component's…

23 Oct 2017

Matthew Green 8 min read

Before we get started, fair warning: this is going to be a post about a fairly absurd (but non-trivial!) attack on cryptographic systems. But that’s ok, because it’s based on a fairly absurd vulnerability. This work comes from Nadia Heninger, Shaanan Cohney and myself, and follows up on some work we’ve been doing to look … Continue reading Attack of…

attacksrngs

kevin 4 min read

There are a number of Unix commands that manipulate something about the environment or arguments in some way before starting a subcommand. For example: xargs reads arguments from standard input and appends them to the end of the command. chpst changes the process state before calling the resulting command. envdir manipulates the process environment, loading […]

code

20 min read

We’re going to reproduce some results from papers on filesystem robustness that were written up roughly a decade ago: Prabhakaran et al. SOSP 05 paper, which injected errors below the filesystem and Gunawi et al. FAST 08, which looked at how often filesystems failed to check return codes of functions that can return errors. Prabhakaran et al. injected errors at…

Kevin Flynn, Matt Harris 1 min read

As the birthplace of Bang & Olufsen, Lego and Pandora, Denmark seemed particularly well-suited to host Shoptalk’s first European conference. Retail leaders from around the globe descended on Copenhagen to hear 225 speakers from brands including Zalando, eBay and Alibaba. Thinking of attending next year? We were impressed by Shoptalk’s content, approach and variety of delegates. Here are our top…

22 Oct 2017

kevin 3 min read

Bazel is a build system that was recently open sourced by Google. Bazel operates on configuration files - a WORKSPACE file for your entire project, and then per-directory BUILD.bazel files. These declare all of the dependencies for your project, using a language called Skylark. There are a number of Skylark rules for things like downloading […]

code

20 Oct 2017

Jan Heuermann 8 min read

Whalecome to this blog post 🐳. I want to share with you how we use Docker at Small Improvements, how it helps us to get our everyday tasks done and what we learned from working with it. For starters, I added an introductory section about what Docker actually is – if you are already familiar with […]

infrastructurehow we work

Aaron Tushabe, Paula Paul 1 min read

Almost every business or technical analyst today understand the benefits of exposing business capabilities through APIs. But how can you best achieve this?

19 Oct 2017

1 min read

Our latest robotics techniques allow robot controllers, trained entirely in simulation and deployed on physical robots, to react to unplanned changes in the environment as they solve simple tasks. That is, we’ve used these techniques to build closed-loop systems rather than open-loop ones as before.

research

18 Oct 2017

17 Oct 2017

Camille Baldock 3 min read

Earlier this month, PostgreSQL 10.0 was released. Today, we are excited to announce PostgreSQL 10 is available in beta on Heroku, bringing a number of notable feature and performance improvements to our managed PostgreSQL database service. The beta provides customers who want to try out the new release an easy way to do so, while […] The post PostgreSQL 10…

newsdatabasepostgressql

lukaseder 1 min read

Welcome to the jOOQ Tuesdays series. In this series, we’ll publish an article on the third Tuesday every other month where we interview someone we find exciting in our industry from a jOOQ perspective. This includes people who work with SQL, Java, Open Source, and a variety of other related topics. I’m very excited to … Continue reading jOOQ Tuesdays:…

java 9jooq-tuesdaysjava 8jigsawmodules

16 Oct 2017

kevin 3 min read

It's easier than you think to make a software package installable via Homebrew. If you depend on a very specific version of a software package (say, Postgres 9.5.3 with readline support), I highly recommend creating a Homebrew repository and publishing recipes to it. Then your team can install and update packages as easily as: brew […]

code

Matthew Green 6 min read

The big news in crypto today is the KRACK attack on WPA2 protected WiFi networks. Discovered by Mathy Vanhoef and Frank Piessens at KU Leuven, KRACK (Key Reinstallation Attack) leverages a vulnerability in the 802.11i four-way handshake in order to facilitate decryption and forgery attacks on encrypted WiFi traffic. The paper is here. It’s pretty easy to read, … Continue…

uncategorized

17 min read

If you look at “gaming" keyboards, a lot of them sell for $100 or more on the promise that they’re fast. Ad copy that you’ll see includes: a custom designed keycap that has been made shorter to reduce the time it takes for your actions to register 8x FASTER - Polling Rate of 1000Hz: Response time 0.1 milliseconds Wield the…

7 min read

Growth in code bases come with exciting scalability challenges. As the size of our iOS codebase and team at SoundCloud grew, we faced challenges: long compile times and conflicts. Our productivity started to suffer as a result. We took inspiration from the work done in the backend (Building Products at SoundCloud) and applied it to mobile development. The main goal…

Alex Gibson 1 min read

Creating a home for people, however they identify, isn’t just about attracting them. It's about creating an environment where they feel welcome, respected, listened to and where interesting paths are open to them. It’s about retaining and creating opportunities for everyone - whatever kind of leader they are.

13 Oct 2017

12 Oct 2017

Emily Luke, Suzie Prince 1 min read

Using your own product consistently — or dogfooding — is a great technique for validating your work, especially when you fit the description of the target user. But it’s just not enough to create a great product. To do that, you need to talk to users and truly understand their needs, goals, and pains. That being said, it’s often easy…

11 Oct 2017

lukaseder 1 min read

What’s better? Using the JDK’s String.replace() or something like Apache Commons Lang’s Apache Commons Lang’s StringUtils.replace()? In this article, I’ll compare the two, first in a profiling session using Java Mission Control (JMC), then in a benchmark using JMH, and we’ll see that Java 9 heavily improved things in this area. Profiling using JMC In … Continue reading Benchmarking JDK…

javajava 8java 9apache commons langbenchmark

1 min read

We show that for the task of simulated robot wrestling, a meta-learning agent can learn to quickly defeat a stronger non-meta-learning agent, and also show that the meta-learning agent can adapt to physical malfunction.

research

1 min read

We’ve found that self-play allows simulated AIs to discover physical skills like tackling, ducking, faking, kicking, catching, and diving for the ball, without explicitly designing an environment with these skills in mind. Self-play ensures that the environment is always the right difficulty for an AI to improve. Taken alongside our Dota 2 self-play results, we have increasing confidence that self-play…

research

10 Oct 2017

9 Oct 2017

0xADADA 5 min read

In early 2015, I was working at an artificial intelligence startup. My team was planning to build a web application to connect to our neural network platform. The team as a whole had experience (on the AI–side) with Python, and the web team had a lot of experience using Django. We’d implemented a hybrid-app in Cordova using Backbone.js the previous…

essaysopen-sourcesoftware-developmentjavascriptframeworks

Evan Bottcher 1 min read

This year, I’ve given a lot of thought to what has made being a developer at Thoughtworks such an important part of my career and life. Much of it’s about working with great people, who default to trust and honesty, with a common drive to make a better software industry. When it comes to our craft of building software, I…

8 Oct 2017

jonskeet 8 min read

This is an odd one. I’m currently working on Cloud Firestore support for C#, and I’ve introduced a GeoPoint struct to represent a latitude/longitude pair, each being represented by a double. It implements IEquatable and overloads == and != in the obvious way. So far, so good, and I have working tests which have passed … Continue reading Diagnosing a…

diagnostics

7 Oct 2017

Stanko 17 min read

Last summer I wrote this post which quickly became my most popular one to day. With webpack 2 and 3 it got outdated, so I decided to write a new one. Before we start # I'll assume you have a basic knowledge of unix terminal, npm and JavaScript. You did some React, but now you want to level up and…

6 Oct 2017

5 Oct 2017

sharmeenrehan 8 min read

It was a couple of months or so ago when I came across this conference called FullStack Fest, skimming through the agenda, I was immediately intrigued and thought “I’ve got to check this out”. The coolest bit? The conference was taking part in the beautiful city of Barcelona. September finally came around, and just as […]

backendhow we work

4 Oct 2017