~/devreads

2 Dec 2017

Stanko 1 min read

Two days ago I released two npm packages, window-scroll-manager and react-window-decorators. Scroll manager # Scroll managerPlx uses the same scroll manager so I extracted it to the standalone package. is just a simple wrapper around scroll event, that broadcasts custom window-scroll event once per requestAnimationFrame. Idea comes from MDN. React decorators # or higher order components are the bees knees,…

30 Nov 2017

3 min read

What is the output of this small snippet that is based on real C++ code? #include <iostream> struct Foo { Foo() { std::cout << "standard" << std::endl; } Foo(const Foo&) { std::cout << "copy" << std::endl; } Foo(int) { std::cout << "int" << std::endl; } Foo(int, int) { std::cout << "int, int" << std::endl; } Foo(const Foo&, int) { std::cout…

Dave Cheney 2 min read

At a recent RubyConf, Chad Fowler presented his ideas for writing software systems that mirror the process of continual replacement observed in biological systems. The first principal of this approach is, unsurprisingly, to keep the components of the software system small–just as complex organisms like human beings are constituted from billions of tiny cells which […]

programmingsmall ideas

Gareth Morgan 1 min read

The Thoughtworks Technology Radar is intended to showcase our opinion on the most important tech trends we see today. This article will dive into the Trial ring, exploring the blips in this edition that weren’t in Trial before.So why look at what’s moved into Trial? For a start, we know from analytics of our interactive Radar, blips in Trial always…

29 Nov 2017

Mike Mason 1 min read

Twice a year we create the Thoughtworks Technology Radar, an opinionated look at what’s happening in the enterprise tech world. It’s a detailed look at tools, techniques, languages and platforms and we generally call out over one hundred individual ‘blips.’ Creating the Radar involves a significant chunk of our senior techies from around the globe, and as we discuss individual…

28 Nov 2017

jonskeet 4 min read

For a while, I’ve been considering how useful nuget.org statistics are. I know there have been issues in the past around accuracy, but that’s not what I’m thinking about. I’ve been trying to work out what the numbers mean at all and whether that’s useful. I’ve pretty sure an older version of the nuget.org gallery … Continue reading NuGet package…

general

lukaseder 1 min read

jOOQ is a very backwards compatible product. This doesn’t only mean that we keep our own API backwards compatible as well as possible, but we also still support Java 6 in our commercial distributions. In a previous blog post, I’ve shown how we manage to support Java 6 while at the same time not missing … Continue reading How to…

javaanimal snifferbackwards compatibilityjava 6java 7

Stanko 1 min read

This is a sad rant :( I love Firefox (and Mozilla too) and have never switched to ChromeAlthough I use Chrome for development. But few days ago I switched to Opera, because new Firefox's (aka Quantum) CPU usage is insane. Disabling extensions didn't help, it just hogs all available resources. MacOS is giving me "Service Battery" warning when Firefox is…

Laura Dietze 1 min read

Managers and team members often have common goals during the project lifecycle. All are interested in change, either technology, or process, or even business models. Independent of the final direction, there are some fundamental prerequisites to consider even prior the project start which sometimes requires a change in mindset and project set-up.

27 Nov 2017

Stanko 1 min read

Muffin Man is back! This time with new visual identity. This was long overdue, but new design took me more than I wanted to.Mostly because of the trillion things I'm working on. Now I can get back to writing. Alogn with the new design, some other things got updated too, hopefully making content easier to browse. To name a few:…

26 Nov 2017

Henrik Warne 7 min read

It is now more than 6 years since I started blogging about software development. It has been a great experience, and I thought I would reflect on what I have learnt. So here are my reasons for writing about programming, … Continue reading →

uncategorizedblogging

3 min read

I’ve been a bit bad at posting things with a regular cadence lately, partly because I’m trying to adjust to having a toddler, partly because the hunt for clicks has caused such a high bar for me that I feel like I have to post something Pulitzer-worthy. But things are always cooking, so let’s break this pattern with a quick…

25 Nov 2017

1 min read

I spoke about how we migrate our monitoring infrastructure to Prometheus & Friends, what we got out of it and how it is working for us right now.

24 Nov 2017

Gillian "Gus" Andrews 1 min read

Human error is one of the toughest things to guard against when planning digital security. It’s the single biggest attack surface in digital systems. And yet, security and user-experience (UX) design are generally not considered in tandem — in fact, security and usability are sometimes seen as enemies. That needs to change.

23 Nov 2017

22 Nov 2017

Timur Celikel 3 min read

The four of us (Charisse, Jan, Paulo & Timur) arrived early for coffee. Right before the first talk in the morning we were welcomed by a very happy DJ. As it turned out later, he embedded snippets of the talks in his songs of vastly different genres in the breaks. Over the course of the […]

designhow we work

Paula Paul, Zhamak Dehghani 1 min read

Executives at established companies know the challenge. To remain relevant and competitive in today’s digital world, it’s essential to modernize their companies’ aging technology. Part of the challenge is knowing where to start and how to go about it without disrupting day-to-day business operations.

21 Nov 2017

1 min read

I showed how to build and release binaries in Go, including cross-compiling, Docker images, Linux packages and Homebrew, featuring GoReleaser on the end.

32 min read

A statement I commonly hear in tech-utopian circles is that some seeming inefficiency can’t actually be inefficient because the market is efficient and inefficiencies will quickly be eliminated. A contentious example of this is the claim that companies can’t be discriminating because the market is too competitive to tolerate discrimination. A less contentious example is that when you see a…

20 Nov 2017

lukaseder 1 min read

After the successful release of JDK 9, we can already look forward, and play around with early access releases of JDK 10. The list of JEPs currently targeted for JDK 10 is quite manageable so far. JEP 286 is probably the most exciting one for most Java developers: Local variable type inference (which we’ve blogged … Continue reading Using JDK…

javajava 10final varjep 286jooq

19 Nov 2017

Henrik Warne 5 min read

During my career as a software developer, I have seen the release frequency increasing steadily. When I started, it would take 12 to 18 months for new features to reach the customer. Years later the frequency increased, so deployment to … Continue reading →

workcontinuous deliverydeploymentdevops

17 Nov 2017

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