In this talk, Lydia Katsamberis discusses imposter syndrome and the Node.js community, and feeling like a "real" developer.
22 Dec 2014
In this tutorial, we'll show you how to send and receive iOS Push Notifications with APNS, PubNub, and PhoneGap for web, mobile, and devices.
In this tutorial, we'll show you how to send and receive iOS Push Notifications with APNS, PubNub, and PhoneGap for web, mobile, and devices.
We all know that Oracle’s DATE is not really a date as in the SQL standard, or as in all the other databases, or as in java.sql.Date. Oracle’s DATE type is really a TIMESTAMP(0), i.e. a timestamp with a fractional second precision of zero. Most legacy databases actually use DATE precisely for that, to store … Continue reading Are You…
Previously I posted notes and links for my talk about “Ember at 10 feet” from the Embergarten Saturday Symposium. Today my awesome friends at Unspace posted a video of the talk, which you can watch below: Source Code | Online Demo
“Change is difficult. Not changing is fatal” - William Pollard Being an Agent of Change As part of my attempt to deepen my understanding on the experiences Thoughtworks wants to provide to its clients, the last couple of months I faced the gamut of traits underlying the single word that differentiates a developer from a consultant developer.
If you’re here, you might have come across our three pillar model. As Thoughtworkers, we strive to achieve a balance between running a sustainable business, bringing passion for software to work and advocating for social and economic justice. My role as a developer consultant at Thoughtworks gives me a great way to address the first two pillars. For the third…
21 Dec 2014
Julian aims to find and apply ways to make technology useful and adapt to the needs of users, rather than expecting people to cope with poorly designed software or technology. He also focuses on improving the effectiveness and efficiency of software testing, particularly blending automated and interactive testing. The work includes web automation e.g. as part of the WebDriver Selenium…
20 Dec 2014
I was talking with some data engineers at Spotify and had a moment of nostalgia. 2008 I was writing my master’s thesis at Spotify and had to run a Hadoop job to extract some data from the logs. Every time I started running the job, I kept hearing this subtle noise. I kept noticing the correlation for a few days…
Life as a STEP Intern at Thoughtworks is full of learning opportunities. STEP is a two-year intensive entry-level programme for polytechnic diploma holders(10+3) such as myself. We intern at Thoughtworks, get a degree and then go on to be consultants at the company.
19 Dec 2014
After more than 30 years as a developer, architect, and consultant, including nine years running my own consulting and custom software development company, it was time for a change. So I started looking for an employer that was a good fit for my skills, ambitions, and personality - or at least two out of three!
You probably know the story: 13 years ago, 17 people gathered at a ski lodge in Utah to discuss software development and the direction the industry was taking, and the Agile Manifesto was born.
Recently, Hamburg played host for our Global Experience Design summit, an internal event attended by Experience Design Thoughtworkers from all over the globe. We thought it would be fitting to use this opportunity to share our Experience Design (XD) practice and our collective international experience to the wider XD community in Hamburg. For the location of the event we chose…
Mobile outreach is becoming an essential part of every organisation's digital strategy. Mobile product owners are losing sleep over constant churn of UI refinements, OS releases and additional hardware support that we have been seeing in Android and iOS. If a business is spread wider than those two mobile platforms, things get even more complicated.
18 Dec 2014
We’ve just added support for the EVERY() aggregate function (#1391) to jOOQ, and would like to take the opportunity of letting you know of this true SQL gem that can come in handy EVERY(now and then) (pun intended). Let’s assume we have four books in our table: Now the question is: Is EVERY() ID lower … Continue reading A True…
In this tutorial, we'll show you how to send and receive Android Push Notifications with GCM, PubNub, and PhoneGap for web, mobile, and devices.
In this tutorial, we'll show you how to send and receive Android Push Notifications with GCM, PubNub, and PhoneGap for web, mobile, and devices.
We’ve scoured our database of more than 3 million payments to bring to you some cold, hard facts about Direct Debit. This should help you decide whether or not Direct Debit is right for you.
During delivery of a product, there are times when I check the board and think "Ok, all is in hand with the stories in play. Great, I can start to focus more to the left". By 'left', I mean the Analysis area of the story wall, the right-hand side traditionally being Development and Done.
This short article was written in order to share that there are patterns and tools that, when combined, can provide automated tests with high business value and low cost in terms of code maintenance.
17 Dec 2014
How to build real-time publish/subscribe functionality into a go programming language application using PubNub and Golang SDK.
How to build real-time publish/subscribe functionality into a go programming language application using PubNub and Golang SDK.
Online payments systems can be tough to understand. In this article, we demystify payments and recommend a range of alternative systems for those specific non-Direct Debit use cases.
How much overhead should we expect from enabling integer overflow checks? Using a compiler flag or built-in intrinsics, we should be able to do the check with a conditional branch that branches based on the overflow flag that add and sub set. Code that looks like add %esi, %edi should turn into something like add %esi, %edi jo <handle_overflow> Assuming…
More Luigi presentations!
Managing the backlog is an important aspect of a functional team. It helps keeping a sustainable pace of relevant and good-quality deliveries. But sometimes you realize your backlog just became the user story version of a big ball of mud. It might not be too late to get it back on track, so let's take a look at some ways…
Thoughtworks tends to be a bit of a community magnet for technologists. Be it our open office space or the fact that we like working on cutting edge software technology, or that we employ smart people that other smart people like to hang with - we tend to do a decent job at being a community space for technologists. If…
This is a walk through of how to set up Google PageSpeed Insights within your existing gulp project. This way, you can get your page speed score information within your terminal without first needing to push your site to a live server.
16 Dec 2014
How to build an application with Python and JavaScript to fetch and stream report data from a MongoDB database.
How to build an application with Python and JavaScript to fetch and stream report data from a MongoDB database.
We’re excited to launch a new series on our blog: the jOOQ Tuesdays. In this series, we’ll publish an article on the third Tuesday every 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 … Continue reading jOOQ Tuesdays:…
At NYC Data Science meetup! Unfortunately the space is full but the talk will be livestreamed – check out the meetup web page for a link tomorrow.
15 Dec 2014
Securing a wireless home security system with Arduino, giving you a cheap way to keep an eye on your home from anywhere on Earth.
Securing a wireless home security system with Arduino, giving you a cheap way to keep an eye on your home from anywhere on Earth.
This is one of the more interesting recent Stack Overflow questions: Why does Iterable not provide stream() and parallelStream() methods? At first, it might seem intuitive to make it straight-forward to convert an Iterable into a Stream, because the two are really more or less the same thing for 90% of all use-cases. Granted, the … Continue reading Really Too…
The best place to start our journey through quantum computing is to recall how classical computing works and try to extend it. Since our final quantum computing model will be a circuit model, we should informally discuss circuits first. A circuit has three parts: the “inputs,” which are bits (either zero or one); the “gates,” which represent the lowest-level computations…
What is the half-life of programmer knowledge? It is quite common with claims that the half-life is something like 5 years. In other words, half of what you know about programming will be obsolete in 5 years. A similar sentiment … Continue reading →
I will start this by quoting the bashstyle’s readme:
Have you ever wondered what Agile Analytics and Big Data is all about? I did this summer. So I took the chance to interview Ken Collier about Agile Analytics during our North American Away Day. Ken is Director of Agile Analytics at Thoughtworks, has written a book on the topic and is a frequent speaker. The perfect person to help…
Background This is a story of my experience, albeit a very short one, of how testing in the oncology treatment domain transformed me. I hope it will inspire you too, to be better, to do more - regardless of your role! After having worked in software testing for many years, across various retail and enterprise domains, I felt I have…
14 Dec 2014
A few months ago I saw a cool mosaic effect in a Wired ad for CA Technologies. Here’s what part of the ad looked like: I liked the ad, so I wondered how they did it. Can you see out how to create a similar effect? Take a minute to figure it out as an […]
Every once in a while I see somewhere a wrong import to the old, deprecated junit.framework instead of org.junit.
Imagine a project where the "deliverable" is a baby. Once a woman gets pregnant, the delivery time is extremely predictable, right? 9 months, on average, with some slight variations, of course, after all every project needs some risk mitigation. Replacing team members Meet Juliana: she's 7 months pregnant and ready to deliver Lucas to the world in about 2 months.…
I've been doing a lot of research and experimentation lately about how people learn. This post might give you some ideas to improve your own comprehension and think about your own learning style.
13 Dec 2014
I have updated my unofficial ARM tarball distributions page with prebuilt Go 1.4 tarballs. You can find them by following the link in the main header of this page.
11 Dec 2014
In this program, the size of variables of type x and y in memory varies by platform. package main func main() { const n = 4 type x [n]uint type y [n]int } By changing only one line can you ensure that variables of type x, and y always consume 16 bytes on all platforms […]
Sometimes there are these moments of truth. They happen completely unexpectedly, such as when I read this tweet: Good discussion of Facebook Flow – http://t.co/5KTKakDB0w — David J. Pearce (@whileydave) November 23, 2014 David is the author of the lesser-known but not at all lesser-interesting Whiley programming language, a language that has a lot of … Continue reading The Inconvenient…
Direct debit is a great way for charities to collect payments and the three main providers are GoCardless, Valldata & Rapidata.
There are three main ways you can switch your customers over to GoCardless, which option is right for you will depend on a few things including whether you were already collecting Direct Debit payments and which GoCardless product you’re using.
This is the last post about deep learning for chess/go/whatever. But this really cool paper by Christopher Clark and Amos Storkey was forwarded to me by Michael Eickenberg. It’s about using convolutional neural networks to play Go. The authors of the paper do a much better job than I would ever have done of modeling move prediction in Go and…
Do you prefer omnichannel or multichannel? Edutainment or interactive media? Native or hybrid? Applepay or CurrentC? E-comm/M-comm/M-POS? The world is now so heavily populated by digital acronyms, and terms, that unless your day is spent keeping up to speed with the new expressions then it is very easy to be baffled by words and leave you unsure in which direction…
10 Dec 2014
Bacstel-IP, Bacs approved software and the Bacs payment services website.
Back To School is the busiest time for any education company. Students, teachers, schools, software companies, and the rest of the education world are all gearing up for a new school year. Unfortunately, during the most critical time of the year, Clever’s infrastructure was throwing a fit. At the time, Clever was adding over a […] The post When your…
HealthHack 2014: The Story of a Bar Chart
9 Dec 2014
The Developers Conference (TDC) is a traditional IT event in Brazil, with editions in Florianópolis, São Paulo, and Porto Alegre. The conference became popular not only because of the high quality of the speakers, but also because of the diversity of topics. It’s appealing to many types of technologists - from students to IT professionals in big companies.
8 Dec 2014
Last Saturday our second Hackcamp Wolfsburg in 2014 took place. In the run-up to the Hackcamp I had suggested to use the NeosIT office as the event location. @stevenschwenke agreed to that and so I prepared our office on Friday evening. Before the event I expected a team programming session but […] The post Second Hackcamp Wolfsburg – December 2014…
From time to time, I find someone using the double curly braces anti pattern (also called double brace initialisation) in the wild. This time on Stack Overflow: In case you do not understand the syntax, it’s actually easy. There are two elements: We’re creating anonymous classes that extend HashMap by writing In that anonymous class, … Continue reading Don’t be…
Quantum mechanics is one of the leading scientific theories describing the rules that govern the universe. It’s discovery and formulation was one of the most important revolutions in the history of mankind, contributing in no small part to the invention of the transistor and the laser. Here at Math ∩ Programming we don’t put too much emphasis on physics or…
This week I will give a presentation at a local high school on what it is like to work as a programmer. I am volunteering (through the organization Transfer) to come to schools and talk about what I work with. … Continue reading →
Now that the Visual Studio 2015 Preview is available and the C# 6 feature set is a bit more stable, I figured it was time to start updating the Noda Time 2.0 source code to C# 6. The target framework is still .NET 3.5 (although that might change; I gather very few developers are actually … Continue reading C# 6…
My previous blog post about deep learning for chess blew up and made it to Hacker News and a couple of other places. One pretty amazing thing was that the Github repo got 150 stars overnight. There was also lots of comments on the Hacker News post that I thought were really interesting. (See this skeptical comment for instance). A…
Identifying and Grouping Issues for a Reverse Retrospective In my earlier post, I described how teams might have many known and recurring issues that are not addressed through a regular retrospective. A Reverse Retrospective begins with issues captured on cards and placed on a wall by the facilitator. The participants then generate as many solutions for each issue as possible.
Everybody knows why innovation is tough for large organisations. All the literature is the same, from Clay Christensen to the latest business magazine.
6 Dec 2014
Our software allows you to view MBTiles file offline.
5 Dec 2014
Today we’re happy to announce that the HTTP Git beta is over and that HTTP Git is fully ready for production. The beta was launched less than a month ago and we are already handling thousands of HTTP Git builds per day. In addition, HTTP Git powers the Dropbox Sync beta, making sure that Dropbox […] The post HTTP Git…
It’s a little unfair to announce winners in some kind of order as I did post the quiz at an unfriendly hour of the day for most of the planet. With that said, Tim and William came up with a great map based solution at roughly the same time. You’ll have to split the winnings […]
Working with our support team, I often see customers having timeout problems. Typically, their applications will start throwing H12 errors. The decision to timeout requests quickly wasn’t made to avoid having long-running requests on our router, nor to only have fast apps on our platform, but because standard web servers do not handle these types […] The post Short Time…
This program is incorrect package main import "fmt" func f(a, b int) { var min = 0 fmt.Printf("The min of %d and %d is %d\n", a, b, min) } func main() { f(9000, 314) } By adding only one line can you make it print the correct answer ? The code must continue to be […]
Hands-on user research and app testing helps software delivery teams shape the design path for mobile health (mHealth) solutions. Thoughtworks teams working on mHealth solutions throughout the Global South put our technology solutions in the hands of our users early and often. Alongside the development processes, our teams center an iterative feedback and improvement cycle around the users’ interactions, opinions,…
Many of the optimizations and enhancements that online retailers make to prepare for the peak season are useful year-round. Here are 6 ways that tech has changed holiday shopping. 1. Ship From/To Store Being able to fulfill and ship orders from your warehouse is normal - but what happens when the order volume suddenly jumps up by a factor of…
4 Dec 2014
There are some things in SQL that we simply take for granted without thinking about them properly. One of these things are the GROUP BY and the less popular HAVING clauses. Let’s look at a simple example. For this example, we’ll reiterate the example database we’ve seen in this previous article about the awesome LEAD(), … Continue reading Do You…
Since day one, developers from all over the world have been deploying apps on Heroku, and we’re extremely proud of the strong global community we’ve built. Our European customers in particular have asked for the ability to deploy applications geographically close to their European customer base so they can offer a better user experience with […] The post Introducing the…
Let's write a malloc and see how it works with existing programs! This is basically an expanded explanation of what I did after reading this tutorial by Marwan Burelle and then sitting down and trying to write my own implementation, so the steps are going to be fairly similar. The main implementation differences are that my version is simpler and…
Reverse Retrospective Whether it is a project rescue, a team under delivery pressure or a realization that your standard Agile rituals are not working, a Reverse Retrospective helps create solutions for known, recurring issues. Held at the end of each iteration, retrospectives are a core part of Agile projects – the opportunity to reflect on performance, learn and adjust behaviours.
This article explores a simple, cheap and effective way to reduce your organisation’s compliance risk when dealing with encryption software. Snowden’s revelations confirmed that the “Five Eyes” powers engage in global dragnet surveillance. He also confirmed that encryption, if done correctly, is highly effective at securing our electronic communications.
2 Dec 2014
According to a recent survey by ZeroTurnaround’s RebelLabs, Maven is still the leading Java build platform. The current market share distribution, according to RebelLabs is: Maven with 64% Ant + Ivy with 16.5% Gradle with 11% Yet, at the same time, Maven is often criticised for being a bit obscure and intrusive. Compared to runner-ups … Continue reading How to…
Recently we teamed up with Concurrent Inc., the backers of the data-processing framework Cascading, to do a case study of how we use…
Data Science is rapidly growing into an interesting and diverse field encompassing a mixture of deep specialization and broad applications. As we work to define this field it is important that we always have access to the growing landscape of data science concepts, and understand how they branch from high level approaches to specific implementations. In an effort to mix…
November’s topic at the Mobile Monday Kampala event could not have come sooner considering that the Ebola epidemic has ravaged the three western countries of Guinea, Liberia and Sierra Leone. Sadly, other outbreaks were also reported in Nigeria, Senegal and Mali over the last three months.
1 Dec 2014
Here’s a few things you may not be aware of: C# identifiers can include Unicode escape sequences (\u1234 etc) C# identifiers can include Unicode characters in the category “Other, formatting” (Cf) but these are ignored when comparing identifiers for equality The Mongolian Vowel Separator (U+180E) has oscillated between the Cf and Zs categories a couple … Continue reading When is…
"Invalid Username or Password": a useless security measure Login attempts fail because computer users can't remember their email or didn't input the right password. Most websites on the Internet won't tell you which one is actually incorrect. Amazon: Shoprunner: Hacker News: If you tell an attacker the email address is wrong, they'll try a different […]
In the last post in this series we saw some simple examples of linear programs, derived the concept of a dual linear program, and saw the duality theorem and the complementary slackness conditions which give a rough sketch of the stopping criterion for an algorithm. This time we’ll go ahead and write this algorithm for solving linear programs, and next…
If you’ve read Scott Adams’ financial advice and my financial tips in case you win a startup lottery, then you might be interested in a few more pointers to good resources. Some web pages and books: – Don’t Play the Losers’ Game, by Henry Blodget. This is a short, accessible piece that explains why picking […]
I’ve been spending more time surfing the web on my laptop than I’d like to. I’ve also noticed more emails that lure me into short tasks, but eventually eat up a large chunk of my day. I’d prefer to be spending more time working on projects, reading, and unplugging. So my new 30 day challenge […]
So how did I do on my 30 day writing challenge? Well, the picture tells the story: Not too bad! I did miss one day, but here’s a secret about 30 day challenges: if you miss a day or two, you can just keep doing the challenge for another day or so at the end. […]
After lurking on the fringes of the hobbyist electronic and retrocomputing communities for a few years I’ve decided to take the plunge and join the RC2015/01 retrochallenge. The task I have assigned myself is to revive this 1981 vintage revision 7 Apple II motherboard which I discovered in a box of parts while visiting my […]
Public discussions of discrimination in tech often result in someone claiming that discrimination is impossible because of market forces. Here's a quote from Marc Andreessen that sums up a common view1. Let's launch right into it. I think the critique that Silicon Valley companies are deliberately, systematically discriminatory is incorrect, and there are two reasons to believe that that's the…
Many retailers today have embraced the slick combination of data and customer experience to join the pack of leading innovators in customer experience. But there are still many retailers trying to figure out their next move, or even worse, not responding to the changing consumer behaviour.
In September 2014, Thoughtworker Pamela Mori attended the Strange Loop conference in St Louis, US, to talk about emerging languages, libraries, web and topics around the technology industry. “The conference literally makes you feel like you are in a strange loop,” Pamela explained.
30 Nov 2014
The question of how to set up a new Go project appears commonly on the golang-nuts mailing list. Normally the advice for how to structure Go code centres around “read the standard library”, but the standard library is not a great deal of use to newcomers in the respect as: You don’t go get packages […]
Working in webspam, we sometimes use the phrase “buy Viagra online” as an example of a search query that might be spammy. That’s why I noticed and remembered the 2013 announcement that you can officially buy Viagra online. As this Time article points out, you’ve actually been able to buy Viagra online through legitimate pharmacy […]
Because not every blog post has to be serious: Special thanks to my friend Amy who crocheted this masterpiece! Amy also works with an awesome group of volunteers that crochets dolls for kids fighting cancer and other illnesses.
You know the feeling: stories seem to be taking just too long to be completed, velocity seems to be always just below what you expected, and you're not sure what to do about it. Pressure starts to build up, and the team starts to get uncomfortable with all the questions you keep asking about when they expect to deliver their…
29 Nov 2014
Recently I had a very weird problem with iTerm where new login shells were being created with environment variables already present. Restarting my machine made the issue go away, and I wasn't able to reproduce it again. But I got curious about how long ZSH spends in various parts of the startup process. A new […]
Any time you talk about money, you risk sounding like a jerk. I’m going to take that risk in this post. I’ll start out by talking about a couple ways I shot myself in the foot financially and what I learned as a result. Your mileage may vary. Before we start, you might want to […]