Amit Singhal just announced that he’s retiring toward the end of the month. Amit has been a formative part of Google’s search team, but he’s also a good friend. Last year, after he marked 15 years with Google, I wrote this about Amit’s contributions: Amit Singhal, one of the unsung heroes of Google, just celebrated […]
3 Feb 2016
In 2013, Rafael Ördög put poker and code together, the result: Lean Poker, a competitive coding event that teaches continuous deployment and lean startup methodologies. Rafael is based in Budapest, Hungary. What’s Lean Poker? Lean Poker is a coding workshop that is designed to teach people how to practice continuous deployment and lean startup methodologies. […] The post How Lean…
I’ve been spending several hundred bucks renting GPU instances on AWS over the last year. The speedup from a GPU is awesome and hard to deny. GPUs have taken over the field. Maybe following the footsteps of Bitcoin mining there’s some research on using FPGA (I know very little about this). I don’t think there’s a coincidence that GPUs that…
Does your Tech Lead complain of being pulled in multiple directions at once? Do they get frustrated about all the code they’re not writing? Being a Tech Lead can’t be easy, with all its context switching and plate spinning. For a developer, it’s a great achievement to progress to a Tech Lead role. But the path to taking the step…
2 Feb 2016
Build an application to video chat with friends and watch YouTube at the same time, using WebRTC and PubNub
Build an application to video chat with friends and watch YouTube at the same time, using WebRTC and PubNub
29 Jan 2016
Asterisk is an open source framework for building communications applications. Run on Linux, it can be used to set up a PBX (Private Branch…
Background Mobile Test Automation is increasingly becoming very important. Almost all web applications are responsive these days and it's very important to test how the application works across devices. The same is true with the native application as well. At the same time, the number of devices and the custom OS versions on devices are also vast. This means that…
28 Jan 2016
Just now, we implemented a nice little feature in jOOQ’s code generator: https://github.com/jOOQ/jOOQ/issues/4974 It detects whenever the jOOQ code generator runs a slow query to reverse engineer schema meta information. Why? In our development and integration test environment, we don’t have huge schemas with all the different performance edge cases put in place. For instance, … Continue reading How to…
This is the last of a five part series.
27 Jan 2016
Surprisingly I’m working on HookRace again. I might share a few interesting code snippets and thoughts in this blog along the way. I’m still going with Nim as the programming language. For an easy start let’s write a logging module that can be used everywhere in the game’s server as well as client. There are mostly three aspects that I…
26 Jan 2016
Today Heroku is announcing that Heroku Private Spaces is generally available. Introduced in beta in September, Private Spaces is a new Heroku runtime designed from the ground up to meet the trust and control requirements of the most demanding applications. This new architecture enables Private Spaces to deliver the best of both worlds: the easy […] The post Heroku Private…
Today we’re pleased to announce that SSO for Heroku is generally available for Heroku Enterprise customers. SSO for Heroku supports single sign-on for SAML 2.0 compliant identity providers (IdPs), making it easier for Heroku Enterprise customers to manage identity across various systems. It also simplifies set-up for system administrators, allowing them to focus on managing […] The post SSO for…
Recently, we’ve published our article about the awesome window function support in jOOλ 0.9.9, which I believe is some of the best additions to the library that we’ve ever done. Today, we’ll look into an awesome application of window functions in a use-case that is inspired by this Stack Overflow question Sean Nguyen: How to … Continue reading How to…
Here’s the thing: I have this sweet pair of headphones that I got from a friend a gazillion years ago. I’ve always liked them because they were free and they look super quirky but it turns out they were a limited edition done for Ed Banger Records, which is the label that produces Justice and Mr. Oizo. It also turns…
Don't miss the author's earlier post on the 5 Tips for Being an Effective Tech Lead. The first time a developer steps into the role of a Tech Lead can be difficult. The skills and experience of a seasoned developer do not automatically translate into the skills necessary for the Tech Lead role. In fact, some of the habits of…
Icons are essential to most pattern libraries and web design systems. Let's take a look at a scalable approach!
25 Jan 2016
My blog post about fonts generated lots of traffic – it landed on Hacker News, took down my site while I was sleeping, and then obviously vanished from HN before I woke up. But it also got retweeted by a ton of people. This clearly constitutes another proof of how effective animated gifs are. There’s some stuff out there on…
Image decoding can be a source of checkboarding and jank. What if there was a way to work around it without resorting to a cluster of horror hacks? Step right up and meet my new friend createImageBitmap!
24 Jan 2016
Perf is probably the most widely used general purpose performance debugging tool on Linux. There are multiple contenders for the #2 spot, and, like perf, they're sampling profilers. Sampling profilers are great. They tend to be easy-to-use and low-overhead compared to most alternatives. However, there are large classes of performance problems sampling profilers can't debug effectively, and those problems are…
23 Jan 2016
Rails 5 has been brewing for more than a year. To take advantage of new features, and stay on the supported path, you'll need to upgrade. In this post, we'll look at the upgrade process for a production Rails app, codetriage.com. The codebase is open source so you can follow along. Special thanks to Prathamesh […] The post Upgrading to…
21 Jan 2016
For some reason I decided one night I wanted to get a bunch of fonts. A lot of them. An hour later I had a bunch of scrapy scripts pulling down fonts and a few days later I had more than 50k fonts on my computer. I then decided to convert it to bitmaps. It turns out this is a…
Over the past decade, User Experience Research and Design—often simply “UX”—has gained an increasingly prominent position in the world of tech. While the field has faced opposition within the industry, successful organizations are increasingly learning that investing in UX pay off.
20 Jan 2016
Sometimes, when we get pull requests for jOOQ or our other libraries, people change the code in our unit tests to be more “idiomatic JUnit”. In particular, this means that they tend to change this (admittedly not so pretty code): … into this, “better” and “cleaner” version: What have we gained? Nothing! Sure, we already … Continue reading Use JUnit’s…
As the topics of 'women in leadership' and 'gender equality in the tech industry' remain firmly in the limelight, I have spent some time reflecting on my own personal journey, particularly stepping into leadership roles. Here’s my story, with some tips to advance your career in technical leadership and things to consider for personal growth.
19 Jan 2016
GitKraken is a new cross-platform graphical interface for Git currently in private beta. It has useful features like interactive commit graph visualization, easy branching/stashing, and GitHub integration. The post shares invites to try the private beta version of GitKraken.
I solved a problem today and figured that I’d document it for the rest of the world. Every time someone left me a voicemail on Verizon, I would get a cryptic text from Verizon at 900080006202 that looked like “//VZWVVM:SYNC:ev=NM;id=1;c=1;t=v;s=1XXXXXXXXXX;dt=18/01/2016 13:40-0900;l=13;dev_t=5” or “//VZWVVM:SYNC:ev=MBU;dev_t=5”. Here’s what happened. It turns out that Verizon has three kinds of […]
At an open space session on configuration automation at a DevOpsDays a few years ago, I asked the group how many of them were using an automation tools like Puppet or Chef. The majority of hands went up. I asked how many were running these tools unattended, on an automatic schedule. Quite a few of the hands went down.
18 Jan 2016
Gulp-cozy is an experimental NPM package that allows you to separate Gulp tasks into small modules inside a dedicated folder, making them easier to maintain. It brings Node.js modularity principles into your Gulp workflow.
I’ve recently encountered a very interesting question on Stack Overflow by an unnamed user. The question was about generating a table of the following form in Oracle, using a table valued function: Description COUNT ------------------- TEST1 10 TEST2 15 TEST3 25 TEST4 50 The logic that should be implemented for the COUNT column is the … Continue reading Impress Your…
Today we’ll talk about unary operators, namely unary plus (+) and unary minus (-) operators. A lot of today’s material is based on the material from the previous article, so if you need a refresher just head back to Part 7 and go over it again. Remember: repetition is the mother of all learning. Having said that, this is what…
Sergey shows you how to build a real-time voting app with clients for iOS, Mac OS X, and new to PubNub: native Apple Watch support.
Sergey shows you how to build a real-time voting app with clients for iOS, Mac OS X, and new to PubNub: native Apple Watch support.
To steal a quote from JWZ, Some people, when confronted with a problem, think “I know, I’ll use cgo.” Now they have two problems. Recently the use of cgo came up on the Gophers’ slack channel and I voiced my concerns that using cgo, especially on a project that is intended to showcase Go inside […]
Ever since I started Splice, I’ve been really eager to experiment and adapt our process to be able to be as efficient as possible while still pleasant. Setting up a process that works is hard because it depends on the size of your company, the team members and the leadership style. We tried many things as we grew and lots…
14 Jan 2016
Recently there's been a trend in API's to return more than one error, or to always return an array of errors, to the client, when there's a 400 or a 500 server error. From the JSON API specification: Error objects MUST be returned as an array keyed by errors in the top level of a […]
Notice that the examples in this article may be outdated, as Typesafe’s Activator works differently now. The blog post will not be maintained to provide up-to-date Activator examples. We’re very happy to continue our a guest post series on the jOOQ blog by Manuel Bernhardt. In this blog series, Manuel will explain the motivation behind … Continue reading Reactive Database…
In the traditional world of enterprise software delivery, there can be a strong focus on software delivery metrics - What’s the test coverage? What is the code coverage? What’s the bug count? Why is the bug count so high? How many requirements have we delivered in this release?
13 Jan 2016
It’s hard to ignore the economic and social divide in the Bay Area. We’re in a huge housing crisis, we have massive economic inequality, and no shortage of startups pledging to save the world (unless you’re low-income). Yet, these concerns have also sparked a wealth of activism, allowing for technologists in San Francisco to be at the intersection of technological…
I wrote about how I began to code for the new publishing platform SuperYesMore. TL;DR — cartoon dolls and Flash.
12 Jan 2016
Embracing the future: A quick guide to systemd for modern daemon management.
Java has come a long way. A very long way. And it carries with it all the “junk” from early day design decisions. One thing that has been regretted time and again is the fact that every object (potentially) contains a monitor. This is hardly ever necessary and this flaw was corrected, finally, in Java … Continue reading If Java…
11 Jan 2016
So far in this series we’ve seen a lot of motivation and defined basic ideas of what a quantum circuit is. But on rereading my posts, I think we would all benefit from some concreteness. “Local” operations So by now we’ve understood that quantum circuits consist of a sequence of gates $ A_1, \dots, A_k$, where each $ A_i$ is…
Have you ever stopped to think how software could improve your accountancy practice? Our free e-Guide discusses how FinTech add-ons can help your practice become efficient.
When you start on the CD journey, it is tempting to think of it only as “What tools should I use?”
10 Jan 2016
We saw some really bad Intel CPU bugs in 2015 and we should expect to see more in the future
Dan Luu2015 was a pretty good year for Intel. Their quarterly earnings reports exceeded expectations every quarter. They continue to be the only game in town for the serious server market, which continues to grow exponentially; from the earnings reports of the two largest cloud vendors, we can see that AWS and Azure grew by 80% and 100%, respectively. That growth…
9 Jan 2016
Last night I had an idea and implemented it, soo let’s see what will happen. But first, the idea: Have a livestream [1] of DDNet running non-stop [2] that always shows some interesting [3] players on the server. The resulting livestream is running on Twitch. All the scripts are on Github 1. Livestream It’s surprisingly simple to livestream from Linux…
8 Jan 2016
Today I’ve been reviewing the ECMA-334 C# specification, and in particular the section about class instance constructors. I was struck by this piece in a clause about default constructors: If a class contains no instance constructor declarations, a default instance constructor is automatically provided. That default constructor simply invokes the parameterless constructor of the direct … Continue reading To base()…
Heroku has long been committed to making PostgreSQL one of the best relational databases in the world. We’re also committed to giving you the ability to try the latest release as soon as it’s available. Today, we’re pleased to announce the public beta of Postgres 9.5 on Heroku. PostgreSQL 9.5 brings a bevy of super […] The post Here’s Postgres…
The easiest way to be a 10x engineer is to make 10 other engineers 2x more efficient. Someone can be a 10x engineer if they do nothing for 364 days then convinces the team to change programming language to a 2x more productive language. A motivated 10x engineer in one team could be a demotivated 0.5x engineer in another team…
Most organizations today have adopted IT infrastructure automation tools and dynamic infrastructure platforms such as private or public clouds. However, the technology alone isn't enough to help IT respond quickly and reliably to changing opportunities and challenges. At worst they can lead to a "Sorcerer's Apprentice" situation, where the ability to rapidly spin up new infrastructure leads to a sprawl…
7 Jan 2016
As we start this New Year, we wanted to give you a recap of our 2015, a year filled with a lot of new products and features. We especially want to express our gratitude to everyone who helped us with inspiration, beta testing, and feedback. In case you missed anything, here are the highlights of […] The post Heroku 2015…
Last September, I spent a wonderful week in Shenzhen, China where Thoughtworks has just opened a new office. That city is making exhilarating progress in everything from Internet of Things to next-generation retail technology and maker spaces. Here are 10 observations from my visit:
6 Jan 2016
You heard right. Up until now, the awesome window functions were a feature uniquely reserved to SQL. Even sophisticated functional programming languages still seem to lack this beautiful functionality (correct me if I’m wrong, Haskell folks). We’ve written tons of blog posts about window functions, evangelising them to our audience, in articles like: Probably the … Continue reading 2016 Will…
In a brief video, Jordan Zucker shows how to set up PubNub with Cocoapods.
In a brief video, Jordan Zucker shows how to set up PubNub with Cocoapods.
5 Jan 2016
jOOQ is an internal domain-specific language (DSL), modelling the SQL language (external DSL) in Java (the host language). The main mechanism of the jOOQ API is described in this popular article: The Java Fluent API Designer Crash Course. Anyone can implement an internal DSL in Java (or in most other host languages) according to the … Continue reading A Curious…
An Innovation Day is typically a 24-hour event in which employees form small teams to try and solve a problem relevant to the business. The teams have to present their ideas back to the business with a strong business case and working prototype. Many companies have their version of an Innovation Day. What can a company gain from an Innovation…
4 Jan 2016
Problem: Estimate the number of distinct items in a data stream that is too large to fit in memory. Solution: (in python) import random def randomHash(modulus): a, b = random.randint(0,modulus-1), random.randint(0,modulus-1) def f(x): return (a*x + b) % modulus return f def average(L): return sum(L) / len(L) def numDistinctElements(stream, numParallelHashes=10): modulus = 2**20 hashes = [randomHash(modulus) for _ in range(numParallelHashes)]…
The Force awakened with a vengeance last month. Millions of fans worldwide lined up in droves for what some described as an almost sacred experience (for some German churchgoers, it literally was). The Force is strong, the hype is huge and the reviews are breathless.
Thoughtworks India and its leadership fully support the movement to maintain an Open and Free Internet through the implementation of appropriate net neutrality regulation in India. Such regulation is essential to the continued growth of the Internet in India – a resource critical to future generations of Indians, from both an economic and social perspective.
1 Jan 2016
Early last year when I left Spotify I decided to do more reading. I was planning to read at least one book per week and in particular I wanted to brush up on management, economics, and technology. 2015 was also a year of exclusively non-fiction, which is a pretty drastic shift, since I grew up reading fiction compulsively for 20…
31 Dec 2015
30 Dec 2015
Like many old databases, Oracle has legacy data types, which are rather nasty to work with in every day SQL. Usually, you don’t run into wild encounters of LONG and LONG RAW data types anymore, but when you’re working with an old database, or with the dictionary views, you might just have to deal with … Continue reading Oracle LONG…
It’s New Years again! We are excited to announce the most popular articles on Thoughtworks Insights, as well as the editors’ picks for 2015.
29 Dec 2015
I understand the idea of Java-the-language being rather hard to maintain in a backwards-compatible way. I understand the idea of JDK API, such as the collections, to be rather tough not to break. Yes. I don’t understand why Java still doesn’t have multiline string literals. How often do you write JDBC code (or whatever other … Continue reading Please, Java.…
Have you ever mentioned something that seems totally normal to you only to be greeted by surprise? Happens to me all the time when I describe something everyone at work thinks is normal. For some reason, my conversation partner's face morphs from pleasant smile to rictus of horror. Here are a few representative examples. There's the company that is perhaps…
In closing remarks at the Global Humanitarian Policy Forum in New York, Hansjoerg Strohmeyer, Chief of the Policy Development and Studies Branch of the Office of Coordination of Humanitarian Affairs (OCHA), challenged the current humanitarian model where extended displacements can run for 10 years using the same mode of operation.
28 Dec 2015
Here’s a bit of folklore I often hear (and retell) that’s somewhere between a joke and deep wisdom: if you’re doing a software interview that involves some algorithms problem that seems hard, your best bet is to use hash tables. More succinctly put: Google loves hash tables. As someone with a passion for math and theoretical CS, it’s kind of…
It's time for my annual reflection and goal resetting! It's been a crazy year for sure.
27 Dec 2015
I recently finished reading Ghost in the Wires by Kevin Mitnick. It is the story of Mitnick’s hacking career, from the start in his teens, through becoming the FBI’s most wanted hacker, to spending years in jail before finally being … Continue reading →
This past week the team at Shyp decided to fork the framework we use (Sails.js) and the ORM it uses (Waterline). It was an interesting exercise in JS tooling, and I wasted a lot of time on busywork, so I thought I'd share a little bit about the process. Why Fork? We've been on an […]
I’ve been wanting to write this for a long time, just to clarify my thoughts on the subject. Now, on vacations, I took a couple of days and finally did it. This is a personal opinion based on my personal experience and tons of books I have read, and I am not, by any means, the supreme holder of the…
25 Dec 2015
Happy Holidays from Heroku. Congratulations to the ruby-core team on a successful 2.3.0 release, which is now available on Heroku — you can learn more about Ruby on Heroku at heroku.com/ruby. We had the pleasure of speaking with Matz (Yukihiro Matsumoto), the creator of Ruby and Chief Ruby Architect at Heroku, about the release. What’s […] The post Celebrating Ruby…
24 Dec 2015
Preparing for the Holiday season is a year round task for all of us here at Bazaarvoice. This year we saw many retailers extending their seasonal in-store specials to their websites as well. We also saw retailers going as far as closing physical stores on Thanksgiving (Nordstrom, Costco, Home Depot, etc.) and Black Friday (REI). Regardless […]
There are plenty of lists out there for the tech lover, dog lover, fashion lover, coffee lover—but what about that hard-to-shop-for developer? Here are a few ideas: A Docker Thermos Everyone just loves that cute whale, even if they don’t know what Docker is. We also know how much caffeine is consumed by the average developer. You can buy it…
22 Dec 2015
Maintaining APIs is hard. We’re maintaining the jOOQ API which is extremely complex. But we are following relatively relaxed rules as far as semantic versioning is concerned. When you read comments by Brian Goetz and others about maintaining backwards-compatibility in the JDK, I can but show a lot of respect for their work. Obviously, we … Continue reading JEP 277…
You might have heard that a few days ago, Juniper Systems announced the discovery of “unauthorized code” in the ScreenOS software that underlies the NetScreen line of devices. As a result of this discovery, the company announced a pair of separate vulnerabilities, CVE-2015-7755 and CVE-2015-7756 and urged their customers to patch immediately. The first of these CVEs (#7755) was ……
I’ve never really done a year in review. One day, I’d like to open source my goals, but since I’m still a chicken, this is a baby step towards that. Plus, this is one of the first years I’m really proud of, and things that you’re proud of tend to live on the Internet, for posterity. Here’s what my GitHub…
Where the development of Africa is concerned, we are inspired by what late Dr. Kwame Nkrumah declared: We don't look East nor West; we look forward.
21 Dec 2015
The deadline is getting ever closer... you'll need to upgrade unless your software supports the new security standard.
More people than ever before are entering software development from non-traditional backgrounds. The number of coding bootcamps is increasing, and there’s a broad push from the industry to attract more diverse developers. Many companies are no longer solely focused on hiring senior developers, and have realized that it may be smarter to train and upskill the next generation of senior…
18 Dec 2015
17 Dec 2015
Josh interviews Circuitbeard, the creator of Petduino, an Arduino based electronic pet
Josh interviews Circuitbeard, the creator of Petduino, an Arduino based electronic pet
The following is a very common problem in all data related technologies and we’re going to look into two very lean, SQL-based solutions for it: How do I fill the cells of a sparse data set with the “previous non-empty value”? The problem The problem is really simple and I’m reusing the example provided by … Continue reading How to…
We’re pleased to announce the beta of SSO for Heroku. With this beta, Heroku now supports the current and most widely supported SSO standard known as SAML 2.0, and has partnered with leading identity providers (IdPs) for easy set-up. Customers can use their existing identity provider like Salesforce Identity, Okta, PingOne, Microsoft Active Directory, and […] The post SSO for…
There's a meme that's been going around for a while now: you should join a startup because the money is better and the work is more technically interesting. Paul Graham says that the best way to make money is to "start or join a startup", which has been "a reliable way to get rich for hundreds of years", and that…
Agile software development is a well known set of principles that many software teams have adopted, tweaked and perfected over more than ten years. As teams gain experience with Agile, a natural pressure builds on tools, practices and processes that slows the pace of delivering value.
16 Dec 2015
Notice that the examples in this article may be outdated, as Typesafe’s Activator works differently now. The blog post will not be maintained to provide up-to-date Activator examples. We’re very happy to continue our a guest post series on the jOOQ blog by Manuel Bernhardt. In this blog series, Manuel will explain the motivation behind … Continue reading Reactive Database…
I am currently working on the migration of our time tracking system from Microsoft SQL Server/.NET to Java. Most of the logic resides in Stored Procedures and Stored Functions inside the database schema. Because of some reasons (testability, maintainability, migration from MSSQL to PostgreSQL in a far future) the whole […] The post Executing Liquibase database migrations from command line…
Heroku has years of experience operating our world-class platform, and we have developed many internal tools to operate it along the way; however, with the introduction of Heroku Private Spaces, much of the infrastructure was built from the ground up and we needed new tools to operate this new platform. At the center of this, […] The post Introducing Heroku’s…
In order for you to thrive in the digital environment, you need to understand the implications of the changing technology landscape on your organization. This is the first article in Technology Radar Echoes, a new series where authors share their insights and experience on the technology problems and solutions driving business differentiation for enterprise leaders.
I started off as a practitioner and over time, have been an Agile coach. There were a few interesting things about my journey that I thought would be good to share with the larger community. My post narrates a journey that many technologists might take - here’s hopefully to a learning or two.
15 Dec 2015
A year and half ago, we launched support for PHP on Heroku, built from the ground up with modern features designed to give developers a more elegant and productive experience on the platform. Last week, we made PHP 7 available on top of a new, reworked version of our PHP support, and our users are […] The post 50% and…
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. We have the pleasure … Continue reading jOOQ Tuesdays:…