Generally when comes to replacing native UI components, I'm strongly against it. But, we've all been there, when the client insists on it. You'll see how to style it via CSS (webkit only), apply pure JavaScipt plugin with native scrolling or apply simple CSS hack. Well, let's go :) CSS solution, but only for webkit # Webkit scrollbars can be…
21 Mar 2016
18 Mar 2016
This post is a continuation of a suggestion I made on twitter a few days ago. In Go, for any type T, there exists a type *T which is the result of an expression that takes the address of a variable of type T1. For example: type T struct { a int; b bool } […]
Part One of this series talks about how effectively intent filters could help you avoid the Confused Deputy problem when developing an Android App. In the second part, I discuss how to securely implement a Broadcast Receiver when developing an Android App.
17 Mar 2016
Today, we’re thrilled to host Jacob Kaplan-Moss. Jacob’s a former Herokai and long-time core contributor to Django, and he’s here to share an in-depth look at something that he believes will define the future of the framework. Django Channels allows Python developers to build real-time, asynchronous web apps with Python and JavaScript. It augments Django’s […] The post Django Channels:…
Too many programmers think SQL is a bit of a beast. It is one of the few declarative languages out there, and as such, behaves in an entirely different way from imperative, object-oriented, or even functional languages (although, some say that SQL is also somewhat functional). As a SQL trainer (do visit our training, it’s … Continue reading 10 Easy…
Isaiah Grey shows how to build a shopping list app using PubNub through Stamplay.
Isaiah Grey shows how to build a shopping list app using PubNub through Stamplay.
If you lead a traditional investment management organization, the storm surrounding the industry may look and feel like what the music and media industries have been facing for 15 years. The transition from disks to downloads and streaming have transformed the music industry. We are witnessing a similar seismic shift that will reshape the century-old banking business model. Changing customer…
This isn't your typical story about the low numbers of women in the technology space or the wage disparities for those workers. I'd like to share from the viewpoint of someone who doesn't really care. Someone who's been willfully ignorant of the statistics and the personal stories behind those numbers. My name is Joe. I'm a software developer. I love…
16 Mar 2016
I do a lot of recruiting and have given maybe 50 offers in my career. Although many companies do, I never put a deadline on any of them. Unfortunately, I’ve often ended up competing with other companies who do, and I feel really bad that this usually tricks younger developers into signing offers. On numerous occasions, I’ve gotten an email…
15 Mar 2016
Here we go again. THAT TOPIC. But hang on. The approach discussed here (and in the Ceylon language) is not something you see every day. At the same time, it is very cunning. Nulls are baked into the language … or so it may seem. Indeed, in Ceylon, like in Kotlin (and possibly many other … Continue reading Ceylon Might…
14 Mar 2016
Value pricing is transforming the way many accounting firms are now pricing their services. The challenge is, it isn’t easy. In this free e-Guide written by Mark Wickersham FCA, discover the 5 most important fundamentals of value pricing.
So you receive this unpleasant notification that a server is unreachable. You follow your usual quick fix routines (for example: flip through the logs to see what has happened), only to find out that the server has actually crashed. You freeze! Immediately, you get flashbacks of the hustle that you had to go through while trying to configure that server.…
12 Mar 2016
Occasionally I am asked for advice on how to get started contributing to an Open Source project. I thought it may be useful to write down my suggestions. These points were written in the context of the Go programming language, but I think this advice is applicable to the majority of modern Open Source projects. […]
(This is not a very relevant/useful post for regular readers – feel free to skip. I thought I would share it so people can find it on Google.) My blog blew up twice in a week earlier this year when I landed on Hacker News. The first time I was asleep so I didn’t notice that the site went down.…
I needed simple React slider component, as we are building our new website as a universal React application. But I did not find anything lightweight. There is a crazy trend in JavaScript world - add gazillion dependencies. So again, I made something myself. Check the demo. It has no dependencies, and about 200 lines of code. Very simple and extensible.…
11 Mar 2016
The microservice architectural style is taking the world by storm. Last March, O'Reilly hosted their first Software Architecture Conference, and a huge percentage of the abstracts the program committee received touched on some aspect of microservices. Why is this architectural style suddenly all the rage?
10 Mar 2016
Katie Ginder-Vogel talks about Weather STEM apps built with Ionic and powered by PubNub's real-time communication API
Katie Ginder-Vogel talks about Weather STEM apps built with Ionic and powered by PubNub's real-time communication API
News could hardly get more exciting than this, for a programming language aficionado! There is now a JEP 286 for Local-Variable Type Inference with status “Candidate”. And a request for feedback by Brian Goetz, which I would love to invite you to participate in: http://mail.openjdk.java.net/pipermail/platform-jep-discuss/2016-March/000037.html Please do so, the survey remains open only from March … Continue reading Java 10’s…
9 Mar 2016
Build an interactive weather map of the world using Open Weather Map and other cloud services.
Build an interactive weather map of the world using Open Weather Map and other cloud services.
A lot of developers get the distinction between JOIN and SEMI-JOIN wrong. Let me explain… What are JOIN and SEMI-JOIN A little bit of relational algebra first. What is an (INNER) JOIN? An JOIN is nothing but a filtered cartesian product. And what is a cartesian product? Wikipedia explains this very nicely: for sets A … Continue reading SQL JOIN…
Whether they’re publishing notifications, responding to /slash commands or carrying a conversation, bots have become an integral part of the way we work with Slack. A bot can do any number of things for your team as part of your day-to-day work, you’re only limited by your imagination. For some first-hand experience, check out the […] The post How to…
We finally got a decent recording of one of my favorite talks. This one is about our Incremental library (which I wrote about here), and in particular about the story of how we got to the present, quite performant, implementation.
8 Mar 2016
Financial Services 2025: Eight Strategic Forces that are Transforming the Industry
Thoughtworks InsightsWhat happens to today’s banks if interests rates remain at historical lows, global economic growth remains tepid, and new channels emerge that productively allocate capital better, faster and cheaper?
7 Mar 2016
Good decisions come from experience. Experience comes from making bad decisions. ― Mark Twain Today, let’s look at one piece of experience and how we can turn that into good decisions when implementing UI logic. Please, all UI developers read this. The bad decision When UI developers display tabular data, it is very common for … Continue reading UI Developers!…
When I graduated from university with a degree in Computer Science, I wanted to continue and get a Ph.D. But I also wanted to work as a software developer, so I worked for five years in industry before going back … Continue reading →
An analyst writing a DevOps article. Not what you expected? That is exactly the issue I want to tackle here. We have all heard the stories of QAs who ring bells when they find defects, and we are not surprised when developers on those teams are scared of (or annoyed by) interacting with them. In contrast, teams that truly believe…
Every six months or so, we publish our Technology Radar. The radar sets out the changes that we think are currently interesting in software development, the things in motion that we think you should pay attention to and consider using in your projects. It reflects the opinion of our Technology Advisory Board, and is based on our day-to-day work and…
6 Mar 2016
When designing a new software project, one is often faced with a glut of choices about how to structure it. What should the core abstractions be? How should they interact with each other? In this post, I want to argue for a design heuristic that I’ve found to be a useful guide to answering or influencing many of these questions:…
5 Mar 2016
In the style of Michael Chladek, I thought it would be useful to my future-self and others, if I wrote up a summary of installing Arch Linux on Apple MacBook hardware. Of course there are other guides out there, but this one is specific to the needs of someone looking for a minimalist, reproducible, secure, performance oriented installation of Arch…
4 Mar 2016
EMRs and Paper Records: Co-existing in Hospital Ecosystems
2 Mar 2016
A common challenge when building microservices is providing a unified interface to the consumers of your system. The fact that your services are split into small composable apps shouldn’t be visible to users or result in substantial development effort. To solve this problem, Netflix (a major adopter of microservices) created and open-sourced its Zuul proxy […] The post Using Netflix…
Last week MailChimp announced that they are shutting down the Mandrill Heroku Add-on, giving users until April 27th to migrate to another solution. Many of our customers have sought guidance on how and where to migrate, so we have asked our email providers to create guides for migrating from the Mandrill add-on to their respective […] The post Migrating from…
Here’s a conclusion I’ve made building consumer products for many years: the speed at which a company innovates is limited by its iteration speed. I don’t even mean throughput here. I just mean the cycle time. Invoking Little’s law this is also related to the total inventory of features not being deployed yet. In a hypothetical scenario, clone two teams…
1 Mar 2016
With jOOQ 3.7, we have finally added formal support for Java 8 features. This opened the door to a lot of nice improvements, such as: Creating result streams Calling statements asynchronously (jOOQ 3.8+) But obviously, we didn’t want to disappoint our paying customers who are stuck with Java 6 because of their using an older … Continue reading How to…
To every thing there is a season. And in the world of cryptography, today we have the first signs of the season of TLS vulnerabilities. This year’s season is off to a roaring start with not one, but two serious bugs announcements by the OpenSSL project, each of which guarantees that your TLS connections are … Continue reading Attack of…
I spend most of my time at Heroku working on our support tools and services; help.heroku.com is one such example. Heroku’s help application depends on the Platform API to, amongst other things, authenticate users, authorize or deny access, and fetch user data. So, what happens to tools and services like help.heroku.com during a platform incident? […] The post Incident Preparation:…
These are archived from the now defunct su3su2u1 tumblr. Since there was some controversy over su3su2u1's identity, I'll note that I am not su3su2u1 and that hosting this material is neither an endorsement nor a sign of agreement. Harry Potter and the Methods of Rationality full review I opened up a bottle of delicious older-than-me scotch when Terry Pratchett died,…
These are archived from the now defunct su3su2u1 tumblr. A Roundabout Approach to Quantum Mechanics This will be the first post in what I hope will be a series that outlines some ideas from quantum mechanics. I will try to keep it light, and not overly math filled- which means I’m not really teaching you physics. I’m teaching you some…
In my previous post I wrote about Flambda, which is the single biggest feature coming to OCaml in this release. In this post, I’ll review the other features of 4.03 that caught my eye.
29 Feb 2016
GoCardless has helped businesses in the hospitality sector like Bookatable and Zenchef. Here’s how.
At $DAYJOB I work on a very large Go application; hundreds and hundreds of packages. Recently I’ve been trying to untangle some code that has inadvertently grown huge trunks of dependencies. I suspect this is what is causing the time taken to link our tests to become the subject of ridicule. I’ve tried previously to […]
People need to realize that is not enough to have a nice website with a ton of animations and effects. There is no point having such a website if I can't scroll it, while CPU and coolers go crazy. And I use latest MacBook with maxed hardware. Can't imagine trying to use those websites on the old machine (or IE8-9).…
Thoughtworkers in North America sent a message to the UN Climate Summit (COP21) in Paris last December by creating “Climate Ribbons” reminding negotiators what we stand to lose if a binding carbon-reduction treaty does not succeed. Their ribbons were part of a massive art installation that was central to events surrounding the UN Summit, called the Climate Ribbon, co-organized by…
Senior executives at two of the world’s largest asset management firms recently told us that the industry is filled with bloated enterprises...companies that are designed to move slowly, where good ideas die at the hands of local fiefdoms and bureaucratic decision-making. Their chief complaint? Slow and insufficient response to market changes. Read part one in our four-part series exploring the…
27 Feb 2016
Please note that I'm not using Jekyll anymore, so this post might be outdated. Update, November 2017 # I don't use this setup anymore, it might be outdated, proceed with caution. Original post # As you probably know this blog is powered by Jekyll. It is a really nice platform, but it lacks a few things I'm used to during…
Please note that I'm not using Jekyll anymore, so this post might be outdated. It is nice to use post.excerpt instead of post.content on your Jekyll home page, but then users can't see if there is more to read until they open the whole post. To add Read more link, you can use this simple snippet. {% if post.excerpt !=…
26 Feb 2016
Today we are introducing Add-on Controls for Heroku Enterprise customers. This new feature enables team leads to allowlist specific add-ons for approved use within their organization, choosing from our marketplace of over 150 add-on services. The ability to standardize the add-on technologies being used across all the apps and developers in their organization is something […] The post Introducing Add-on…
BHAG: Big Hairy Audacious GoalJames Collins and Jerry Porras proposed the term ‘Big Hairy Audacious Goal’ in their 1994 book Built to Last: Successful Habits of Visionary Companies.
This is part 3 of a series. Read part 1 and part 2.
25 Feb 2016
Keeping client and server in sync can be tough when building a single page app, and involves tons of boilerplate code. In this write up we’ll combine the best of two worlds by hooking up Angular 2 with Relay, making your workday much more fun and productive! This technology is so promising, that we’re running an […]
If you’re programming in more advanced languages like Scala or Ceylon, or even JavaScript, “nested functions” or “local functions” are a very common idiom to you. For instance, you’ll write things like fibonacci functions as such: (Question from Stack Overflow by Aaron Yodaiken) The f() function contains a nested g() function, which is local to … Continue reading (Ab)using Java…
2016 was another record breaking year for Direct Debit in the UK. Find out how flexible Direct Debit solutions have opened up the system to businesses of all sizes
Back in September, Codinghorror wrote a popular post on the state of android Javascript performance on Discourse’s Meta forum. It drew a lot of attention, and led to some fascinating discussions on our forum and behind the scenes with browser engineers. The poor performance of Discourse on Android was already old news to us at that point: we started paying…
24 Feb 2016
A big update to the beloved Python web framework known as Django was released recently: Django 1.9. This release contains a long list of improvements for everything from the graphical styling of the admin to the ability to run your test suite in parallel. Our favorite improvements to the framework were, of course, all about […] The post Django 1.9’s…
Working as part of an agile development team for the first time can be difficult for UX Designers. You need to adjust the way you work and find a different rhythm. This transition can be difficult to make as it’s often about subtle differences rather than a complete change of job. You’re still solving the same problems and doing the…
23 Feb 2016
Again, I've seen it somewhere on the internet and recreated it. This one uses jQuery, although I plan to rewrite it to vanilla JavaScript. It switches between two sides of the cube, every time you hover. Depending from which side cursor entered the cube, it will rotate in opposite direction. It is fully responsive, and on touch devices, direction depends…
It is very easy to forget about performance testing and its importance while delivering software under tight deadlines. It is also a challenge to convince the client to start with performance testing right from the beginning of the project, rather than treat it as a second class citizen.
If you know some Sass, you're probably a lot further than you think to understanding and diving into the world of modern JavaScript. This post showcases some of the similarities.
22 Feb 2016
This has caught me by surprise. After studying the Kotlin language to learn about how to best leverage this interesting new language for jOOQ, I stumbled upon this puzzler. What do you think the following program will print? fun main(args: Array) { (1..5).forEach { if (it == 3) return print(it) } print("done") } Well… You … Continue reading A Very…
The asset pipeline is the slowest part of deploying a Rails app. How slow? On average, it’s over 20x slower than installing dependencies via $ bundle install. Why so slow? In this article, we’re going to take a look at some of the reasons the asset pipeline is slow and how we were able to […] The post Speeding Up…
Please note that I'm not using Jekyll anymore, so this post might be outdated. Jekyll comes with simple pagination which has only Newer and Older links. I wanted a little bit more, now pagination shows at least five pages, with current in the middle. On the larger screens there are also first and last page links. Newer and Older links…
Well I saw a pretty nice mockup on Dribbble and decided to make it for fun. It didn't include a mobile/responsive solution, so I came up with my own. Check the demo. This is a pure CSS solution - it uses the :target selector for changing states. Find more about :target on MDN. This is neat, as it also can…
“Different clients have different needs and they expect something different from you. If you have only one API gateway trying to fulfill all requirements, it gets messy,” explains Lukasz Plotnicki, software developer and Thoughtworker from Hamburg.
After gazing into my magic crystal ball for the first two months of 2016, I can now confidently (with 63.4% ± 42.3657 certainty) predict what’s going to be hot in 2016 in the world of data. Since it’s unlikely that anyone else in the entire tech community is writing an article like this, I feel compelled to share my prescient…
21 Feb 2016
Everything starts with a Hello World so does this blog. In the first couple of weeks, everything will be under heavy development, until I get it the way I want. As I really enjoy making stuff, I decided to try to make small JavaScript or CSS (SASS) plugin/script every week. Those are going to be both big and small, proof…
19 Feb 2016
Go-kit is a distributed programming toolkit for building microservices. It solves the common problems encountered while building distributed systems, so you can focus on your business logic. This article starts with a bit of background on microservices, then guidance on how to get started with Go-kit, including instructions on getting a basic service up and […] The post Microservices in…
Anmol combines NASA data with MapBox and PubNub to build a real-time map showing the location and path of the ISS, in real time.
Anmol combines NASA data with MapBox and PubNub to build a real-time map showing the location and path of the ISS, in real time.
Recently I became enamored with The Witness and after thinking about the game for a long time decided to sit down and record a little essay about it. Check it out below!
18 Feb 2016
Have you been writing a lot of code following the Mute-Design-Pattern™ lately? E.g. There’s an easier way with Java 8! Just add this very useful tool to your Utilities or Helper class: Now you can wrap all your logic in this nice little wrapper: Done! Even better, in some cases, you can use method references
DEAR SIR, I HAVE THE BELIEVE YOU ARE A REPUTABLE AND RESPONSIBLE AND TRUSTWORTHY PERSON I CAN DO BUSINESS WITH FROM THE LITTLE INFORMATION SO FAR I GATHERED ABOUT YOU DURING MY SEARCH FOR A PARTNER AND BY MATTER OF TRUST I MUST NOT HESITATE TO CONFIDE IN YOU FOR THIS SIMPLE AND SINCERE BUSINESS. […]
Surprisingly, I don’t have any backups of my stuff. Apart from my Microserver Gen8 FreeNAS replication project which was necessary for my photos and personal media I don’t have any backups of my VM hosts, laptops or machines I use everyday which is very, very bad. A lot of my stuff is stored on RAID or RAID-like systems which I…
17 Feb 2016
Based in Tel Aviv, Israel, Vitali Margolin is the Head of R&D for Roomer. Vitali leads a team of seven developers who built and operate the travel marketplace www.roomertravel.com and the travel protection service Life Happens, both running on Heroku. What are you running on Heroku? The four big projects are: the Roomer website, our […] The post Building a…
16 Feb 2016
Before I move on with the actual article, I’d like to give credit to Daniel Dietrich, author of the awesome vavr library, who has had the idea before me: @lukaseder try with a static method <T, T1 extends T, … Tn extends T> Seq<T> toSeq(T1 t1, …, Tn tn) { … } (from my mobile … Continue reading An Ingenious…
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:…
By definition, Distributed Development is difficult due to the ‘tyranny of distance’. In fact, in the early days of Agile adoption, some purists believed that Agility and Distributed Development could not coexist, going by this principle - “The most efficient and effective method of conveying information to and within a development team is via face-to-face conversation”. Distributed Development is a…
15 Feb 2016
I'm often asked by other developers about parts of the pixel workflow, and what fires when and why, so I figured it might be worth putting up a little reference for what's involved in shipping pixels to screen.
14 Feb 2016
We explore two approaches to support both callbacks and promises in async JavaScript modules: 1) promisify callback functions, 2) make callback optional and return promise. The second allows flexible use of callbacks or promises.
Team Bahmni at the OpenMRS Worldwide Summit 2015
12 Feb 2016
This is a pretty common task: encode JSON and send it to a server, decode JSON on the server, and vice versa. Amazingly, the existing resources on how to do this aren't very clear. So let's walk through each case, for the following simple User object: type User struct{ Id string Balance uint64 } Sending […]
11 Feb 2016
Today is a big day for Heroku Pipelines — our continuous delivery feature that provides a visual sequence of app environments in which to test, stage, and deliver code through to production. Pipelines is now released for General Availability (GA). Heroku Pipelines provides teams of all sizes a new way to visualize and manage the […] The post Heroku Pipelines…
Some APIs are set in stone. For instance, the JDK’s. Or public APIs, like the one between a database and a database client (e.g. JDBC). This makes designing such APIs rather difficult as a lot of thinking needs to be done prior to publishing an API. Which means that being defensive when designing the API … Continue reading Dear API…
CSS Filters are awesome, but you can't do individual channel manipulation with them. Enter: feColorMatrix, SVG filter effect method that allows for really in-depth pixel value manipulation for even better image filters.
10 Feb 2016
booleans, am I right? What a wonderful piece of technology! They help us solve so many problems…
9 Feb 2016
This is usually a tech blog, but every now and then, we make an exception when there’s something important to say. Today, I’m going to criticise a lot of our industry’s understanding of support. Who is this article for? It’s for every software engineer giving support to users and/or customers, and every manager who works … Continue reading The 5…
You might want/need to check out repos locally as several different Github users. For example, my Github account is kevinburke, but I push code at work as kevinburkeshyp. If I could only commit/push as one of those users on each machine, or I had to manually specify the SSH key to use, it would be […]
This is Chapter 2 in the series on The Unfinished Business of Organizational Transformation.
8 Feb 2016
One of the most awesome features of the Oracle database is Oracle AQ: Oracle Database Advanced Queuing. The AQ API implements a full fledged, transactional messaging system directly in the database. In a classic architecture where the database is at the center of your system, with multiple applications (some of which written in Java, others … Continue reading Using Oracle…
Data is abundant, data is big, and big is a problem. Let me start with an example. Let’s say you have a list of movie titles and you want to learn their genre: romance, action, drama, etc. And maybe in this scenario IMDB doesn’t exist so you can’t scrape the answer. Well, the title alone is almost never enough information.…
To innovate, is to enter the unknown. Doing this induces anxiety, even among seasoned professionals. In most organisations—where failure is not an option—leaders have many fears. They fear what they do not know. They fear that competitors will outpace them. Most of all, they fear their inability to find success. This fear causes rational leaders with no permission to fail…
7 Feb 2016
You may have already heard that InfluxDB 0.10 GA has been published a few days ago. In my case the most interesting improvement are the much higher compression rates: At the moment my co-workers of NeosIT and I are collecting performance data from four internal virtual machines. Have been running […] The post Migrating InfluxDB from 0.9.6 to 0.10.0 GA…
6 Feb 2016
Sandi Metz’s post on abstraction struck a chord with me recently. I was working with a piece of code which looked like this (in pseudo code): func Start() { const filename = "..." createOuputFile(filename) go run(filename) } It turned out that createOutputFile was written in an obscure way which first caused me to look at […]
5 Feb 2016
Three months ago we announced that Parse would be opening their Cloud Code product so that their customers would be able to deploy their mobile backends to Heroku. This allowed Parse customers to use a full Node.js environment with Cloud Code. With Parse’s recent announcement, we’re taking that one step further, by allowing you to […] The post Deploy Parse…
The attack on the four Tanzanian students in Bengaluru, including a young, 21-year old woman, has to be called out for what it is - a case of racist, mass violence. What is shameful is not just the mob's targeting of the African students for an accident at the same spot earlier on, that they were completely unconnected with, but…
4 Feb 2016
As companies move to become a digital enterprise they are often faced with a serious disconnect between their desires, strategies and execution. Building a digital enterprise takes considerable time and money, as the business needs to build new high-impact customer facing applications while revamping old, legacy IT systems and architectures.