What makes a good programmer? It’s an interesting question to ask yourself. It makes you reflect on the craft of software development. It is also a good question to ask your colleagues. It can trigger some interesting discussions on how you work … Continue reading →
30 Jun 2014
With all the current brouhaha about the real definition of innovation between two of the most famous academicians from Harvard University, it seems suddenly innovation has become a dirty word, misunderstood and misrepresented in executive circles.
Many years ago, Melvin Conway had observed that how organizations were structured would have a strong impact on any systems they created. His observation has become known as Conway’s Law, and the collective experiences of both my colleagues and myself have time and again reinforced the truth of this statement.
29 Jun 2014
By writing a Dockerfile we can containerize a simple Go echo server app. The Dockerfile installs Go, copies the server code, exposes the port, and defines the command to run the app. Building the Dockerfile produces an image that can be run as a container. The containerized Go app can then be easily distributed and run anywhere Docker is installed.
28 Jun 2014
Like all children who grew up in the 80’s, I was, and still am a huge fan of Ghostbusters. While recently re watching Ivan Reitman’s homage to New York, I spotted something which has gone unnoticed on the IMDB trivia page. Shortly after being evicted from the University, Ray Stantz (Aykroyd) and Peter Venkman (Murray) […]
I’ve been spending quite some time lately playing around with RNN’s for collaborative filtering. RNN’s are models that predict a sequence of something. The beauty is that this something can be anything really – as long as you can design an output gate with a proper loss function, you can model essentially anything. In the case of collaborative filtering, we…
27 Jun 2014
This is a post about data races. The code for this post lives on Github, github.com/davecheney/benandjerry. The example program simulates two Ice cream makers, Ben and Jerry, who greet their customers randomly. package main import "fmt" type IceCreamMaker interface { // Hello greets a customer Hello() } type Ben struct { name string } func (b *Ben) […]
Once upon a time it used to be difficult to create integration tests in Ember.js. Fortunately, the framework has come a long way and it’s now really easy to get integration testing working in your application. This screencast shows how to set it up with ember-cli: There is some boilerplate code required that you’ll need at the top of your…
I’ve always been particular about the look of things. I’m a designer. So it’s both a blessing and a curse to be constantly tuned in to the lopsided accidental world around me. I’m always looking for evidence of design and underlying structure and marveling at the mastery and the chaos of the built world. My eyes are a high-bandwidth channel.…
To use points or not to use them, that is often the topic of a lot of discussion and conjecture. And the humble point is often lost/misunderstood in all the talk. So I thought I'd dedicate this post to do a Point 101 to refresh our understanding of the point, and its usefulness in estimation. What is a Story Point…
This article originally appeared in DataIQ. Author David Reed is the editor of the publication.
In Memory of Luke Barrett Beloved son, brother, husband, father and friend. Luke died on 26 June 2014. He was 42. Thoughtworks mourns the sudden and tragic passing of Luke Barrett. Luke was the leader of our European business, but also a friend, a colleague, a mentor and a role model to Thoughtworkers around the world.
The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data.
26 Jun 2014
Writing tests that use an actual database is hard. Period. Now that this has been established, let’s have a look at a blog post by Marco Behler, in which he elaborates on various options when testing database code, with respect to transactionality. Testing database transactions is even harder than just testing database code. Marco lists … Continue reading Stop Unit…
Here are three ways to handle and receive messages via subscribed channels with Cocoa
Here are three ways to handle and receive messages via subscribed channels with Cocoa
The third part of the “Is TDD Dead?” hangout series with Martin Fowler, Kent Beck and DHH centered around “Feedback and QA” - the nuances of feedback and the role of the QA. After the 1st part, Fabio Pereira published his thoughts “Mockists Are Dead.
25 Jun 2014
When performing database migrations, we at Data Geekery recommend using jOOQ with Flyway – Database Migrations Made Easy. In this post, we’re going to look into a simple way to get started with the two frameworks. Philosophy There are a variety of ways how jOOQ and Flyway could interact with each other in various development … Continue reading Flyway and…
24 Jun 2014
How to use PubNub multiplexing to leverage multiple Publish/Subscribe channels in an AngularJS web or mobile application
How to use PubNub multiplexing to leverage multiple Publish/Subscribe channels in an AngularJS web or mobile application
Infrequent SQL developers often get confused about when to put parentheses and/or aliases on derived tables. There has been this recent Reddit discussion about the subject, where user Elmhurstlol was wondering why they needed to provide an alias to the derived table (the subselect with the UNION) in the following query: The question really was … Continue reading Should I…
On my last project, the client categorically asked the team to ensure that the Django app we were developing had first-class support for Internet Explorer 8. Now I know a number of developers who would cringe at the mere mention of Internet Explorer (IE). I have even heard it said that the only use of Internet Explorer is to download…
23 Jun 2014
Most databases that support default values on their column DDL, it is also possible to actually alter that default. An Oracle example: Unfortunately, this isn’t possible in SQL Server, where the DEFAULT column property is really a constraint, and probably a constraint whose name you don’t know because it was system generated. But luckily, jOOQ … Continue reading SQL Server…
Here’s a simple puzzle with a neat story. A rich old woman is drafting her will and wants to distribute her expansive estate equally amongst her five children. But her children are very greedy, and the woman knows that if he leaves her will unprotected her children will resort to nefarious measures to try to get more than their fair…
The week of June 23rd was a good week for gophers in San Francisco. Go was a big part of Google I/O on Wednesday and Thursday, and on Monday Google run a Go SummerFest, a special instance of the GoSF meetup. I gave a talk at Go SummerFest and then later on another one during I/O. For more information about…
lldb stands for Llama-DB, and is a database of llamas you can use to debug programs compiled with clang (lldb is to clang like gdb is to gcc). If you already know how to use gdb, then here’s a translation of the common commands. Disclaimer: There is a ton of tutorials and pages about all of the awesome features and…
22 Jun 2014
Three months ago I changed jobs, and in the process switched from Java to Python. Here are the differences that have stood out for me since making the switch. I have previously worked a bit in Ruby, but I had no … Continue reading →
A few days ago, after reading yet another article on the critical importance of only hiring the best people — yet being unable to offer any concrete suggestions on how to do this, save slavishly repeating the “best people” homily — I posted the following https://twitter.com/davecheney/status/479126596545036288 I find twitter to be a hopeless medium for […]
21 Jun 2014
One for the weekend: Big Data Big Data pic.twitter.com/18VPE9LGDq — Victor Agreda Jr (@superpixels) June 19, 2014
20 Jun 2014
At Data Geekery, we love Java. And as we’re really into jOOQ’s fluent API and query DSL, we’re absolutely thrilled about what Java 8 will bring to our ecosystem. Every Friday, we’re showing you a couple of nice new tutorial-style Java 8 features, which take advantage of lambda expressions, method references, default methods, the Streams … Continue reading Java 8…
Have you noticed the job postings? Design companies want developers. Technology specialists are competing for designers and big business strategy firms are gobbling up entire agencies and boutiques whole. What’s going on with this wholesale rush to stitch together firms from tribes with wildly different professional disposition?
The points I'm going to discuss here helped me a lot to become more aware of my tests and what I can do to improve them. If you have experience in writing tests, you probably know most of what I'm going to talk about, but it's still good to refresh your memory and add more references on the subject. If…
19 Jun 2014
In Africa, there’s a saying: “If you want to go fast, go alone. If you want to go far, go together.” It’s a great mindset with regard to software design and development - we should always encourage a joint working environment. One way to “go together” is through workshops. We do it a lot at Thoughtworks - whether it’s to…
The Protractor community is getting bigger by the day. We have blogged about ways to get hands-on with Protractor and how to test your AngularJS apps with it. In this blog, let’s look beyond Protractor’s support for writing UI Tests for AngularJS.
18 Jun 2014
jOOQ Goes JavaOne™ We’re super excited to announce that our CEO and Head of R&D Lukas will be heading to San Francisco this fall to talk about jOOQ at JavaOne™! This is not just great for Data Geekery and jOOQ, but also for the whole Java / SQL ecosystem, as we believe that the Java / SQL … Continue reading…
At Clever we help 1 in 6 schools in the country sync data on an hourly basis from their student information systems (SISes) to the ed tech apps that their teachers and students use. These 20,000 schools sync about 50 GB of data in aggregate – that’s over a terabyte of data per day. While […] The post The Best…
17 Jun 2014
We'll walk you through the 5 challenges of Internet of Things connectivity when developing IoT applications.
We'll walk you through the 5 challenges of Internet of Things connectivity when developing IoT applications.
One obvious thing to anyone living in NYC is how tourists cluster in certain areas. I was curious about the larger patterns around this, so I spent some time looking at data. The thing I wanted to understand is: what areas are dominated by tourists? Or conversely, what areas are dominated by locals? After some looking around, I found this…
One of the many challenges with building or refreshing a website is the selection of a Content Management System (CMS). Despite our best efforts the CMS can often be a source of difficulty in a project, but there are alternatives. Read about the approach we took on www.thoughtworks.com to developing functionality to support content management in an incremental fashion.
Today, I chat with Anna Royzman (@QA_nna) - Conference Chair for this year’s annual conference of the Association for Software Testing (AST) scheduled on August 11th-13th in New York City, and the Chair of AST's test leadership Special Interest Group (Leadership SIG).
15 Jun 2014
Yesterday the first Hackcamp Wolfsburg took place at the Schiller 40. Steven Schwenke did a great job to organize and prepare the event. Despite the fact that only 5 persons, including myself, attended the event it has been a great success. Beneath my coworkers Kevin and Niko from NeosIT and […] The post Review Hackcamp Wolfsburg June 2014 appeared first…
14 Jun 2014
Check out Bazaarvoice IO 2014 Technical Conference keynote speaker, Theo Schlossnagle, @postwait, CEO of Circonus discussing The Rise of the Machines and Data PTSD
Check out Bazaarvoice IO 2014 Technical Conference keynote speaker Otis Gospodnetic, @otisg, Founder of Sematext, Committer on Lucene, Solr, Nutch, Mahout, OpenRelevance, and author of Lucene in Action discussing the Open Source Search Evolution
Check out Bazaarvoice IO 2014 Technical Conference Keynote speaker Bob Metcalfe, @BobMetcalfe, Professor of Innovation at the University of Texas, discussing Metcalfe’s Law After 40 Years of Ethernet
Check out Bazaarvoice IO 2014 Technical Conference keynote speaker Greg Brockman, @thegdb, CTO of Stripe and designer of the Stripe CTF contests discussing how they scaled Stripe from 4 to 94 employees
After deep consideration with our lawyers, we would like to follow suit with Oracle and provide you with the following legal disclaimer about our jOOQ-related conference talks, as presented at the awesome GeekOut conference in Tallinn. Please do read them and take them seriously.
13 Jun 2014
At Data Geekery, we love Java. And as we’re really into jOOQ’s fluent API and query DSL, we’re absolutely thrilled about what Java 8 will bring to our ecosystem. Java 8 Friday Every Friday, we’re showing you a couple of nice new tutorial-style Java 8 features, which take advantage of lambda expressions, extension methods, and … Continue reading Java 8…
This blog post explains how to implement email open tracking in Symfony using a transparent tracking pixel. It provides code examples for generating a tracking image response and handling the tracking logic in a controller.
In the first two parts of this series, we talked about how SoundCloud started breaking away from a monolithic Ruby on Rails application into…
12 Jun 2014
Did you know that Heroku databases can be forked? Forking a database creates a byte-for-byte copy that can be used for testing and development. It is a useful tool that allows teams to be agile with their data. Today, forking databases is becoming faster. Fast forking reduces the time to create a fork by hours […] The post Faster Database…
Tint is a social media aggregator that enables moderators to curate and publish social media content to a live dashboard in real time with PubNub
Tint is a social media aggregator that enables moderators to curate and publish social media content to a live dashboard in real time with PubNub
Research released earlier this month by MasterCard and the University of Oxford has shown that, despite believing that handling cash is as unhygienic and dirty as public transport hand rails, less than 20% of us wash our hands after holding it.
In the previous post, we talked about how we enabled our teams to build microservices in Scala, Clojure, and JRuby without coupling them…
For those of us who are not familiar with the Theory of Constraints, in simple terms it talks about identifying and removing bottlenecks from environments while trying to take an overall view of the system rather than optimize locally. Local optimization is something we do in everyday life. I would rather not have garbage on my doorstep, but its alright…
11 Jun 2014
Getting angular’s watches right can be quite a challenge. There are several ways to watch values from a controller, be it $watch, $watchCollection or $watchGroup. Luckily there’s this amazing article of different ways to watch data that will solve most problems you might encounter. However, most doesn’t mean all: when creating the new admin screens […]
Most of SoundCloud’s products are written in Scala, Clojure, or JRuby. This wasn’t always the case. Like other start-ups, SoundCloud was…
When I tell you a story of a visually impaired man lost in a hotel without braille signage, or one of a woman in a wheelchair unable to enter a local restaurant or use their bathroom, the reaction is predictable. You recognize it as unfair, wrong — not just because it's illegal, but because access is a basic human right.…
On May 12 a colleague sent an email mentioning the #VaiMudarNaCopa ("#It'sGoingToChangeInTheWorldCup) Hackaton, an initiative created by the Open Knowledge Foundation. The email asked participants to create either web or mobile apps that would support peaceful and democratic protest movements during the 2014 FIFA World Cup Brazil.
I believe that the Testing Pyramid is one of the best analogies to help a team develop a strategy for writing tests in a reliable and scalable manner. I have used it many times, and have found its application to be immensely helpful.
Over the past few years I’ve noticed a race towards hi-fi prototyping. In addition to more and more designers picking up HTML, CSS and JavaScript, software companies have been working hard to lower the barrier to entry. With tools like Axure or iRise almost anyone with an eye for design can pull together near-real functional prototypes.
10 Jun 2014
Wondering whether it's time to switch from Standing Order to Direct Debit? Try our quick quiz to find out whether Direct Debit could be a better choice for your business.
Grace Hopper Celebration for Women in Technology (GHC) is an amazing gathering of almost ~5,000 technologists (90% identify as female) ranging from college students to professionals to professors. We have chosen to support this conference for the past 8 years, since the Anita Borg Institute’s mission clearly aligns with our values and our own mission to advocate on behalf of…
Práticas de DevOps e Entrega Contínua ajudam a aumentar a frequência de deploys na sua empresa, ao mesmo tempo aumentando a estabilidade e robustez do sistema em produção. Neste webinar, Danilo Sato, autor do livro "DevOps na prática: entrega de software confiável e automatizada", discute princípios, práticas e ferramentas de DevOps, cobrindo: Como automatizar o build e deploy de uma…
#1 Structure #2 Dependency Injection #3 Extension of the HTML #4 Scope #5 Modules
9 Jun 2014
I’m pretty sure you’ve gotten it wrong in numerous ways, so far. And you probably won’t get it right any time soon. So why waste your precious time on SQL tweaking, when you could be implementing business logic? Let me explain… It hasn’t been until the recent SQL:2008 standard that what MySQL users know as … Continue reading Stop Trying…
Hey everybody, I’m looking for some fun books (mostly fiction) to read this summer. What would you recommend? One book I recently enjoyed was The Martian, a novel about an astronaut stranded on Mars who needs to figure out how to survive and get home with minimal supplies. It was a little heavy on the […]
8 Jun 2014
Is software antifragile? I think so. I recently finished the book Antifragile – Things that Gain from Disorder by Nassim Nicholas Taleb. I liked it a lot, and I think the ideas in it are quite useful when examining various systems and … Continue reading →
During my time at Spotify, I’ve reviewed thousands of resumes and interviewed hundreds of people. Lots of them were rejected but lots of them also got offers. Finally, I’ve also had my share of offers rejected by the candidate. Recruiting is one of those things where the Dunning-Kruger effect is the most pronounced: the more you do it, the more…
7 Jun 2014
Anthony Starks has remixed my original Google Present based slides using his fantastic Deck presentation tool. You can check out his remix over on his blog, mindchunk.blogspot.com.au/2014/06/remixing-with-deck. I was recently invited to give a talk at Gocon, a fantastic Go conference held semi-annually in Tokyo, Japan. Gocon 2014 was an entirely community-run one day event combining […]
6 Jun 2014
At Data Geekery, we love Java. And as we’re really into jOOQ’s fluent API and query DSL, we’re absolutely thrilled about what Java 8 will bring to our ecosystem. Java 8 Friday Every Friday, we’re showing you a couple of nice new tutorial-style Java 8 features, which take advantage of lambda expressions, extension methods, and … Continue reading Java 8…
Find out how to setup Direct Debit without a provider like GoCardless
At Clever we’re building a way for students and teachers to start using learning applications with a click of a button. This is incredibly difficult to do in a school environment, because existing infrastructure is typically incompatible with a world where students use software on the internet. The backbone of the infrastructure at most schools […] The post Engineering at…
After hearing the discussion about TDD by Martin Fowler, Kent Beck and DHH. I thought of putting down my 2 cents about TDD - why I follow it, and why I find it useful as a thought process for solving design problems.
DevOps, a movement of people who care about developing and operating reliable, secure, high performance systems at scale, has always — intentionally — lacked a definition or manifesto. However (and this is fascinating in its own right) that doesn’t mean that we can’t measure the impact of DevOps, or how good people are at doing it. The proof of this,…
5 Jun 2014
How to build mobile group chat apps using 1 line of JavaScript (aka 3 libraries).
How to build mobile group chat apps using 1 line of JavaScript (aka 3 libraries).
Theory only helps till a point with test automation (as with a lot of development practices). So in this article we're going to follow a practical approach to use Protractor. Following these 3 steps below, will give you sufficient hands-on practice to proceed further with Protractor.
4 Jun 2014
The Go Programming Language (Golang) SDK is now available on PubNub, the world's leadsing real-time communication platform.
The Go Programming Language (Golang) SDK is now available on PubNub, the world's leadsing real-time communication platform.
For packages go build builds your package then discards the results. go install builds then installs the package in your $GOPATH/pkg directory. For commands go build builds the command and leaves the result the current working directory. go install builds the command in a temporary directory then moves it to $GOPATH/bin. If you liked this […]
Find out when & why you should consider getting your own SUN
It's important to recognize the people that have contributed to your project, but it can be annoying to keep your project's AUTHORS file up to date, and annoying to ask everyone to add themselves in the correct format. So I did what any good engineer should do, and automated the process! I added a simple […]
Thoughtworks joins Reset the Net on 5 June Thoughtworks will participate in Reset the Net, an initiative for businesses, web developers and Internet users to take back their privacy. Given the absence of meaningful government or industry reform one year after the shocking revelations of Edward Snowden, Internet users need to take their own privacy seriously.
Making wholesales changes within an IT organization is risky, expensive, and prone to failure. If your combined systems have evolved into a tangled web then you need to lay the groundwork to evolve to a solution. You have several options for improvement. A one time step change of systems or practices can yield good, if mixed, results. For example, if…
3 Jun 2014
(Note that I’m not talking about "processing collections in parallel, which is definitely not an anti-pattern…) I figured it was worth starting to blog about anti-patterns I see frequently on Stack Overflow. I realize that some or all of these patterns may be collected elsewhere, but it never hurts to express such things yourself… it’s … Continue reading Anti-pattern: parallel…
Time for another screencast! This one is shorter and shows how easy it is to wrap a jQuery plugin in an Ember.js component for reuse.
2 Jun 2014
In most cases, simply creating an Oracle SEQUENCE with all defaults is good enough: This sequence can then be used immediately in triggers when inserting new records in a table: But if your table has heavy throughput with millions of insertions per day (e.g. a log table), you better configure the sequence cache correctly. The … Continue reading Don’t Forget…
Optimization is by far one of the richest ways to apply computer science and mathematics to the real world. Everybody is looking to optimize something: companies want to maximize profits, factories want to maximize efficiency, investors want to minimize risk, the list just goes on and on. The mathematical tools for optimization are also some of the richest mathematical techniques.…
Okay, it’s been a while since I’ve blogged. Let me tell you about the 30 day challenges I’ve been doing and what I learned: – March 2014: I went back to doing no external email, and I learned this one weird, simple trick that helped. In previous “no email” challenges, I relied on sheer force […]
When does Agile fail? I’ve worked on a number of Agile projects throughout my 13 year career, and my experience with agile has been bittersweet. I was thus quite excited by the opportunity to work with the geeks that literally wrote the book on agile, and have since gained a more well rounded understanding of the concepts and practices along…