I’ve been thinking about what makes TDD fail, and there are obviously few reasons that were discussed to death (Get it? Dead? TDD? Ok, let’s move on). What this gets you is a big, convoluted class that has tests, and some small internal, simple data classes.
People often ask, why does DevOps matter? The honest answer to that question is because having the development and operations team work together is the only way IT is successful. In the end it comes down to the most important part, which is that devops creates more happiness.
GPM + GVP has worked well for me, and I find it much better than vendoring or living at the cutting edge of every dependency's repository. I've implemented it on projects large and small, and it feels clean. I've used it to manage builds and CI. Overall, I've found it to meet my needs better than any other solution.
I recently had an experience writing code that proved to me, once again, that using Test Driven Development really is faster than the way I have been working. I easily saved half a day on each project by using Test Driven Development.
The adoption of Continuous Delivery often leads to the discovery of suboptimal practices within an organisation, and the Release Testing antipattern is a common example. What is Release Testing, and why is it an example of Risk Management Theatre?
It's 2014, but there's still a widely held belief that integrated (or end-to-end) tests should be favored over unit tests. A belief that Test-Driven Development does not have a beneficial influence on the quality of your tests and code. So today I'm repeating a few things I have been writing about in the last years.
You can’t get away from it. Thousands of open source components are being used in every industry, every day, to quickly build and deploy applications. For those not in the security industry, it’s hard to keep track of what is being done in this field to manage and monitor open source usage.
When working with crontab service, one thing I often need is to capture the output of the job
In recent months I've seen an increase in the use of private and final keywords used in open source software projects.
Make sure you didn't miss anything with this list of the Best of the Week in the DevOps Zone (May 30 to June 5). This week's topics include test-driven development mistakes and advice, using Drone and Docker for continuous integration, building a balancer with Clojure, drawbacks and best practices of TDD.
This ultimately comes down to the idea that the involvement of developers doesn’t end at their last commit. Collaboration is key which allows every developer to play a key role in keeping the site up and running, for more happy users. After all software with no users has no value.
The main reason why I used Sublime Text was for speed and simplicity, Sublime Text at it's basic level is a text editor, which has been extended into an IDE. Everything about it was built for speed, which makes sublime one of the quickest and easiest text editors to use.
I run introductory training in test-driven development quite frequently these days. And each time I do, I find the same basic mistakes cropping up every time, even among teams who already claim to practice TDD. Here are the three mistakes I see most often.
Heartbleed is a bit over one month old now. Today, we’re going to look into how wrong we have been in assuming that Open Source software is more secure than commercial software, because of our thinking that source code is open and that many developers are looking into it.
I've tried CI systems ranging from Bamboo to Jenkins, and I always feel like I'm either pushing against the limits of the tech or tiptoeing through a mine field of possible misconfigurations. I don't feel that way with Drone. The "disposable" Docker environment is an absolutely perfect way to test code.
I was asked to talk about the problems of using TDD – being me I’ve decided to do the exact opposite, this session was names “what is wrong with TDD”. I felt that one of the major issues is that TDD looks weird, it’s counter-intuitive, and convincing developers to actually try it hard and requires a mental leap of faith.
One of my favourite features of Clojure is that it allows you to destructure a data structure into values that are a bit easier to work with.
I don’t understand why I have to choose between doing the right things, over doing the things right.
Make sure you didn't miss anything with this list of the Best of the Week in the DevOps Zone (May 23 to May 29). This week's topics include DevOps best practices and principles, enabling OpenID auth in Spring, handling the privacy of instance variables, developer delayed development, and on-demand DevOps PaaS.
The producer / consumer design pattern is a pre-designed solution to separate the two main components by placing a queue in the middle, letting the producers and the consumers execute in different threads. This way the production of tasks to be consumed is absolutely independent from its consumption.
With Nginx-Clojure we can make some looking difficult tasks become very simple.This article will give an example about using Clojure code to build a simple balancer with a role based dynamic bandwidth limiter on Nginx.
In VietnamWorks.com we managed to implement Continuous Delivery (CD), and we used following image as our reference. But why did we decide to use CD? We wanted to build the right features for our products, avoid as many risks (fail fast, succeed faster), increase our release cycle, and continue a stable product.
I teach git and often have issues with bad projectors where you can't see the colours. There's lots of documentation on how to turn on colours in git but not so much about how to turn them off. Try putting the following into .git/config:
Deprecated methods have to be treated different. At least in my opinion.
Yes, Test Driven Development (TDD) is a good practice, but it is NOT necessarily superior to: integration testing, penetration testing, operational readiness testing, disaster recovery testing, and any of a large number of other validation activities that should be a part of a software delivery practice.