There are abundant resources online trying to scare programmers away from using shell scripts. Most of them, if anything, succeed in convincing the reader to blindly put something that resembles
11 May 2017
Geoeditor is a simple online app for collaborative creating and editing of basic geographical data - just draw points, polygons and lines on top of the maps directly in a web browser.
Serverless Product Manager Brian Neisler gives tips for overcoming provider lock-in to create more portability and freedom in your Serverless projects.
10 May 2017
Our new GeoEditor mobile app brings comfortable drawing tools, importing own maps into mobile devices, various base maps, standardized data formats, and much more!
Async variable support added in Serverless v1.13 for enhanced configuration & secret management
ServerlessAsync Serverless variables, Cross-Service communication, Lambda tags and more in the Serverless Framework v1.13 release.
9 May 2017
At EmberConf Terence Lee and I had a chance to sit down with Tom Dale and chat about the history of Ember.js and where it’s headed now, including some details on the newly extracted Glimmer.js rendering engine. This post details a lot of the history of Ember, including some of the motivation that led the […] The post The History…
I was recently asked in an interview about my opinion on how to be a great programmer. That’s an interesting question, and I think we can all be great programmers, regardless of our talent, if we follow a couple of rules that – I believe – should be common sense. In fact, these rules don’t … Continue reading 10 Tips…
Another tech meetup coming up. This time we have three great talks about engineering and project planning. We also have a special guest - IT girls team. The IT Girls team will share their advances in promoting the professional development of women in technology in Serbia. This one will be held on Tuesday, May 16th at Impact Hub Belgrade. See…
This is the third article in a four part series on the steps needed to innovate and turn your financial services institution into an intelligent enterprise. Click to read Part 1 and Part 2.
8 May 2017
The Difficulty of Tuning Queries Over a Database Link – Or How I Learned to Stop Worrying and Love the DUAL@LINK Table
jOOQA large-ish customer in banking (largest tables on that particular system: ~1 billion rows) once decided to separate the OLTP database from the “log database” in order to better use resources and prevent contention on some tables, as the append-only log database is used heavily for analytic querying of all sorts. That seems to make … Continue reading The Difficulty…
Let’s Build A Simple Interpreter. Part 14: Nested Scopes and a Source-to-Source Compiler.
Ruslan SpivakOnly dead fish go with the flow. As I promised in the last article, today we’re finally going to do a deep dive into the topic of scopes. This is what we’re going to learn today: We’re going to learn about scopes, why they are useful, and how to implement them in code with symbol tables. We’re going to learn…
You might have heard that you shouldn't be using JWT. That advice is correct - you really shouldn't use it. In general, specifications that allow the attacker to choose the algorithm for negotiation have more problems than ones that don't (see TLS). N libraries need to implement M different encryption and decryption algorithms, and an […]
In the first section of this two-part series, we looked briefly into the state of IT teams before the DevOps movement gained traction, and some skills that might be useful to those looking to get into infrastructure work. In this section, we will explore different variations of DevOps teams I’ve seen, as well as, their positives and advantages. DevOps In…
5 May 2017
A roundup of serverless and FaaS links that caught our attention this week.
4 May 2017
As I continue to try to learn R, I am trying to build tools that other people might find useful. Tonight with the help of Bob Rudis I built a script that will find domains with a keyword in it from DomainPunch, do a geoip lookup and map it if it is online. Since it is time to start thinking…
FaunaDB's Chris Anderson walks through extending the popular todo list serverless-crud example app to allow sharing and collaboration on lists.
Technology is moving our world at hyper speed and most businesses are scrambling to keep pace – from how they engage with customers to how they plan, respond and position for the future. Every day, leaders – whether digital natives or business veterans – wake up to a new landscape and to new decisions for which there are no precedents.…
3 May 2017
In SQL, quite often, we want to compare several values with each other. For instance, when we’re looking for a specific user by their first and last names, we’ll write a query like this one: We’re getting: CUSTOMER_ID FIRST_NAME LAST_NAME ------------------------------------ 8 SUSAN WILSON Surely, everyone agrees that this is correct and perfectly fine as … Continue reading Don’t Use…
European businesses and consumers have unique preferences when it comes to paying for goods and services online. Optimizing the payment process allows US companies to beat their competition and capture these customers, who are ready and willing to spend.
A wish list for bringing databases up to speed in the era of serverless application development.
2 May 2017
The Heroku Connect team ran into problems with existing task-scheduling libraries. Because of that, we wrote RedBeat, a Celery scheduler that stores scheduled tasks and runtime metadata in Redis. We’ve also open-sourced it so others can use it. Here is the story of why and how we created RedBeat. Why We Created the RedBeat Celery […] The post Hello RedBeat:…
For me, becoming a Tech Lead was not something that happened one day, or even after a planned transition. It was something that I now realize started way back in my internship during college. Being a Tech Lead is something that you grow into, often because other leaders gave you a safe space to practice leadership, and you observed them…
"When we talk about the Internet of Things, it's not just putting RFID tags on some dumb thing so we smart people know where that dumb thing is. It's about embedding intelligence so things become smarter and do more than they were proposed to do", said Nicholas Negroponte, Chairman Emeritus of Massachusetts Institute of Technology's Media Lab and founder of…
History is rife with inflection points, like the Brexit decision in the United Kingdom, or the 2016 election in the United States. Sometimes these events are instantly recognized as historic turning points, other times recognition comes slowly. One such slowly evolving inflection point began in the early 2000’s and has accelerated in the last 5 years—the transition from a cost-driven…
1 May 2017
Update: I’m excited to say that we’ve now hired a (great!) technical writer, so the position is closed.
Jared Short from Trek10 joins us to share his take on the serverless ecosystem and where it's going.
Earlier, we shared a set of questions and answers from our recent webinar, “I am a Technologist, Not a Female Technologist”, with presenters Dr Rebecca Parsons, Thoughtworks CTO, and Dr Susan Davis-Ali, Vice President of Organizational Transformation at ABI. While that post focused on actionable tips and advice for the technologist, we know that action must come from all directions…
30 Apr 2017
Since I have started looking at the Umbrella DNS Popularity List I was interested in seeing how much the data changes day to day. I fired up RStuido and wrote some terrible code but finally got it to work with some help. Yesterday there were 80937 new DNS names on the list that were not on the list the day…
I set out to learn about Azure Functions and this is the knowledge I have gathered so far. To have something to work with, I decided to migrate the ASP.NET Core Web API for “My latest online activities” to Azure Functions. As background, refer to these related blog posts: Getting started with React Continuous Delivery with Visual Studio Team Services…
In my previous post I showed that Go maps are not reference variables, and are not passed by reference. This leaves the question, if maps are not references variables, what are they? For the impatient, the answer is: A map value is a pointer to a runtime.hmap structure. If you’re not satisfied with this explanation, read on. What […]
29 Apr 2017
Recently I started looking at the Umbrella DNS Popularity List and did a blog post about it here. The data seemed valuable and lacking at the same time so I spent my *limited* free time this week learning about R and RStudio. Protip: If you want to play along at home there is an RStudio docker container so all you…
My post on pointers provoked a lot of debate about maps and pass by reference semantics. This post is a response to those debates. To be clear, Go does not have reference variables, so Go does not have pass-by-reference function call semantics. What is a reference variable? In languages like C++ you can declare an alias, […]
28 Apr 2017
Need to quickly catch up on this past quarter's announcements? Here are the top three topics to tune in on: The new add-ons canary service will attempt to provision and deprovision your add-on service on an app named 'addons-canary'. These daily tests will help us proactively detect any failed provisioning attempts and ensure customers can […] The post FY18 Q1…
In my experience, code can rot in two distinct ways. The first case is code that hasn’t been used in a long time, but where the environment has changed so it is no longer possible to run the code. In … Continue reading →
We are running Kubernetes on both sandbox and production for some months now. Our production cluster is still small, with few services running on it, but, most of our sandbox environment is running on a Kubernetes cluster on AWS.
27 Apr 2017
Anything worth doing is worth overdoing. Before doing a deep dive into the topic of scopes, I’d like to make a “quick” detour and talk in more detail about symbols, symbol tables, and semantic analysis. In the spirit of “Anything worth doing is worth overdoing”, I hope you’ll find the material useful for building a more solid foundation before tackling…
The digitally-savvy customer has highly sophisticated - and ever-evolving - expectations for engagement and brand experience at every touchpoint. Delivering on and keeping up with these expectations requires an innovation-driven culture with customer value at its center. We’ve seen a common theme across our most successful client engagements: innovation and speed to market at scale requires more than just intense…
26 Apr 2017
Context and Higher Order Components: Two Immediately Applicable Topics from the Advanced React Workshop
BazaarvoiceThanks to Bazaarvoice I recently attended an “Advanced React Workshop” put on by React Training and taught by Ryan Florence, one of the creators of React Router. Ryan was an engaging teacher and the workshop was filled with memorable quotes. Here are some highlights: The great conundrum of accessibility is that learning it is not […]
How to build a voice-controlled home automation app using PubNub and Amazon Alexa for natural language processing device control.
How to build a voice-controlled home automation app using PubNub and Amazon Alexa for natural language processing device control.
This is a brief post documenting a very weird thing I partly came up with on Stack Overflow today. The context is this question. But to skip to the shock, we end up with code like this: That just shouldn’t happen. You shouldn’t be able to create an instance of an open type – a … Continue reading Surprise! Creating…
This post is for programmers coming to Go who are unfamiliar with the idea of pointers or a pointer type in Go. What is a pointer? Simply put, a pointer is a value which points to the address of another. This is the textbook explanation, but if you’re coming from a language that doesn’t let […]
New package command, Python 3.6 support, new OpenWhisk runtimes and more in the Serverless Framework v1.12 release.
Cloud and Platform-as-a-Service (PaaS) offerings can provide significant business advantages when deployed in a way that accelerates application delivery. However, placing the decision-making authority of cloud purchases solely in the infrastructure department often achieves incremental efficiencies at the cost of long-term business results. The greatest benefit of these technologies comes from the organizational changes they allow.
25 Apr 2017
Cisco offers a daily list of the million most queried domain names from Umbrella (OpenDNS) users. I had some time this weekend so decided to spend some time playing around with the data to see what I could find so I spun up a lightsail server and got to work. Grabbing the file is as simple as: wget http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip You…
We have a new tech talk coming up on May 17th, from our very own Dominick LoBraico. This one is about how to represent configurations with programs. In some sense, this is an obvious idea. Lots of programmers have experienced the dysphoria that comes from watching your elegant little configuration format metamorphize into a badly constructed programming language with miserable…
Learn how to prevent cold start in your Lambda functions with the Serverless WarmUp plugin.
Just a short one. I want to share a simple command to display nicer git log in the terminal. git log has --pretty=format option built-in, we are just going to pass formatting to it. git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' And it looks like this: Then add it to your .bash_profile as an alias (I'm using glog)…
24 Apr 2017
How to easily build a chat app that runs entirely in your terminal using Python.
How to easily build a chat app that runs entirely in your terminal using Python.
Problem: Determine if two polynomial expressions represent the same function. Specifically, if $ p(x_1, x_2, \dots, x_n)$ and $ q(x_1, x_2, \dots, x_n)$ are a polynomial with inputs, outputs and coefficients in a field $ F$, where $ |F|$ is sufficiently large, then the problem is to determine if $ p(\mathbf{x}) = q(\mathbf{x})$ for every $ x \in F$, in…
Remember just a few years ago when your customers started tweeting at you, angry about a delayed flight, complaining loudly about a poor product or “the worst service ever!”? At least you had a social media presence—unlike some of your competitors—but I bet it really took time and effort to learn how to use social media effectively. It may even…
VSCode just released custom workspaces! This means you can customize your text editor layout and style for different projects within a single editor!
23 Apr 2017
This post is an attempt to reduce the number of times I need to explain things in Stack Overflow comments. You may well be reading it via a link from Stack Overflow – I intend to refer to this post frequently in comments. Note that this post is mostly not about text handling – see … Continue reading All about…
We kicked off the year with a webinar I am a technologist, not a female technologist. Dr Rebecca Parsons, Thoughtworks CTO, and Dr Susan Davis-Ali, Vice President of Organizational Transformation at ABI, discussed ways to kick start change and create safe, welcoming homes for all technologists.
21 Apr 2017
Enhanced Analytics & Monitoring for your Serverless Apps with the IOpipe Serverless Plugin - Now in Beta
ServerlessActivate analytics and alerts quickly by automatically wrapping your Serverless functions with IOpipe.
I’ve observed a sharp uptick of developers and systems administrators interested in “getting into DevOps” within the last year or so. This pattern makes sense, too: in an age where a single developer can spin up a globally-distributed infrastructure for an application with a few dollars and a few API calls, the gap between development and systems administration is closer…
20 Apr 2017
Your Heroku applications run on top of a curated stack, containing the operating system and other components needed at runtime. We maintain the stack – updating the OS, the libraries, and ensuring that known security issues are resolved, so that you can focus on writing code. Today we're announcing the general availability of Heroku-16, our […] The post The Heroku-16…
At a customer site, I’ve recently encountered a report where a programmer needed to count quite a bit of stuff from a single table. The counts all differed in the way they used specific predicates. The report looked roughly like this (as always, I’m using the Sakila database for illustration): And then, unsurprisingly, combinations of … Continue reading How to…
It’s often surprising just how much software performance depends on how the software is deployed. All the time and effort you’ve invested in optimization can be erased by a few bad decisions in scheduler policy, affinity, or background workload on a server.
19 Apr 2017
rltm.js is an opensource uniform API for real-time messaging, easily swap between Socket.IO/PubNub for bidirectional event-based communication.
rltm.js is an opensource uniform API for real-time messaging, easily swap between Socket.IO/PubNub for bidirectional event-based communication.
Why Adopt Matters Each new edition of the Thoughtworks Technology Radar is the result of extensive internal discussion. Our Technology Advisory Board (TAB) debates the merits of scores of potential blips. The group that inevitably attract much attention are those that are in the Adopt ring—particularly those that have newly moved into Adopt.
18 Apr 2017
How we built Heroku CI: our product intuition checked against what the market wants (we surveyed ~1000 developers to figure out the latter, and the results were surprising) Two approaches to building any product are often in tension: designing from inspiration, and designing from information. On the pure inspiration side, you just build the product […] The post On Building…
How to process an image URL with the AIception image recognition API and return the identity of the image in real time with PubNub.
How to process an image URL with the AIception image recognition API and return the identity of the image in real time with PubNub.
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:…
17 Apr 2017
A general overview of HIPAA, and why it matters for any real-time messaging platform to send and receive ePHI data in real time.
A general overview of HIPAA, and why it matters for any real-time messaging platform to send and receive ePHI data in real time.
I am a huge fan of Tim Tomes and his Burp Suite Configuration Suggestions blog post. The problem is that I only use Burp a couple times a month and end up facing this screen and have to re-configure burp on every launch: So I built burpsettings.json that: Disables Browsers XSS Protection Disables Burp Collaborator Server Disables Intercept by Default…
Want to be a better engineer or programmer? Check out this list of resources from the Serverless team.
The word “transformation” is fast becoming one of the most clichéd terms in the business world. It’s a word used to signal to a company that there’s an intent to make a change. Often predicated on a new executive hire or a poor performance year, it’s the war cry for “we have to do something different, and fast”. The next…
15 Apr 2017
Shouldn’t technology exist without inherent biases and discrimination? At Thoughtworks, we’ve been working towards making technology more inclusive for the past six years. While we’re still far from where we would like to be, we know we’re going in the right direction.
13 Apr 2017
A walkthrough of advanced PubNub Angular 2 SDK features, including Presence (online/offline status) and Custom State.
A walkthrough of advanced PubNub Angular 2 SDK features, including Presence (online/offline status) and Custom State.
Today I was asked if it was possible to generate a list of domain names registered everyday with a keyword in the record (company name, city, trademark, etc). There are a few paid services that do this and domainpunch.com has a web based tool that will do this but I wanted to automate it so I could use it with…
Last few months I’ve been using Go to write quite a lot of tools. In this post I intend to show not why I chose Go over others, but how I architect those tools, what libraries I use and what kind of automation I have in place.
It’s been over a year since I wrote a blog entry! And while of course the universal excuse of “I’ve been busy” applies, I think we reached a point in Discourse’s development where we just were able to focus on the product without a lot of stuff getting in our way. I’ve now been working on Discourse full time for…
The Thoughtworks Technology Radar doesn't just cover emerging technology, tools and techniques. We also get our Technology Advisory Board (TAB) to summarize the important themes that emerge from the Radar creation process. These videos enable you to get up to speed on the trends that are reshaping the enterprise. Pervasive Python
12 Apr 2017
I’ve always been fascinated by systems, the way they work, the way you can put them apart and build them back up. Part of this fascination is my insatiable desire to always be learning but also a challenge I like I give myself: can we do better? This fascination is what drove me most of my career. But my focus…
Trigger Lambdas through CloudWatch Logs, plus more new features in the Serverless Framework v1.11 release.
11 Apr 2017
The author gave a talk on building universal JavaScript web apps at Codemotion Rome 2017. He updated his Judo Heroes demo to v2 with React 15.4, React Router 4, Webpack 2, and Express 5. The talk got positive feedback from the audience. Slides and video are linked.
A walkthrough on building a quick and easy modern web framework in 20 lines of code.
A walkthrough on building a quick and easy modern web framework in 20 lines of code.
Full disclosure: my employer makes a Slack alternative. All my concerns about the use of Slack type chat services apply equally to its competitors, including my employer’s. I’ve tweeted a few times about my frustration with the movement of open source projects from open, asynchronous, communication tools like forums, mailing lists, and issue trackers, to […]
Insurance companies and InsurTech recently gathered at the SVIA Fusion conference to talk about the future of insurance in the age of digital disruption. According to KPMG, VC’s invested over $2.5 billion[1] in InsurTech in 2015.
10 Apr 2017
You should write your next web server in Go. Yes, you! Compared with Ruby, PHP, Python, or Javascript, you're going to get great memory and latency performance, and libraries that do what you expect. The standard library can be a bit lacking though, if you are used to developing with a tool like Rails. I […]
New release of OpenMapTiles brings aeroways, transportation names, German names, and mountain peaks.
We’ve all filled out those fields on forms - First name, Last name, Address, Gender - without thinking about the information. Imagine what it is like not to be able to put the right information down. It’s like you’re a Cat, and the options are Dog and Penguin - there is not only no option to identify as yourself, the…
9 Apr 2017
This weekend I polished up my Arduino Day project and published it to GitHub for Retrochallenge 2017/04. Introducing Arduino6502 https://github.com/davecheney/arduino6502 The repository contains an Arduino sketch that can be loaded on Arduino Mega boards (Arduino Uno’s can be accommodated by lowering the RAMSIZE value). The sketch includes ROM images for AppleSoft Lite and Krusader symbolic […]
I’ve read about 100 management books by now but if there’s something that always bothered me it’s the lack of first principles thinking. Basically it’s a ton of heuristics. And heuristics are great, but when you present heuristics as true objectives, it kind of clouds the underlying objectives (and you end up with weird proxy cults like the Agile movement…
This article is the first in a three-part series examining how we can achieve ROI from our service-oriented architecture initiatives and deliver on the promise of building business capabilities quickly. We believe the key to success is well-factored service architecture. These articles will provide high-level guidance on building a well-factored service architecture. A lot of our thinking has been influenced…
7 Apr 2017
How to use Wia and PubNub BLOCKS for IoT messaging, including tracking and displaying IoT events.
How to use Wia and PubNub BLOCKS for IoT messaging, including tracking and displaying IoT events.