What is Duke? No one knows his species or genus. People say he’s a Java Bean or a Software Agent, but all we know for sure is that he reminds us of the more than twenty-year legacy of the Java language and its community. The Java community has such an affinity for Duke that designers […] The post Samurai Duke…
9 Jul 2019
Have you ever heard someone say that your code should be so well-understood that it should be read like a book? Those are the same…
Firefox 68 is available today, sporting support for big integers, whole-page contrast checks checks for accessibility, and a completely new implementation of a core Firefox feature: the ever-awesome URL bar. Dan Callahan also reports on updated CSS scroll-snapping and other features, DOM API updates, next steps in the WebRender implementation, and more. The post Firefox 68: BigInts, Contrast Checks, and…
Find out how DocuSign is using GoCardless to power subscription payments.
Welcome to another post in our series of how to use OCaml for machine learning. In previous posts we’ve discussed artistic style-transfer and reinforcement learning. If you haven’t read these feel free to do so now, we’ll wait right here until you’re done. Ready? Ok, let’s continue …
BuildCenter makes digital tools for builders. Learn how Serverless Guru helped them streamline their operations using Serverless Framework.
8 Jul 2019
In the previous article, I explained what data we needed to generate waveforms and showed how to use a BBC Free Open Source Software to generate that data. In this article, I will show how to draw a waveform using Google’s Flutter UI toolkit for mobile, desktop and web. Here is the end result will are going for: You can…
Last time on FAIC we were attacking our final problem in computing the expected value of a function f applied to a set of samples from a distribution p. We discovered that we could sometimes do a “stretch and shift” of … Continue reading →
About once a month I need a Kali VM to use for an hour or so, and I am terrible at keeping a VM up-to-date, so this weekend I took a few hours and built a tool to download automatically, provision and update a Kali Linux VM in Virtualbox. All the code for this project is in this Github Project.…
This article is based on my GopherCon Singapore 2019 presentation. In the presentation I referenced material from my post on declaring variables and my GolangUK 2017 presentation on SOLID design. For brevity those parts of the talk have been elided from this article. If you prefer, you can watch the recording of the talk. Readability […]
In this article we will provide an example of how to dynamically resize images with Ruby and the Serverless framework.
It’s easy to fall into the trap of thinking that when it comes to enterprise tech, there are few surprises left. After all, we all exist in a largely homogenous world where cloud, microservices and containers are the cornerstones of today’s leading businesses. In this world of known knowns, even the fiercest of rivals can follow almost identical tech strategies.
7 Jul 2019
In Object-Oriented Programming, we write a lot of classes. Classes contain properties (methods and attributes) which hold variables and…
5 Jul 2019
By making minimal changes to system files, you can increase the number of users serviced concurrently on EC2. This allows for fewer EC2 servers
By making minimal changes to system files, you can increase the number of users serviced concurrently on EC2. This allows for fewer EC2 servers
On the 17th of July I’ll be giving a version of my High Performance Go workshop updated for the upcoming changes in Go 1.13. The event is free, as in puppy, however numbers are limited due to the venue size. The event will be held in the Sydney CBD, the address will be provided to […]
What happened and what are we doing about it?
I haven't published anything in a while, which is a shame because I have a couple of good things to write about. That said, today's post is going to be a short one. I wasn't sure if theme is interesting enough. But in the end I decided to write it anyway. And it will help me get back in the…
New approaches to risk management continued: Are you getting these five things wrong too?
Thoughtworks InsightsRisk is everywhere, from the insignificant to the company killers (read Takata Corporation). Risk management is about understanding as much as we can about what we don't know; but knowing enough about what we can conceive or perceive to make informed decisions. It’s important to suspend judgement and start by simply understanding the catastrophes that may lie in wait for…
A deep dive into the concept of continuous delivery for machine learning (CD4ML) — an approach to delivering infrastructure that keeps increasing its intelligence.
4 Jul 2019
Last time, we talked about how to create a facade over our ORM using the Repository pattern. Today, we're talking a little bit about where…
3 Jul 2019
Originally published here June 2019, with discussions on Hackernews and Reddit. Melvin Conway is credited with that quote back in 1967. In…
I recently moved into a bigger condo which had a wall mount pre-installed in the bedroom for a TV, so I decided to take advantage of it and bought a second TV. Previously, I was using an Intel NUC attached to my TV and running LibreElec. If you’ve not heard of LibreElec, it’s a very cool minimal Linux OS that…
(If you have not yet watched the full series, beware: this writing is smart and full of spoilers)
In this article, we’ll explore common patterns of enterprise intelligence and identify the points of friction and opportunities for improvement in the Continuous Intelligence cycle.
2 Jul 2019
Part Two of ever-growing React Native chat tutorial series, covering chat history - storing, fetching and displaying historic chat messages in order
Part Two of ever-growing React Native chat tutorial series, covering chat history - storing, fetching and displaying historic chat messages in order
Recently I have been working on a project to use the Trivy container scanner to scan large swath of containers for open vulnerabilities that I wanted to quickly post here. There is a full blog about the project here on the Kenna site. Here are some of the pages I have built out so far: Top 1000 Popular Containers Scanned…
Pride is a word with many meanings. It can mean a job well done. It can mean satisfaction in who you are or what you stand for. For me, it is all of that and more. It is one of the values that runs deeply at Heroku and what keeps me here — pride in […] The post Pride Runs…
Learn how you can build a serverless GraphQL API for MySQL, Postgres and Aurora DB.
1 Jul 2019
Last time on FAIC we finally wrote a tiny handful of lines of code to correctly implement importance sampling; if we have a distribution p that we’re sampling from, and a function f that we’re running those samples through, we can compute … Continue reading →
Join the discussions on Hackernews and Reddit. Getters and setters (also known as accessors) were introduced to JavaScript when ECMAScript…
Multi-tenants is an architecture concept that can handle multiple projects in a single project container. If you look at popular sites like Nike.com or Mi.com, you will find out the project redirection based on the continent or country region. This post more about understanding the Angular 8 project package configuration, using this how are we leveraging the project for multi-tenant…
Given a static site, how do you get the real count of visitors?
For a company trying to sell and explain a product, a lot of this information was amazingly difficult to find so I wrote this. For the rest of this we'll assume you're cooking a steak but the same advice applies to most other meats/cuts. Why Do You Want A Torch to Sear Meat To get […]
Serverless Framework v1.46.0 - Extended ALB configurability, Support for external Websocket APIs, Local plugins via relative paths & More
ServerlessCheck out what’s included in Serverless Framework v1.46.
Having empathy for your stakeholders can mean many things. In our case, it meant taking something highly complex and making it look easy. Along the way, we realised there was a connection between learning to engage consortium members and learning to read philosophy. Take Heidegger for example.
30 Jun 2019
Now that WSL 2 packs a true Linux kernel and supports Linux containers (via Docker), it can be a perfect setup to perform application cross compilations.
This is a blog post I’ve intended to write for a very long time. (Other blog posts in that category include a recipe for tiramisu ice cream, and “knights and allies”.) It’s one of those things that’s grown in my mind over time, becoming harder and harder to start. However, there have been three recent … Continue reading Versioning limitations…
Previous posts in this series: Silent Duels and an Old Paper of Restrepo Silent Duels—Parsing the Construction Last time we waded into Restrepo’s silent duel paper. You can see the original and my re-typeset version on Github along with all of the code in this series. We digested Section 2 and a bit further, plotting some simplified examples of the…
29 Jun 2019
Geolocation returns the location of a connected device. We'll plot and update the data in real time as it changes on a live-updating map with Google Maps API
Geolocation returns the location of a connected device. We'll plot and update the data in real time as it changes on a live-updating map with Google Maps API
28 Jun 2019
With the Serverless Framework Enterprise v0.11.0 release, we are adding support for output variables and secrets management
Most, if not all our institutions need to be rethought from the ground up thanks to Great Rewrite of the planet. We first heard Leonard Brody talk about this concept at Thoughtworks ParadigmShift, an executive conference that brings together business and tech’s most influential thinkers. The main driver for this Great Rewrite is the disruption being caused to humans.
27 Jun 2019
Introducing the initial release of Firefox Preview (GitHub), an entire browser built from the ground up with GeckoView and Mozilla Android Components. Firefox Preview is our platform for building, testing, and delivering unique features. Though still an early preview, this is our first end-user product built completely with these new technologies. Plus, we share an update on where GeckoView is…
In this article we will provide an example of how to dynamically resize images with Python and the Serverless framework.
26 Jun 2019
Audio visualization is a fascinating topic. We often take it for granted, but sound isn’t visible and only exists over time. In the case of a video stream, you can pick a frame/image and you have a snapshot of the video at this specific time. But you can’t do that with sound. Sound is the oscillation/vibration of molecules over time,…
The web was designed with built-in features to make accessibility possible; these have been part of the platform pretty much from the beginning. In recent times, inspectable accessibility trees have made it easier to see how things work in practice. In this post we look at how “good” client-side code (HTML, CSS and JavaScript) improves the experience for users of…
Spring Boot is great to get started very quickly with what the Spring Boot authors have evaluated to be useful defaults. This can be a lot of help when you’re doing things for the first time, and have no way to copy paste working Maven pom.xml files from existing projects, for example. When working with … Continue reading How to…
This is a tutorial for Node.js devs about getting started with Go - while writing a server with net/http, encoding/json, envconfig & dependency management. The post Golang Tutorial for Node.js Developers, Part I.: Getting started appeared first on RisingStack Engineering.
25 Jun 2019
Better Software Design with Application Layer Use Cases | Enterprise Node.js + TypeScript
Khalil StemmlerThe term Use Case is used to describe one of the potential ways that our software can be used. Another word that's sometimes used is feature…
How do we build Serverless microservices as a team?
We have been collaborating with a large US based fashion retailer to improve their supply chain efficiency. One of the key factors that help solve supply chain puzzles is making sure online orders are fulfilled from the most profitable location – a warehouse or a store that maximizes the profit margin on the order. This is the responsibility of the…
24 Jun 2019
One more time! Suppose we have our nominal distribution p that possibly has “black swans” and our helper distribution q which has the same support, but no black swans. We wish to compute the expected value of f when applied to samples … Continue reading →
Part One of an ever-growing Reactnative chat tutorial series, covering basic messaging and setting up the chat UI.
Part One of an ever-growing Reactnative chat tutorial series, covering basic messaging and setting up the chat UI.
Security vs. convenience in the payment experience: What matters most to online shoppers?
GoCardlessWe surveyed 4,000 customers across the UK, France, Germany and Spain about their attitudes to security and convenience when shopping online.
At Thoughtworks we wanted to look deeper into the User Experience challenge of getting healthcare when a person is non-binary. Once we defined the problem space, we then looked at what could we do to make a change. Oh and like you didn’t see the pun coming! There are big changes needed, like lobbying NHS England to include Non-Binary (or…
21 Jun 2019
“I am a slow walker, but I never walk back.” — Abraham Lincoln And we’re back to our regularly scheduled programming! :) Before moving on to topics of recognizing and interpreting procedure calls, let’s make some changes to improve our error reporting a bit. Up until now, if there was a problem getting a new token from text, parsing source…
Media and playback are at the core of SoundCloud’s experience. For that reason, we have established and grown an engineering team that is specialized in providing the best possible streaming experience to our users across multiple platforms. To do this, we combine the industry’s best-fitting solutions with our own custom technologies, libraries, and tools. In this article, let’s dive into…
The evolution of geospatial data and modernising our platform to meet customer demand
Thoughtworks InsightsI recently had the pleasure of speaking at Thoughtworks Live about PSMA, geospatial data and the project we undertook with Thoughtworks.
20 Jun 2019
Implementing DTOs, Mappers & the Repository Pattern using the Sequelize ORM [with Examples] - DDD w/ TypeScript
Khalil StemmlerAlso from the Domain-Driven Design with TypeScript series. In Domain-Driven Design, there's a correct tool for every possible thing that…
Learn the factors to consider when choosing a database with Serverless applications and AWS Lambda
19 Jun 2019
There are many ways of deploying your applications to Heroku—so many, in fact, that we would like to offer some advice on which to choose. Each strategy provides different benefits based on your current deployment process, team size, and app. Choosing an optimal strategy can lead to faster deployments, increased automation, and improved developer productivity. […] The post Six Strategies…
Mozilla’s View Source Conference is back! This year we're in Amsterdam, September 30 – October 1, 2019. Tickets are available now. We’ve shifted our focus to take a deeper look at the web platform and how it is evolving and to offer attendees access to the folks who are shaping today's web and the web of the future. The post…
At Thoughtworks we wanted to look deeper into the User Experience challenge of getting healthcare when a person is non-binary. We set up an open event and invited widely across our networks. 25 people attended, and there was a wide age range, and experience of Non-Binary representation, although we had limited Black, Asian and Minority Ethnic (BAME) representation in the…
18 Jun 2019
The CSS Scroll Snap specification gives us a way in CSS to snap between different elements in a page or scrolling component. In this post, Rachel Andrew explains how scroll snapping works, why we had a situation where browsers were running different versions of the specification, and how that's changing. The post CSS Scroll Snap Updated in Firefox 68 appeared…
Data Protection Officer, Kasey, on scaling the GoCardless Privacy Programme.
This talk was presented at the Boston Ember.js Community meetup at Salsify, Inc about a unique usecase for deploying FastBoot in order to do server-side rendering of Ember applications at scale. I review traditional, single-page web applications, I discuss server-side rendering by introducing Ember FastBoot. I showcase our architecture and provide a quick summary of how we use FastBoot in…
17 Jun 2019
Last time on FAIC we deduced the idea behind the “importance sampling” technique for determining the average value of a function from double to double — call it f — when it is applied to samples from a possibly-non-normalized weighted distribution of … Continue reading →
If customers churn just as fast as they convert, your recurring revenue will never be able to reach its true potential. Download this guide for actionable tips on managing churn from seasoned SaaS leaders.
2019 has been a great year for Ember so far, so while my peers are focused on setting direction for the framework for the rest of 2019, I wanted to take stock of the existing addons ecosystem. In this article I’d like to present a list of Ember addons that I use in most of my projects. I’ve been using…
Serverless Framework v1.45.0 - ALB event source, API Gateway Websocket logs, S3 hosted deployment packages, Custom configuration file names & More
ServerlessCheck out what’s included in Serverless Framework v1.45.
We often focus a lot of our time on creating narrative as a best practice approach to writing user stories. For example, “As a... I want to… So that...”
15 Jun 2019
At the end of May I attended Nordic Testing Days in Tallinn, Estonia. It was the first time I spoke at a conference outside of Sweden, and I had a great time. There was one day with tutorials, and two … Continue reading →
14 Jun 2019
A major shift in in-app user experiences and expectations is driving a new technological trend that's shaping the on-demand economy.
A major shift in in-app user experiences and expectations is driving a new technological trend that's shaping the on-demand economy.
MapTiler is the proud partner of Red Bull X-Alps 2019, 2021, and 2023 for providing 3D terrain maps for live tracking
The new version of our open-source map publishing project OpenMapTiles 3.10 improves many water features, updates boundaries, brings new points of interest and adds four new languages.
13 Jun 2019
Domain Knowledge & Interpretation of the Single Responsibility Principle | SOLID Node.js + TypeScript
Khalil StemmlerIs domain knowledge needed for the Single Responsibility Principle? TLDR; yes, we have to care enough to understand the domain in order to…
PubNub Arduino SDK and PubNub MQTT gateway to send and receive data from a MKR1000 development board using a built-in ATWINC1500 WiFi module.
PubNub Arduino SDK and PubNub MQTT gateway to send and receive data from a MKR1000 development board using a built-in ATWINC1500 WiFi module.
PubNub Arduino SDK and PubNub MQTT gateway to send and receive data from a NodeMCU 1.0 development board using a built-in ESP8266 WiFi Module.
PubNub Arduino SDK and PubNub MQTT gateway to send and receive data from a NodeMCU 1.0 development board using a built-in ESP8266 WiFi Module.
How to: PubNub MQTT gateway to send and receive a 'Hello world' message from a NodeMCU-32S development board with a built-in ESP32 WiFi Module.
How to: PubNub MQTT gateway to send and receive a 'Hello world' message from a NodeMCU-32S development board with a built-in ESP32 WiFi Module.
PubNub Arduino SDK and PubNub MQTT Gateway to pub/sub data with two common WiFi modules included on Arduino-compatible development boards.
PubNub Arduino SDK and PubNub MQTT Gateway to pub/sub data with two common WiFi modules included on Arduino-compatible development boards.
Dimensions of Diversity – does being a ‘young company’ mean others are missing out?
Thoughtworks InsightsThoughtworks has a long-standing and intentional commitment to diversity and inclusivity that is a huge part of our social fabric. As a company, we’re committed to looking beyond age, recognising the maturity, life experience and critical foresight that our employees bring no matter what career or life stage they’re at. There are at times however, industry assumptions that older people…
11 Jun 2019
“As a data scientist, I am not expected to write clean code as most of what I write is throwaway.” I am a data scientist and I do not identify with this sentiment. I believe that clean code practices apply to the entire team, no matter the role. Let me tell you why - software development does not really need…
10 Jun 2019
Last time on FAIC we implemented a better technique for estimating the expected value of a function f applied to samples from a distribution p: Compute the total area (including negative areas) under the function x => f(x) * p.Weight(x) … Continue reading →
This essay is a derived from my dotGo 2019 presentation about my favourite feature in Go. Many years ago Rob Pike remarked, “Numbers are just numbers, you’ll never see 0x80ULL in a .go source file”. —Rob Pike, The Go Programming Language Beyond this pithy observation lies the fascinating world of Go’s constants. Something that is […]
Two new beautiful map styles - Topographique and Pastel - are available on MapTiler Cloud!
Vessy Tasheva, the founder of Vessy.com approached me while working on a report that she believed would help companies from around the world become more inclusive and diverse. The 2019 Diversity in the Workplace Report intends to inspire companies to understand, innovate and better serve global customers by recognizing diversity and inclusion as more than trending hashtags.
8 Jun 2019
At Google, our organization designs, owns, and maintains a number of optimization models that automate the planning of Google’s datacenter growth and health. As is pretty standard in supply chain optimization and planning, these models are often integer linear programs. It’s a core competency of operations research, after all. One might think, “Large optimization problems? That sounds hard!” But it’s…
7 Jun 2019
Over $85 billion spent on fixing bad code [bootcamps, junior devs, JavaScript, and software design principles]
Khalil StemmlerI came across an article recently from CNBC titled Tech's ultimate success: Software developers are now more valuable to companies than…
6 Jun 2019
Have you ever heard of the "clean architecture"? Maybe you've heard it by a different name... Clean Architecture, the Onion Architecture…
How to write a simple API is already an art on its own. I didn’t have time to write a short letter, so I wrote a long one instead. ― Mark Twain But keeping an API simple for beginners and most users, and making it extensible for power users seems even more of a challenge. … Continue reading How to…
New free vector data editor allows you to creating maps of your POIs, digitizing aerial maps, or creating thematic maps.
5 Jun 2019
The subgrid feature which is part of Level 2 of the CSS Grid Specification is not yet shipping in any browser, but is now available for testing in Firefox Nightly. This is a feature that, if you have used CSS Grid for a layout of any complexity, you are likely to be pretty excited about The post CSS Grid Level…