One of my tasks for this quarter is to deliver a draft of an update to the Eclipse Development Process (EDP) to the Eclipse Architecture Council for their review. The process that we follow is to open bugs against Community/Architecture Council (prefixed with [EDP]), discuss them, and then incorporate the discussion into the new version of the EDP.
Managing or prioritizing the backlog, re-prioritizing works in progress — these activities make up the most of a product owner’s work. That’s not breaking news, obviously.
For a programmer, anyone consuming his/her software is a customer. It's not wise to discount customers, as they are the life line of any product. Without them, even the most innovative concepts will fail.
GitHub stands to revolutionize the revision and management of writing something other than code: books.
Kevin Dishman is ThoughWorks’ QA lead for a client I “rolled off” a few days ago. He prefers a different style of Java and Page-Objects for Selenium2 / WebDriver codebases.
What follows is a checklist of action items that we’ve found imperative for successfully taking your application to production. For the experienced, we hope you can use this guide as a refresher on best practices. For the newer folks, this is a must-read on how to ready your database for the big move.
As with any migration, this one has its challenges. Below you can find more about them and how to overcome some of them:
Obviously, anyone interested in learning about continuous delivery could learn a lot from Netflix. Luckily, Netflix's own engineering manager Ben Schmaus recently wrote an article titled "Deploying the Netflix API" on the Netflix Tech Blog.
Anything that takes longer than ten minutes is not refactoring. That is a redesign.
I’ve been playing around with the Unix tar command a bit this week and realized that I’d memorized some of the flag combinations but didn’t actually know what each of them meant.
After playing around with calculating the eigenvector centrality of a sub graph I learned that this algorithm can also be used in ranking systems. This is applicable for network-based ranking systems as we can build up a matrix of teams, store a value representing their performance against each other, and then calculate an ordered ranking based on eigenvector centrality.
A great discussion on the DevOps Google Group yesterday posed the question "What is a 'DevOps Engineer' anyway?" The OP pondered this question after poring over job listings for "DevOps Engineers" or developer jobs with some form of DevOps in the requirements for the position.
Maciej Zawadzki, co-founder of UrbanCode, talks through a risk calculus that demonstrates that shrinking release batch size lowers risk.
It’s a lot harder to fix application security vulnerabilities than it should be. If you can make the case that there are serious security problems that need to be taken care of, where do you start?
I recently saw a great presentation by Joe Armstrong called “Systems that Run Forever Self-heal and Scale”. The talk is well worth watching, but here’s a few quick notes for a busy reader or my future self.
So find out who thinks who should have access to PROD, plus how to keep calm and PROD on.
A couple of weeks ago I was trying to write a test around some OAuth code that we have on an internal application and I was using Jersey Client to send the various requests. When I ran the test I was getting the following exception:
With this blog post we start a new series about how we work on the Codeship. Many people asked us how we develop features, about our workflow and which apps we use every day.
By writing we carefully sift through our own thought processes to break it down for novices, or a broader audience. This is a learning process for us, too. It’s therapeutic. But it also hones our message and makes us better teachers. We literally learn by doing.
Doing code reviews is a great way to discover things that people might struggle to comprehend. While proof-reading OpenStack patches recently, I spotted that people were not correctly using the various decorators Python provides for methods. So, here's my attempt at providing me with a link to send in my next code reviews. :-)
Yes, there is an “Ops” role for your product. Understand who that is. Consider, for example, what problems an app store solves. Developers must cater to anyone between them and the end user. Any part of an upgrade that could be automated should be.
After a particularly horrendous streak of failures, I sent a team email saying, "Guys, the build is all screwed up and we need to fix it immediately. If you fix the build, I'll buy you doughnuts." You know what happened next? Someone fixed the build within the hour.
Maybe you want to learn shell scripting, but you need to get work done now that you don’t yet know how to do. One of these strategies could buy you some time.
A difficult-to-test scenario are asynchronous processes. If a method-under-test has threading, getting the timing right for the testcase asserts is difficult. Typically, the method will return control to the test class prior to competing the logic that is being tested. The test class then immediately starts processing the asserts. These tests are flaky at best or completely broken at worst.