How to use Rails and PubNub to build a real-time commenting system that streams comments with no refreshing required.
23 Aug 2017
How to use Rails and PubNub to build a real-time commenting system that streams comments with no refreshing required.
In September i’ll be speaking about Go at events in Russia and Taiwan. DevFest Siberia 2017, September 23rd and 24th I’ve been accepted to give two presentations at the GDG Novosibirsk DevFest Siberia 2017 event in Russia. High performance servers without the event loop Conventional wisdom suggests that the key to high performance servers are native threads, […]
This is a pseudo-transcript for a talk on branch prediction given at Two Sigma on 8/22/2017 to kick off "localhost", a talk series organized by RC. How many of you use branches in your code? Could you please raise your hand if you use if statements or pattern matching? Most of the audience raises their hands I won’t ask you…
The Datadog Solutions Team reproduces problems that customers run into while they try using our many integrations in their own, always-unique environments.
The Serverless Guide is the open-source, definitive guide to serverless architectures. A single resource for serverless developers and organizations.
22 Aug 2017
We're happy to announce that Heroku app webhooks is now generally available for all Heroku customers. App webhooks provide notifications when your Heroku app changes, including modifications to domain settings, releases, add-ons, and dyno formations. These notifications can empower your internal communications, dashboards, bots or anything else that can receive HTTP POST requests. Integrating with […] The post Heroku Webhooks:…
SQL is a really cool language. I can write really complex business logic with this logic programming language. I was again thrilled about SQL recently, at a customer site: Writing some nifty SQL queries for a customer. Wondering why anyone would even consider using a 3GL for any business logic at all?? — Lukas Eder … Continue reading Finding all…
IT departments are on the verge of being irrelevant to businesses. Increasingly, there is a need to reinvent themselves and align better with the business. The industry is at crossroads, where they need to choose between being merely seen as a cost center in the organization, and instead, take the lead to be an important and influential partner in the…
21 Aug 2017
Service Organization Control (SOC) 2 verifies that PubNub passed a rigorous audit of its internal controls, meeting standards set by AICPA.
Service Organization Control (SOC) 2 verifies that PubNub passed a rigorous audit of its internal controls, meeting standards set by AICPA.
The Lear Siegler ADM-3A terminal is a very important artefact in computing history. If you want to know why your shell abbreviates $HOME to ~, it’s because of the label on the ~ key on the ADM-3A. If you want to know why hjkl are the de facto cursor keys in vi, look at the symbols above the […]
20 Aug 2017
I recently found out about the book Developer Testing – Building Quality Into Software by Alexander Tarlinder, and I immediately wanted to read it. Even though I am a developer at heart, I have always been interested in software testing … Continue reading →
This is an experience report about the use of, and difficulties with, the context.Context facility in Go. Many authors, including myself, have written about the use of, misuse of, and how they would change, context.Context in a future iteration of Go. While opinions differs on many aspects of context.Context, one thing is clear–there is almost unanimous agreement that […]
19 Aug 2017
Unlike the previous tests which have been based on Noda Time, this post is based on some issues I’ve had with my main project at work: the Google Cloud Client Libraries for .NET. Background This is somewhat detailed for those of you who really care about the chain of events. If you don’t, skip to … Continue reading Diagnosing a…
Mod_Security is the most widely known and used server based Web Application Firewall but I had not had a chance to play with it so I decided to take sometime this weekend to build a website (modsec.handsonhacking.org) to test it. Here is a small walk through on how I did it. Base Server Install: I used AWS Lightsail to build…
In the last blog post, I investigated why my Noda Time tests on Travis were running much slower than those on AppVeyor. I resolved a lot of the problem just by making sure I was running release builds on Travis. That left a single test which takes up about half of the test time though: … Continue reading Diagnosing a…
I just bought Machine, Platform, Crowd: Harnessing Our Digital Future and discovered that it mentions my blog – in particular the post When machine learning matters. Ok, I lied a little bit. I didn’t discover it serendipitously. Someone actually emailed me saying I was mentioned, and so I ordered the book for same-day delivery. But I was seriously planning to…
18 Aug 2017
We’re releasing two new OpenAI Baselines implementations: ACKTR and A2C. A2C is a synchronous, deterministic variant of Asynchronous Advantage Actor Critic (A3C) which we’ve found gives equal performance. ACKTR is a more sample-efficient reinforcement learning algorithm than TRPO and A2C, and requires only slightly more computation than A2C per update.
Event Gateway is the backbone of your serverless architectures. React to any event, with any function, on any cloud.
17 Aug 2017
How to build a dynamically-updating progress bar in JavaScript that updates in real time as status updates are streamed to it.
How to build a dynamically-updating progress bar in JavaScript that updates in real time as status updates are streamed to it.
I’ve previously blogged about a case where tests on .NET Core on Linux were much, much slower than the same tests on Windows. Today I’ve got a very similar problem – but I suspect the cause isn’t going to be the same. This is my reasonably raw log – skip to the end for a … Continue reading Diagnosing slow…
For a long time, I’ve believed that diagnostic skills are incredibly important for software engineers, and often poorly understood. The main evidence I see of poor diagnostic skills is on Stack Overflow: “I have a program that does 10 things, and the output isn’t right. Please fix.” “I can’t post a short but complete program, … Continue reading Diagnostics everywhere!…
Enhancements, bug fixes and more added in the Serverless Framework v1.20 release.
16 Aug 2017
Our Dota 2 result shows that self-play can catapult the performance of machine learning systems from far below human level to superhuman, given sufficient compute. In the span of a month, our system went from barely matching a high-ranked player to beating the top pros and has continued to improve since then. Supervised deep learning systems can only be as…
Jane Street is looking to hire an engineer with experience in both software and hardware design to work on FPGA-based applications, and on tools for creating such applications.
The top Twitter accounts you should follow to stay on top of serverless, event-driven architecture, and other tech news.
15 Aug 2017
Over the past decade, millions of developers have interacted with the Heroku CLI. In those 10 years, the CLI has gone through many changes. We've changed languages several times; redesigned the plugin architecture; and improved test coverage and the test framework. What follows is the story of our team's journey to build and maintain the […] The post Evolution of…
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:…
Displaying a list of items is a challenge you will encounter in most web applications. When using a view layer library such as React, you only have to iterate over the list of items and return elements. However, often you want a couple of more features such as filtering, sorting or pagination. Not every list […]
This is just a brief post that I’m hoping may help some people migrate to use .NET Core 2.0 SDK on Travis. TL;DR: see the end of the post for a sample configuration. Yesterday (August 15th), .NET Core 2.0 was fully released. Wonderfully, Travis already supports it. You just need dotnet: 2.0.0 in your YAML … Continue reading Using .NET…
Highlights of our recent work to improve our cloud-based monitoring and alerting pipeline.
Technical change on a big software development project can be a smart business choice, but it's hard. You’re always working against the inertia of the ever-expanding existing codebase and have to make tough decisions about improving what's there versus delivering new functionality. METRO Cash & Carry is a membership-based, self-service wholesaler with operations across 25 countries. Here's what our team…
14 Aug 2017
One of the things that even the new MacOS beta is missing is MAC Address Randomization on boot. After spending a few hours working on it I put together this completely hack-y solution that uses Spoof and an automator Script saved as an application. Here is how I configured it: Install Spoof Open Automator Select “Application” Add “Run Applescript” Copy…
Last week I was in Boston for the Geometry of Redistricting workshop. It was an optimistic gathering of over 500 mathematicians, computer scientists, lawyers, policy makers, teachers, and interested people of all stripes. There was a ton of information in the talks and subsequent discussions. I’ll try to distill the main ideas and avenues for research as best I can.…
There’s about 765 million blog posts about the diversity “memo” that leaked out of Google a couple of weeks ago. I think the case for any biological difference is pretty weak, and it bothers me when people refer to an “interest gap” as anything else than caused by the environment. Maybe because I have a daughter, maybe because I have…
Intern season is coming to a close, and it’s a nice time to look back (as I’ve done in previous years) and review some of what the interns did while they were here. The dev intern program has grown considerably, with almost 40 dev interns between our NY, London, and Hong Kong offices.
5 must-see AWS Learning Resources
What does it mean to celebrate pride in an otherwise 'straight world'? How important is it to understand the dynamics of gender and sexuality in everyday lives? In a diverse world, where inclusivity is not just an opinion but actually the most pragmatic way to be, how can each one of us bridge the existing gaps?
11 Aug 2017
We’ve created a bot which beats the world’s top professionals at 1v1 matches of Dota 2 under standard tournament rules. The bot learned the game from scratch by self-play, and does not use imitation learning or tree search. This is a step towards building AI systems which accomplish well-defined goals in messy, complicated situations involving real humans.
Shadow DOM is a fairly recent-ish spec that gives you DOM tree encapsulation – it’s one of the superhero lions in the Voltron of specs called “Web Components”. Web Components let you create reusable, self-contained components in JavaScript; the Shadow DOM bit makes sure that the CSS and markup you bundle with your implementation is encapsulated, hiding the implementation details…
Level up your serverless ops game with a walkthrough on CloudWatch metrics and alarms
Be prepared for dramatic changes in data rules
10 Aug 2017
This is an endless GIF that always shows the current time in UTC: Source Code (From reports it doesn’t seem to work on Safari, other browsers should be fine.) time.gif is written in Haskell and works by dynamically generating each frame of the GIF and slowly feeding them over the HTTP connection. There is no guarantee that this GIF shows…
Anticipating change on behalf of the serverless enterprise.
How decisions made 40 years ago straightjacket you today.SourceTyr·an·ny - the cruel, unreasonable, or arbitrary use of power or control. best prac·tice - commercial or professional procedures that are accepted or prescribed as being correct or most effective.
9 Aug 2017
I’ve got a few speaking engagements coming up that I thought it might be worth publicising a bit further. They’re all within just over a week of each other, which is going to be somewhat tiring, but… Here they are, in chronological order: Progressive .NET 2017 Progressive .NET 2017 will be held on September 13th-15th … Continue reading Upcoming speaking…
This is an experience report about a gotcha in Go that catches every Go programmer at least once. The following program is extracted from a larger version that caused my co-workers to lose several hours today. package mainimport "fmt"type T struct{}func (t T) F() {}type P interface { F()}func newT() *T { return new(T) }type […]
I recently had a problem where part of the solution was to do a series of pointer accesses that would walk around a chunk of memory in pseudo-random order. Sattolo's algorithm provides a solution to this because it produces a permutation of a list with exactly one cycle, which guarantees that we will reach every element of the list even…
Making it easy to think about events in a serverless world.
If you didn't know, in Safari's private mode both localStorage and sessionStorage are not working. To be exact, Safari sets storage's limit to 0, so you can't write anything to it. I keep forgetting this, until QA people report it at some point. So I quickly wrote a small facade for it, which fails silently in this case. That means…
8 Aug 2017
At the core of Heroku’s data services sits Postgres, and today, we are making it even easier to bend Heroku Postgres to the very unique needs of your application’s stack. With these new features, you can easily customize Postgres, making it more powerful and configurable, while retaining all the automation and management capabilities of Heroku […] The post Heroku Postgres…
I always wanted to know how stargazers of my repos increased over time.
During my career as a Quality Analyst, there were times when I felt like I had plateaued in my usefulness to the team as a QA. Get a story, test it, and try to automate as best you can; I felt this was all I could do. In order to get myself out of this situation, I developed a few…
7 Aug 2017
How to use Functions to ingest, store and analyze IoT analytics in real time with the mnubo BLOCK.
How to use Functions to ingest, store and analyze IoT analytics in real time with the mnubo BLOCK.
Your cheatsheet to a seamless migration.
4 Aug 2017
Handling Python dependencies in your Lambda functions can be a pain. Here's how I handle Python packaging with Serverless for dev/prod parity.
A roundup of links and videos from the serverless ecosystem that caught our attention this week.
3 Aug 2017
RL-Teacher is an open-source implementation of our interface to train AIs via occasional human feedback rather than hand-crafted reward functions. The underlying technique was developed as a step towards safe AI systems, but also applies to reinforcement learning problems with rewards that are hard to specify.
Enhancements, bug fixes and more added in the Serverless Framework v1.19 release.
2 Aug 2017
Keeping with the serverless pulse.
The mobile era has shifted our society from always on to always on demand. The standard of always on, which caused a great shift in social and workforce dynamics, is a remnant of the desktop and Blackberry era. 10 years ago, we had Wikipedia and started to say “just Google it”. Over time, that technology led us to develop cultural…
1 Aug 2017
We are living in challenging times, fraught with anxiety and stress. Globally, we are faced with daily acts of terror, hate crimes, riots and protests, each having a long-lasting and damaging impact on the people around us and the communities we serve. Naturally, this is bound to blur the thin line dividing personal and professional lives.
31 Jul 2017
Easy Approach to Requirements Syntax and the segue to Behavior Driven Development
Henrik Lau ErikssonI was attending a conference six months ago and listened to a talk about quality. During the talk, I was introduced to EARS — Easy Approach to Requirements Syntax. This way of writing requirements struck a chord with me, given my prior experience reading and writing requirement specifications. When doing agile development, we write User Stories and define Acceptance Criteria.…
The ones who started it all.
28 Jul 2017
Need to quickly catch up on this past quarter's announcements? Here are the top three topics to tune in on: Heroku announced the general availability of continuous integration (CI) on May 18, 2017. This new feature creates copies of staging apps to run tests, then destroys the app and its add-ons. With Heroku CI, you […] The post FY18 Q2…
A roundup of links and videos from the serverless ecosystem that caught our attention this week.
Keeping with the serverless pulse.
If you’re a regular visitor to this blog, you might be aware that we have been transitioning to a microservices based architecture over the past four to five years, as we have shared insights into the process and the related challenges on multiple occasions. To recap, adopting a microservices architecture has allowed us to regain team autonomy by breaking up…
27 Jul 2017
We’ve found that adding adaptive noise to the parameters of reinforcement learning algorithms frequently boosts performance. This exploration method is simple to implement and very rarely decreases performance, so it’s worth trying on any problem.
Clever Instant Login makes it easy for students to log in to their learning applications, saving valuable instructional time. By using the widely-deployed OAuth 2 protocol, our team tries to save valuable development time and make it easy for our app customers to create integrations. OAuth 2 has been a fairly smooth road, but we […] The post Clever Instant…
A step-by-step look at the development of a serverless application.
26 Jul 2017
.content img:not(.emoji) { border: 1px solid #efefef; margin: 24px 0; } The Meownica Web App Workflow™ goes like this: Write bad code until the file is too long Refactor that code into some web components Repeat steps 1-2 until done Realize you forgot to do the PWA dance, so your app is scoring 45 on Lighthouse Make it into a…
When we left jQuery behind and embraced modern JavaScript frameworks, we thought we would never touch DOM directly again. Well that is not entirely true. There are a lot of cases when you need to get some DOM element size. For element's dimensions .offsetWidth and .offsetHeight are great way to do it. But one of the other common tasks is…
25 Jul 2017
Today we’re making our Slack integration generally available to all Heroku customers through the release of Heroku ChatOps. ChatOps is transforming the way dev teams work, replacing the asynchronous communication and context-switching of traditional operations processes with a shared conversational environment so teams can stay focused, communicate in real-time, gain visibility, and speed joint decision […] The post Announcing Heroku…
jOOQ has been around for a while now (since 2009!) and by now we can say we’ve seen quite a bit of things about the SQL and Java languages. Some of our design decisions are particular in the way jOOQ thinks about programming with SQL. These include: Nullability (let’s stop fighting it) Value types (let’s … Continue reading 5 Things…
24 Jul 2017
In recent months, there had been some really exciting news from the MySQL team: (Recursive) Common Table Expressions in MySQL Introducing Window Functions These two SQL standard language features are among the most powerful SQL features that are available from most other databases. I frequently include them in conference talks about SQL (see my article … Continue reading jOOQ 3.10…
Problem: Express a boolean logic formula using polynomials. I.e., if an input variable $ x$ is set to $ 0$, that is interpreted as false, while $ x=1$ is interpreted as true. The output of the polynomial should be 0 or 1 according to whether the formula is true or false as a whole. Solution: You can do this using…
Many dynamic companies find the cash injection provided by business finance is exactly what they need to give their growth plans a kick start, and there are more types of funding available to businesses than ever before.
I'm becoming predictable. Again, I haven't found component I like, so I wrote my own. This time, I've build React component for parallax (on scroll) effects. Check the live demo. It is called Plx, it is open source and available on GitHub and npm. What it does # So far in my career, I've built so many parallax components. Parallax…
Key characteristics of well-factored services
23 Jul 2017
A McKinsey report talks about how product excellence provides a key competitive advantage
22 Jul 2017
A long time ago, someone–I normally attribute this to David Symonds, but I can’t be sure he was the first to say it–said that the reason for adding generics to Go would be the reason for calling it Go 2.0. That is to say, adding generics to the language would be half baked if they […]
21 Jul 2017
A roundup of links and videos from the serverless ecosystem that caught our attention this week.
20 Jul 2017
Java’s visibility rules are tricky at times. Do you know what this will print? It will print (highlight to see the solution): B.x Because: The super type B's members hide the enclosing type C's members, which again hide the static import from A. How can this lead to bugs? The problem isn’t that the above … Continue reading A Curious…
We’re releasing a new class of reinforcement learning algorithms, Proximal Policy Optimization (PPO), which perform comparably or better than state-of-the-art approaches while being much simpler to implement and tune. PPO has become the default reinforcement learning algorithm at OpenAI because of its ease of use and good performance.
Serverless v1.18 - Request parameter support for Lambda Proxy, default value for plugin options added
ServerlessSupport for request parameters when using Lambda Proxy integration and more added in the Serverless Framework v1.18 release.
There are many threats—and opportunities—facing businesses in this age of digital transformation: industry disruption from nimble startups, economic pressure from massive digital platforms, evolving security threats, and emerging technologies. Today’s era, in which all things are possible, demands a distinct style of leadership. It calls for bold individuals who set their company's vision and charge ahead in a time of…
19 Jul 2017
Learn some tips and tricks as you move to an event-driven architecture