Skip to content

Feed aggregator

Python: Converting a date string to timestamp

Mark Needham - Mon, 10/20/2014 - 17:53

I’ve been playing around with Python over the last few days while cleaning up a data set and one thing I wanted to do was translate date strings into a timestamp.

I started with a date in this format:

date_text = "13SEP2014"

So the first step is to translate that into a Python date – the strftime section of the documentation is useful for figuring out which format code is needed:

import datetime
 
date_text = "13SEP2014"
date = datetime.datetime.strptime(date_text, "%d%b%Y")
 
print(date)
$ python dates.py
2014-09-13 00:00:00

The next step was to translate that to a UNIX timestamp. I thought there might be a method or property on the Date object that I could access but I couldn’t find one and so ended up using calendar to do the transformation:

import datetime
import calendar
 
date_text = "13SEP2014"
date = datetime.datetime.strptime(date_text, "%d%b%Y")
 
print(date)
print(calendar.timegm(date.utctimetuple()))
$ python dates.py
2014-09-13 00:00:00
1410566400

It’s not too tricky so hopefully I shall remember next time.

Categories: Blogs

Are Prejudices Stopping your Agile Efforts?

Scrum Expert - Mon, 10/20/2014 - 17:40
Adopting new software development approaches like Agile and Scrum is always a challenge. There is a natural tendency for part of an organization to resist changing and some prejudices exist against Agile, mainly due to a lack of knowledge. This article discusses these misconceptions and provides some tips on how to overcome these prejudices to get Agile adoption on track in your organization. Author: Kevin Dunne, QASymphony, http://www.qasymphony.com/ Adopting Agile may be the next big thing for your team, but adopting new practices always presents challenges for any organization. We all know ...
Categories: Communities

Waarom Agile?

Ben Linders - Mon, 10/20/2014 - 17:16
Agile werken kan je helpen om organisatiedoelen te bereiken. Agile tot een doel verheffen werkt meestal niet, het doel is om resultaten te bereiken, niet om agile te worden. Het is belangrijk om goed te weten waarom je de agility van je organisatie wilt vergroten en wat je met een agile werkwijze verwacht te bereiken. Continue reading →
Categories: Blogs

Agile Brazil, Florianópolis, Brazil, November 5–7 2014

Scrum Expert - Mon, 10/20/2014 - 08:44
Agile Brazil is a three-day conference that is the largest event about Agile and Scrum in Brazil. It features keynotes and practical presentations with local and international Agile experts. Talks are both in Portuguese and English. In the agenda of Agile Brazil you can find topics like “Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work”, “Pragmatic, Not Dogmatic TDD: Rethinking How We Test”, “Mental Models in High Performing Agile Teams”, “Extreme Pair Programming”, “Visual Regression Testing with PhantomCSS”, “UX Design for Startups”. Web site: http://www.agilebrazil.com/2014/en/ Location for the 2014 ...
Categories: Communities

Brauchen wir noch Daily Standups?

Scrum 4 You - Mon, 10/20/2014 - 07:45

Durch Zufall bin ich vor Kurzem auf den Service www.iDoneThis.com gestoßen. Als ich mir anschaute, was dort geboten wird, habe ich sofort an die “Daily“-E-Mail bei Web.de gedacht. Wir schrieben dort am Ende des Tages an den Teamleiter eine kurze E-Mail mit den Dingen, die wir heute getan hatten. So wusste er, was der Stand der Dinge war. Leider wurde das oft vergessen, weil es keinen automatischen Reminder gab. Die “Dailys” wurden immer länger und das Reporting wurde zur Last. Die Idee selbst fand ich jedoch immer gut. In meinem Unternehmen nutzen wir Confluence, ein Wiki von Atlassian, in dem wir ein “Logbuch” haben. In dieses Logbuch schreiben wir unsere Aktivitäten des Tages hinein. Daher gefällt mir vielleicht auch die die Idee von iDoneThis so gut. Denn nun bekomme ich am Ende des Tages eine E-Mail und kann eintragen, was ich getan habe. Diese E-Mail wird einfach per Reply beantwortet. Am nächsten Morgen schickt mir iDoneThis eine E-Mail mit allen Aktivitäten des Teams.

So weit so gut – doch dann bin ich über die Kundengeschichten von iDoneThis gestolpert. Ganz besonders fasziniert hat mich die Geschichte von Bufferapp. Ich kenne Buffer als User und es gibt im Netz mittlerweile viele interessante Stories über diese kleine Firma. Die Story, die iDoneThis über Buffer erzählt, ist für einen Scrummie verblüffend: Sie sagen, dass Buffer die Daily Standups durch iDoneThis ersetzt hätte (den ganzen Text findet ihr hier):

“As a remote team, Buffer needed a better way to stay on the same page. Previously, everyone would get on a daily group Skype call in which each person would take three minutes to talk about what they did, how their co-workers could help, and their improvements. With the team growing larger, the standup process wasn’t scaling over Skype, as they began to have to deal with Skype malfunctions, different timezones, and ever-increasing meeting lengths. Holding traditional standups over video chat also meant that “if you jump in and talk about something that somebody just said, you’re basically interrupting their three minutes. So what we would actually do is not ask that many questions.” They tried email, but it became a hassle as email threads got longer and longer, and each new message bumped the thread in everyone’s inbox and created another alert. Buffer turned to iDoneThis. It’s a way to understand what teammates are working on, and every time I read people’s iDoneThis, I feel connected with the team. With iDoneThis, rather than having to spend an hour in a meeting, you only have to read your email. We send an email to your team every evening asking, “What’d you get done today?” Just reply. The next day, we send a single email digest to everyone on the team with the contents of what might otherwise take a lengthly and tiresome meeting. Leo remarks, “It allows us to track performance, which easily gets lost in a chat room or an in-person standup. If new people come on board, they can look through and see what has been worked on. And of course, it’s amazing to keep in sync with everyone, working as a remote team. iDoneThis is invaluable to us and has changed our productivity for the better.”

Unser Logbuch hat gegenüber dieser Lösung einen Nachteil: Ich muss nachschauen, was jeder getan hat. Hier bekomme ich automatisch einen Überblick. Kann diese Lösung das Daily Standup ersetzen? Ich bin mir nicht sicher – mit meinen Kolleginnen in Baden-Baden treffe ich mich jeden Morgen zum Daily Scrum per Google HangOut (Skype war einfach nicht verlässlich genug) und es ist großartig. Diese 15 Minuten sind für uns sehr wichtig. Was wir nicht haben, ist ein Board. Aber wir brauchen es auch nicht, denn es geht bei unseren Dailys nicht ums Reporting, sondern einzig um die Zusammenarbeit. Wir stellen bei unserer Arbeit bereits fest, dass das Nicht-Zusammensein schnell Fremdheit erzeugt. Mir immer wieder in Erinnerung zu rufen, wo die anderen gerade sind – selbst mit unserem Einsatzplaner LaLinea (ein selbst geschriebenes Einsatztool) verliert man schnell den Überblick. Vielleicht kann da ein Tool wie iDoneThis helfen. Probiert es für Euch doch mal aus. Lasst uns wissen, ob es hilft.

Related posts:

  1. The 10 things I use most:
  2. Impact of collocation on team effectiveness – Study
  3. Boris is in Belo Horizonte and Recife, Brazil

Categories: Blogs

Superman Syndrome

Agile Tools - Mon, 10/20/2014 - 06:49

apple-bag-collaboration-154-820x550

There you are, in your tenth meeting of the day. You haven’t even had lunch, just one meeting after another. You’d skip the meetings, but you are required and half the meetings are yours anyway. You finish the day without having accomplished one single thing (except a bunch of meetings). Your todo list has only grown longer and the only time remaining is after hours (because nobody can schedule a meeting then). If this is you, then you might have superman syndrome.

It’s pretty common in software development. The nicest people get sucked into it (no, really, they’re too damn nice). You are competent, eager to please, and really can’t say no. It’s a great ego boost – you are needed! Well, I’ve got some bad news: you’ve got Superman Syndrome.

That’s right, you got it bad. Now sit down. This is where we get to play product owner. Product owner of your life. Write down that list of all thing things you have to do. Go ahead, put it in priority order. That’s right, it’s not easy. Product ownership is a bitch. Good, now cancel all your meetings. I know it hurts. Do it anyway. Send some polite excuse about being behind in your work (because it’s true) and you’ll catch up with them later (maybe never).

Now take that one thing at the top of the list (it is just one thing, right?) and get to work. Here’s the new rule, you don’t get to work on anything else until that thing is done. Take comfort in the fact that you are working on the most important thing that you could be working on. No one can fault you for that. You see what we are doing is limiting your work in progress (WIP). Limiting the amount of work you take on is like kryptonite to Superman Syndrome.

While we’re at it, let’s just turn outlook off. Yeah, completely off. You have a WIP limit here too: twice a day. Once before lunch and once before you go home. That’s it. That’s all.

While we are having so much fun setting WIP limits, we might as well put a WIP limit on your meetings. That’s right, nobody can reasonably expect you to do your job AND attend every single meeting: so don’t. Set a reasonable limit (no more than 2 hours of meetings/day). That way you are available if the issue is REALLY important, but otherwise, they’ll have to just get along without you. Again, polite apologies all around.

Try that on for a while and see how that works for you. Come back and chat with me when you think you are ready to change your WIP limits.

Now to take my own advice…wish me luck.

Yours truly, Superman
Filed under: Agile, Coaching Tagged: Coaching, meetings, superman, time management, WIP, work in progress
Categories: Blogs

LeanStartup : Customer Development Is Customer Coaching

Agile Thinks and Things - Oana Juncu - Sun, 10/19/2014 - 13:05
One of the most important activities as a Lean Startup entrepreneur is building the right interviews that will help building the "right product", as the Pretotyping Manifesto tells us.  My latest experience as  a Lean Startup mentor was with Business School class students.  With me in the mentoring team ( and in the photo) were Florian Champagne , Sébastien Orifici, who holds the innovation course, and Frank Debane , whom I thank to have invited me to join the team. The intense experience of helping about 10 projects structure the good questions for customers interviews,  revealed how similar  customer development and coaching are.  The highest value in Customer Development comes from asking good questions . The highest value of a coaching session does from asking "powerful questions". Do you see a pattern here? Entrepreneurs Are Asked To Be ... Customer Coaches Entrepreneurs learn from the Lean Startup approach that the first think they need to do is to challenge their vision. They are asked to stay humble and not impose their solution over customers that , hmmm, may not want that at all. They are asked to listen to market's voice and adapt their solution instead of trying to influence customers behavior.  The top 3 recommandations in true Customer development approach are :
  1. Don't rely of vanity metrics : number of likes , followers , visits on your product idea page is no sign of commitment 
  2. Be aware of false positives : don't count your family and friends in the measure of your success 
  3. Customers are experts of the problem  : if you want to build a successful solution, listen to real problem of customers instead of your ideas of the problem. 
So let's summarize what is the recommended entrepreneur's behaviour : 
  • Listen and observe, don't push your assumptions 
  • Customer is expert of the problem, they will find the most adapted solution 
Coaching experts will tell that  "listen and don't provide solutions" is the right attitude of a coach. Coaching is not about providing answers, coaching is about helping clients come out with answers that they are the only one to have , as the problem is theirs. So you see it ? Bright entrepreneur skilled in customer development are ... customer coaches.
Interview Questions are Powerful Questions The Lean "Gemba Walk" turned in "Get Out Of The Building" activity in Lean Startup ( as Lean Startup Machine initially defined it ) . Briefly it invites entrepreneurs to get into the "customer arena" and proceed to customer face-to-face interviews instead of running fancy marketing customer study analysis from company's ivory tower. To have effective feed-back , there is a key condition : prepare the customer interviews and ask the right questions right.  What are the patterns of good customer interviews questions ? Here is a quick hint :
  • Don't ask closed questions ( that will get a Yes/No answer). Closed questions are the main source of false positive and you won't get much of the binary choice.
  • Ask "Why", "How", "What" questions to avoid closed questions. Don't hesitate to repeat them . 
  • Invite to storytelling: ask customers to tell  their experience in the domain you're interviewing about 
  • Be interested about their problem ,  customers talk, you listen . 

For those people that are familiar with coaching the interviewing pattern should ring a bell. Because what is asked from entrepreneurs to build a solid delighted customer base is to have a customer and market ... coaching attitude .
Emerging Marketing Approach
Traditional Marketing may teach us that the key to success is to create a need. Today's world of frugality that has a tendency to run away from consuming behavior is probably not aligned anymore on this vision.Marketing of tomorrow that will bring make entrepreneurs successful might shift from "owning the market" to "coaching the market".And "create the need" will definitively shift to "make customer realise they have a need that they were not truly aware about". A completely different story.

Related Posts
Test Driven Business Featuring Your Lean Startup Products
Entrepreneurs , What Is Your Unfair Advantage 
Lean Startup For Services 



Categories: Blogs

Simplicity of Measure

Agile Tools - Sun, 10/19/2014 - 07:01

Fitbit_Dashboard

I got a fitbit bracelet the other day. It’s a pretty nifty gadget. It tracks the number of steps that I take in a day, as well as measuring movement while I’m asleep. I’ve been very impressed with the number of things that you can derive from a simple measure of the frequency of movement. You get number of steps, activity level, calories burned, sleep periods, and a few other metrics. All of that from one simple measure of how often my hand moves.  Admittedly, some of those measures are inferred based on some simple assumptions like how many calories that the average person burns in a fixed period of time. However there is nothing wrong with that, The measure doesn’t have to be 100% accurate in order for it to be useful to me. I can see the trends and understand if my calories burned is changing for the better or for the worse without having the exact number of calories that I burn in an hour. An approximation is certainly sufficient.

It’s really quite impressive that you can derive so much from a single metric. It made me wonder about the metrics that we keep on Agile teams. Whether it’s velocity or throughput, there are metrics that we use for a lot of different purposes. We use velocity to tell us how much work the team can take on per sprint. We derive duration using velocity. I like the notion of having a small set of metrics like velocity that we can use for a variety of measures.


Filed under: Agile, Tools Tagged: fitbit, measure, Metrics, Tools
Categories: Blogs

Neo4j: LOAD CSV – The sneaky null character

Mark Needham - Sat, 10/18/2014 - 12:49

I spent some time earlier in the week trying to import a CSV file extracted from Hadoop into Neo4j using Cypher’s LOAD CSV command and initially struggled due to some rogue characters.

The CSV file looked like this:

$ cat foo.csv
foo,bar,baz
1,2,3

I wrote the following LOAD CSV query to extract some of the fields and compare others:

load csv with headers from "file:/Users/markneedham/Downloads/foo.csv" AS line
RETURN line.foo, line.bar, line.bar = "2"
==> +--------------------------------------+
==> | line.foo | line.bar | line.bar = "2" |
==> +--------------------------------------+
==> | <null>   | "2"     | false          |
==> +--------------------------------------+
==> 1 row

I had expect to see a “1” in the first column and a ‘true’ in the third column, neither of which happened.

I initially didn’t have a text editor with hexcode mode available so I tried checking the length of the entry in the ‘bar’ field:

load csv with headers from "file:/Users/markneedham/Downloads/foo.csv" AS line
RETURN line.foo, line.bar, line.bar = "2", length(line.bar)
==> +---------------------------------------------------------+
==> | line.foo | line.bar | line.bar = "2" | length(line.bar) |
==> +---------------------------------------------------------+
==> | <null>   | "2"     | false          | 2                |
==> +---------------------------------------------------------+
==> 1 row

The length of that value is 2 when we’d expect it to be 1 given it’s a single character.

I tried trimming the field to see if that made any difference…

load csv with headers from "file:/Users/markneedham/Downloads/foo.csv" AS line
RETURN line.foo, trim(line.bar), trim(line.bar) = "2", length(line.bar)
==> +---------------------------------------------------------------------+
==> | line.foo | trim(line.bar) | trim(line.bar) = "2" | length(line.bar) |
==> +---------------------------------------------------------------------+
==> | <null>   | "2"            | true                 | 2                |
==> +---------------------------------------------------------------------+
==> 1 row

…and it did! I thought there was probably a trailing whitespace character after the “2” which trim had removed and that ‘foo’ column in the header row had the same issue.

I was able to see that this was the case by extracting the JSON dump of the query via the Neo4j browser:

{  
   "table":{  
      "_response":{  
         "columns":[  
            "line"
         ],
         "data":[  
            {  
               "row":[  
                  {  
                     "foo\u0000":"1\u0000",
                     "bar":"2\u0000",
                     "baz":"3"
                  }
               ],
               "graph":{  
                  "nodes":[  
 
                  ],
                  "relationships":[  
 
                  ]
               }
            }
         ],
      ...
}

It turns out there were null characters scattered around the file so I needed to pre process the file to get rid of them:

$ tr < foo.csv -d '\000' > bar.csv

Now if we process bar.csv it’s a much smoother process:

load csv with headers from "file:/Users/markneedham/Downloads/bar.csv" AS line
RETURN line.foo, line.bar, line.bar = "2", length(line.bar)
==> +---------------------------------------------------------+
==> | line.foo | line.bar | line.bar = "2" | length(line.bar) |
==> +---------------------------------------------------------+
==> | "1"      | "2"      | true           | 1                |
==> +---------------------------------------------------------+
==> 1 row

Note to self: don’t expect data to be clean, inspect it first!

Categories: Blogs

Make Resolving Impediments a Habit

Agile Tools - Sat, 10/18/2014 - 08:43

David_City_Rey_grocery_store

I’ve talked a lot about the rigors of finding and resolving impediments for a team. There is one thing that I have left out: the people part. I learned this lesson at a conference that I was co-hosting. I had been in charge of setting up the food for the event. Getting the caterer, arranging for meals, that sort of thing. As you might imagine, it’s a pretty tough job to satisfy the dietary requirements for a very large group of people. I learned of whole categories of food allergies and needs that I had never even imagined existed! There was a little bit of every imaginable combination. Everything from your standard gluten free diet all the way to lacto-ovo-pesca-leguma-veganitarians (OK, I made that last one up).

We did the best we could to satisfy the needs of most folks and pretty much called it good. About halfway through the conference, someone mentioned that there was no food that fit in their dietary needs. I expressed my sympathies and referred them to the grocery store around the corner. I really didn’t give it another thought. A few minutes later, I heard the same complaint made by the same person, but this time the reply was, “I’ll get you something, I’ll be right back” And that person ran off to the store themselves. Wow!

I was humbled. The difference between my reaction and theirs was the difference between someone who could empathize and take action to resolve the impediment, and someone who couldn’t. The lesson I learned that day was that in order to help people with their impediments, it takes empathy. You have to feel their need, and be receptive to doing anything to help them out. I think I had missed that before. That willingness to serve the needs of others is really important. All the strategies in the world for resolving impediments won’t help anyone if you don’t care.


Filed under: Agile, impediment Tagged: Impediments, leadership
Categories: Blogs

R: Linear models with the lm function, NA values and Collinearity

Mark Needham - Sat, 10/18/2014 - 08:35

In my continued playing around with R I’ve sometimes noticed ‘NA’ values in the linear regression models I created but hadn’t really thought about what that meant.

On the advice of Peter Huber I recently started working my way through Coursera’s Regression Models which has a whole slide explaining its meaning:

2014 10 17 06 21 07

So in this case ‘z’ doesn’t help us in predicting Fertility since it doesn’t give us any more information that we can’t already get from ‘Agriculture’ and ‘Education’.

Although in this case we know why ‘z’ doesn’t have a coefficient sometimes it may not be clear which other variable the NA one is highly correlated with.

Multicollinearity (also collinearity) is a statistical phenomenon in which two or more predictor variables in a multiple regression model are highly correlated, meaning that one can be linearly predicted from the others with a non-trivial degree of accuracy.

In that situation we can make use of the alias function to explain the collinearity as suggested in this StackOverflow post:

library(datasets); data(swiss); require(stats); require(graphics)
z <- swiss$Agriculture + swiss$Education
fit = lm(Fertility ~ . + z, data = swiss)
> alias(fit)
Model :
Fertility ~ Agriculture + Examination + Education + Catholic + 
    Infant.Mortality + z
 
Complete :
  (Intercept) Agriculture Examination Education Catholic Infant.Mortality
z 0           1           0           1         0        0

In this case we can see that ‘z’ is highly correlated with both Agriculture and Education which makes sense given its the sum of those two variables.

When we notice that there’s an NA coefficient in our model we can choose to exclude that variable and the model will still have the same coefficients as before:

> require(dplyr)
> summary(lm(Fertility ~ . + z, data = swiss))$coefficients
                   Estimate  Std. Error   t value     Pr(>|t|)
(Intercept)      66.9151817 10.70603759  6.250229 1.906051e-07
Agriculture      -0.1721140  0.07030392 -2.448142 1.872715e-02
Examination      -0.2580082  0.25387820 -1.016268 3.154617e-01
Education        -0.8709401  0.18302860 -4.758492 2.430605e-05
Catholic          0.1041153  0.03525785  2.952969 5.190079e-03
Infant.Mortality  1.0770481  0.38171965  2.821568 7.335715e-03
> summary(lm(Fertility ~ ., data = swiss))$coefficients
                   Estimate  Std. Error   t value     Pr(>|t|)
(Intercept)      66.9151817 10.70603759  6.250229 1.906051e-07
Agriculture      -0.1721140  0.07030392 -2.448142 1.872715e-02
Examination      -0.2580082  0.25387820 -1.016268 3.154617e-01
Education        -0.8709401  0.18302860 -4.758492 2.430605e-05
Catholic          0.1041153  0.03525785  2.952969 5.190079e-03
Infant.Mortality  1.0770481  0.38171965  2.821568 7.335715e-03

If we call alias now we won’t see any output:

> alias(lm(Fertility ~ ., data = swiss))
Model :
Fertility ~ Agriculture + Examination + Education + Catholic + 
    Infant.Mortality
Categories: Blogs

What projects are suitable for Agile?

At Agile Tour Sydney 2013, I participated in an Open Space session triggered by:
What projects are suitable for Agile?This is my response.

To start, we should determine how we would assess our answer.  This leads to two more questions:
  1. What does it mean for an approach to be "suitable" for a project?
  2. What do you mean when you say "Agile"?
What does it mean for an approach to be "suitable" for a project?I'll say that an approach is suitable for a project if, compared to alternate approaches, it provides a higher likelihood of project success.
Which leads to...
What defines project success?The typical response might be "on time, on budget, on scope".  I'll say that this response is incorrect.
People don't fund projects in order to get something "on time, on budget, on scope"; they fund projects to get desired overall outcomes.  If I can get a better desired overall outcome that happens to not be on time, on budget, on scope, why would I consider that a failure?
But what about impact on other projects if this project is late, uses up too much available capital, doesn't complete dependent capabilities, etc.?  This is a good question and leads to...
Project outcomes can only considered successful in the context of overall organisational outcomes.
So if overall organisational outcomes are improved, it still doesn't matter if a project is "on time, on budget, on scope" per se.
This way of defining success is a typical difference in fundamental assumptions for non-Agile vs Agile approaches.  And this brings us to the second question...What do you mean you say "Agile"?I've blogged about what people mean when that say "Agile" before.
The short version is that when I say "Agile", I'm referring to Agile as a doctrine or culture, that is a set of fundamental principles and assumptions that guide behaviour.  This doctrine / culture is associated with a particular set of practices, but those practices are secondary.
The principles I consider primary are:
  1. Reduce the distance between problems and problem-solvers
  2. Validate every step
  3. Take smaller steps
  4. Improve as you go
So the question becomes, for what kind of projects are these principles unsuitable?
When someone asks the question "What projects are suitable for Agile?", I think they are inadvertently asking the question "What projects are more difficult to apply Agile principles?".  I can imagine that a particular type of project, with a particular level of team and organisational maturity, would find it so difficult to apply some or all Agile principles that the end result is unsuitability, that is, a lower likelihood of providing desired overall outcomes.
To sum up...My answer to the question: What projects are suitable for Agile?Projects where your team and organisation have the skill, maturity, and support, to apply Agile principles to successfully deliver desired overall outcomes.
Categories: Blogs

How to deploy a Docker application into production on Amazon AWS

Xebia Blog - Fri, 10/17/2014 - 18:00

Docker reached production status a few months ago. But having the container technology alone is not enough. You need a complete platform infrastructure before you can deploy your docker application in production. Amazon AWS offers exactly that: a production quality platform that offers capacity provisioning, load balancing, scaling, and application health monitoring for Docker applications.

In this blog, you will learn how to deploy a Docker application to production in five easy steps.

For demonstration purposes, you are going to use the node.js application that was build for CloudFoundry and used to demonstrate Deis in a previous post. A truly useful app of which the sources are available on github.

1. Create a Dockerfile

First thing you need to do is to create a Dockerfile to create an image. This is quite simple: you install the node.js and npm packages, copy the source files and install the javascript modules.

# DOCKER-VERSION 1.0
FROM    ubuntu:latest
#
# Install nodejs npm
#
RUN apt-get update
RUN apt-get install -y nodejs npm
#
# add application sources
#
COPY . /app
RUN cd /app; npm install
#
# Expose the default port
#
EXPOSE  5000
#
# Start command
#
CMD ["nodejs", "/app/web.js"]
2. Test your docker application

Now you can create the Docker image and test it.

$ docker build -t sample-nodejs-cf .
$ docker run -d -p 5000:5000 sample-nodejs-cf

Point your browser at http://localhost:5000, click the 'start' button and Presto!

3. Zip the sources

Now you know that the instance works, you zip the source files. The image will be build on Amazon AWS based on your Dockerfile.

$ zip -r /tmp/sample-nodejs-cf-srcs.zip .
4. Deploy Docker application to Amazon AWS

Now you install and configure the amazon AWS command line interface (CLI) and deploy the docker source files to elastic beanstalk.  You can do this all manually, but here you use the script deploy-to-aws.sh that I created.

$ deploy-to-aws.sh \
         sample-nodejs-cf \
         /tmp/sample-nodejs-cf-srcs.zip \
         demo-env

After about 8-10 minutes your application is running. The output should look like this..

INFO: creating application sample-nodejs-cf
INFO: Creating environment demo-env for sample-nodejs-cf
INFO: Uploading sample-nodejs-cf-srcs.zip for sample-nodejs-cf, version 1412948762.
upload: ./sample-nodejs-cf-srcs.zip to s3://elasticbeanstalk-us-east-1-233211978703/1412948762-sample-nodejs-cf-srcs.zip
INFO: Creating version 1412948762 of application sample-nodejs-cf
INFO: demo-env in status Launching, waiting to get to Ready..
...
INFO: demo-env in status Launching, waiting to get to Ready..
INFO: Updating environment demo-env with version 1412948762 of sample-nodejs-cf
INFO: demo-env in status Updating, waiting to get to Ready..
...
INFO: demo-env in status Updating, waiting to get to Ready..
INFO: Version 1412948762 of sample-nodejs-cf deployed in environment
INFO: current status is Ready, goto http://demo-env-vm2tqi3qk4.elasticbeanstalk.com
5. Test your Docker application on the internet!

Your application is now available on the Internet. Browse to the designated URL and click on start. When you increase the number of instances at Amazon, they will appear in the application. When you deploy a new version of the application, you can observe how new versions of the application  appear without any errors on the client application.

For more information, goto Amazon Elastic Beanstalk adds Docker support. and Dockerizing a Node.js Web App.

Categories: Companies

Then When Given

Xebia Blog - Fri, 10/17/2014 - 15:50

People who practice ATDD all know how frustrating it can be to write automated examples. Especially when you get stuck overthinking the preconditions of examples.

This post describes an alternative approach to writing acceptance tests: write them backwards!

Imagine that you are building the very first online phone book. We need to define an acceptance tests for viewing the location of a florist. Using the Given-When-Then formula you would probably describe the behaviour like this.


Given I am on the online phone book homepage
When I type “Florist” in the business type field
And I click …
...

Most of the time you will be discussing and describing details that have nothing to do with viewing the location of a florist. To avoid this, write down the Then clause of the formula first.
Make sure the Then clause contains an observable result.


Then I see the location “Floriststreet 123”

Next, we will try to answer the following question: What caused the Then clause?
Make sure the Then clause contains an actor and an action.


When I click “View map” of the search result
Then I see the location “Floriststreet 123”

The last thing we will need to do is answer the following question: Why can I perform that action?
Make sure the Given clause contains a simple precondition.


Given I see a search result for florist “Floral Designs”
When I click “View map” of the search result
Then I see the location “Floriststreet 123”

You might have noticed that I left out certain parts where the user goes to the homepage and selects UI objects in the search area. It was not worth mentioning in the Given-When-Then formula. Too much details make us lose focus of what we really want to check. The essence of this acceptance test is clicking on the link "View map" and exposing the location to the user.

Try it a couple of times and let me know how it went.

Categories: Companies

Partnerships & Possibilities, Episode 2, Season 6

Partnership & Possibilities - Diana Larsen - Fri, 10/17/2014 - 15:00

Partnership & Possibilities: A Podcast on Leadership in Organizations
EPISODE 2: REVISITING INFLUENCE

Photo Credit: Send me adrift. via Compfight cc

How do  you observe yourself or your colleagues influencing each other? What kinds of influence do you see as critical for lasting positive changes?

Leave a comment on this blog or email us at info@futureworksconsulting.com

Summary

[1:40] Sharon is working with the leadership of a large non-profit with an enormous number of volunteers, who do the real work of the organization.

[4:00] Working with volunteers is all about building a sense of community and purpose to motivate people to do what needs to be done – all through “influence”.

[6:15] Power and influence are orthogonal.

[8:05] Compliance and influence are also different things.

[10:20] Motivation comes from within – it doesn’t get applied from outside. You can’t inoculate people with it.

[15:55] The model Sharon’s looking at currently looks at 6 types of influence.

[20:20] Convincing, selling, and so on, is also not influence. And influence will get you more mileage.

[22:23] Benefit must accrue on both sides for change to last – this is real influence.

[24:30] You can give feedback if you can do it with caring and respect. If you don’t care and respect the other person, don’t bother. The same is true of influencing – do I care about this person?

[28:00] An important element of influence is creating an environment that supports what you want to have happen.

 

Categories: Blogs

The Agile Reader – Weekend Edition: 10/17/2014

Scrumology.com - Kane Mar - Fri, 10/17/2014 - 08:53

You can get the Weekend Edition delivered directly to you via email by signing up http://eepurl.com/0ifWn.

The Weekend Edition is a list of some interesting links found on the web to catch up with over the weekend. It is generated automatically, so I can’t vouch for any particular link but I’ve found the results are generally interesting and useful.

  • #IT #Job in #Strongsville, OH: Web Business Analyst – Agile Scrum Master 14-267 at Medical Mutual #Jobs
  • Check out this SCRUM MASTER Overview on YOUTUBE: #scrum #agile
  • RT @FreeScrumEbook: Check out this SCRUM MASTER Overview on YOUTUBE: #scrum #agile
  • How to Plan an Agile Sprint Meeting? – http://t.co/qfwlkKpZi6
  • Agile by McKnight, Scrum by Day is out! Stories via @AgileUniversity @BCSMemberGroups @KristinRunyan
  • Skyhook Wireless is looking for: Agile Project Manager (Scrum Master)
    #job
  • Why Are Scrum Teams Supposed to Be Small? #agile #scrum #development #framework
  • Pic from last nights event: GA Presents at Sydney Agile + Scrum Meetup. See more events at GA: http://t.co/AsofQyj2wd
  • I’m hiring – Scrum Master in Rock Island, IL #Scrummaster #agile
  • PessoALL, está aberto as inscrições para treinamento “Scrum Foundations” dia 22/11 #scrum #agile #adaptworks
  • Leading Answers – Mike Griffiths: The Economics of Compassion in the New Economy #agile #scrum
  • RT @yochum: Leading Answers – Mike Griffiths: The Economics of Compassion in the New Economy #agile #scrum
  • RT @yochum: Leading Answers – Mike Griffiths: The Economics of Compassion in the New Economy #agile #scrum
  • RT @yochum: Leading Answers – Mike Griffiths: The Economics of Compassion in the New Economy #agile #scrum
  • #jobs4u #jobs Seeking Boston Based Agile Project Leadership / Scrum Master / Product Owner … #projectmanagement
  • #HongKong #Jobs Application Developer, Java, Oracle, Unix, Linux, SQL, Agile, Scrum, Test Driven… #Job #HongKongJobs
  • RT @jobz4pm: #jobs4u #jobs Seeking Boston Based Agile Project Leadership / Scrum Master / Product Owner … #project…
  • Komt er een vierde vraag tijdens de daily standup? Kijk vanavond op #scrum #agile
  • Skyhook Wireless is looking for: Agile Project Manager (Scrum Master)
    #job
  • #Scrum Master With Agile Experience #ScrumJob #TCS #Chennai #Job @sathish_ganesh @vinothselvam F
  • Avoidance of Organizational Dysfunction Leads to Scrum Masters’ Failure – #Agile #Scrum
  • Kareo needs a Lead Software Engineer #irvine #angularjs #scrum #Play #Agile #SOAP via @codehire
  • RT @CodehireJobFeed: Kareo needs a Lead Software Engineer #irvine #angularjs #scrum #Play #Agile #SOAP via @codehire
  • RT @CodehireJobFeed: Kareo needs a Lead Software Engineer #irvine #angularjs #scrum #Play #Agile #SOAP via @codehire
  • Scrum Methodology, Mountain Goat Software | Scrum, as mentioned w.r.t JetBrains’ issue tracker framework
  • RT @yochum: New Article: Estimate Before, During, and After the Software Project #agile #scrum
  • 32 Scrum master interview questions – #scrum #coaching #agile
  • Do you know what are the characteristics of a great Scrum Master? Check if you have them: #scrum #agile #coaching
  • Video course: Scrum: An Introductory Course To #Agile | Was $99 Now just $24! | by @BrainConcert
  • RT @CodehireJobFeed: Kareo needs a Lead Software Engineer #irvine #angularjs #scrum #Play #Agile #SOAP via @codehire
  • #Accenture is hiring an Agile Methods (Scrum/FDD/XP/Crystal/DSDM) in #Chennai, apply now! #job http://t.co/a4yzUUUK06
  • #Accenture is hiring an Agile Methods (Scrum/FDD/XP/Crystal/DSDM) in #Chennai, apply now! #job http://t.co/F7dE8ijORZ
  • RT @lgoncalves1979: 32 Scrum master interview questions – #scrum #coaching #agile
  • RT @ITJobsInChennai: #Scrum Master With Agile Experience #ScrumJob #TCS #Chennai #Job @sathish_ganesh @vinothselvam…
  • Scrum’s creators seek definitive place for Scrum knowledge #agile #scrum #ITlife #devlife
  • RT @Scrumartikelen: Leuk en duidelijk filmpje waarin het #agile #Manifest eenvoudig wordt toegelicht: #scrum
  • Check out this #job: Agile Methods (Scrum/FDD/XP/Crystal/DSDM) at #Accenture in #Chennai http://t.co/YwiYFna94j
  • Agile Methods (Scrum/FDD/XP/Crystal/DSDM) needed in #Chennai at #Accenture. Apply now! #job http://t.co/s7o7mVW8JC
  • Agile Methods (Scrum/FDD/XP/Crystal/DSDM) needed in #Chennai at #Accenture. Apply now! #job http://t.co/UWN1lqK0zg
  • ☆★☆ JOB ALERT ☆★☆ #Job #Malvern – Project Manager/Scrum Master (AGILE exp REQUIRED) view full details
  • Apply now to work for #Accenture as Agile Methods (Scrum/FDD/XP/Crystal/DSDM)! (#Chennai) #job http://t.co/kcMzdpIQTs
  • Agile Development and Scrum (@ Mood Cafe in Istanbul, Turkey) http://t.co/0YYjKee0mx
  • Bij zoeken we een Software Engineer BI – #Oracle #SQL #SCRUM #Agile
  • Categories: Blogs

    Kanban Litmus Test - Revisited

    The Kanban Litmus Test is our new guidance to help you assess "are we doing Kanban or not?" and to evaluate whether other who claim to be doing have actually reached a stage that would reflect the sort of impact that we saw in early implementations almost a decade ago.

    read more

    Categories: Companies

    Enterprise Kanban: Where to Start?

    For a corporation setting out on a large scale Kanban implementation, there is the inevitable question of, where to start? Typically, clients want to run a pilot on a single service delivery workflow but which one to choose? Firstly, we must find a service delivery workflow that is appropriate for a kanban system. [See the first post in this series on appropriateness of kanban systems]. To do this, we might view the organization through The Kanban Lens in order to identify suitable services. Secondly, we must assess whether this service is a good choice for a place to start Kanban.

    read more

    Categories: Companies

    Kanban: When is it appropriate? (part 1)

    In the Kanban Coaching Professional Masterclass, I teach coaches and those leading Kanban initiatives how to assess the appropriateness of the Kanban Method and the appropriateness of applying a kanban system within an organization. This is the first of a series of blog posts on appropriateness and getting started with an enterprise scale Kanban initiative.

    read more

    Categories: Companies

    Keeping It In the Family

    Agile Tools - Fri, 10/17/2014 - 06:47

    art-child-family-2194-366x550

    I was asked the other day, “Do you use Scrum at home?” It’s not the first time that I’ve been asked this question. The honest answer is: no. Oh, I’ve used bits and pieces here and there. I’ve put together a taskboard to track work on the occasional big household project. I’ve even built a backlog from time to time. But that is about the extent of it. I’ve been married for nearly twenty years – I’m not about to screw it up with Scrum or any other method for that matter.

    You won’t find me standing around with the kids doing a daily standup. There is no weekly planning meeting on my family calendar. And the only retrospective that I do is after getting caught leaving the toilet seat up (“Doh!”). Nope, I’ve got to be honest, my household isn’t very agile.

    You might ask, “Why not?”

    Dang, that’s a really good question. I’m not sure that I have a good answer. Maybe I just want to leave all that stuff at work. But if that were the case, then why do I go home and write this blog? No, that’s not it. Maybe there really has been no structure modelled in my family life before. In fact, the very idea of doing that kind of “work” at home makes me cringe a little bit. I guess I feel like we have things under control. Maybe I don’t even want that control. It’s really hard to say.

    I think there is value in sharing the practical time management techniques that I use at work with my kids. I didn’t hesitate to introduce them to pomodoros when my daughter was struggling to stay focused on her homework. It felt really good to be able to introduce her to a tool that would help her be successful. She loves pomodoros! The kids like all the fooling around that I do with self-experiments around the house (“Hey! Look at Daddy!”). They always want to know what kind of nutty thing Dad is doing this week.

    However, I’ve never felt a compelling need to have any kind of formal family meeting at all. Call me a bit waterfall. I guess when it comes to my family I only want to give them the techniques that they need for the problems they have. I don’t want to burden them with a framework. Got a problem with focus? Use pomodoros. Does the problem seem too large? Break it down into stories. No progress? Try iterating.

    When I can provide a helpful technique that solves their problems (agile or not), I feel like Superman. Seriously folks, there is no better feeling in the world. There is no preaching. I don’t lecture them on the perils of waterfall. To my kids a waterfall is something you ride a log down at Disneyland. I aim to keep it that way as long as possible.

    I guess, in retrospect it’s not such a bad approach for introducing agile practices for anyone, regardless of whether they are in your family or not. In fact, why would you treat a team any differently than your family? Aren’t they just that – your extended family? Can we use this to inform how we approach introducing Agile Practices to our teams?

    Maybe we just introduce them to the tools they need to solve the problem that they have in the moment. Perhaps that’s how we start. That’s how we demonstrate value and earn trust. Not by dumping some framework they must comply with on their heads.

    Hmmm….I think I’ve been doing it wrong.

    Introduce agile practices to your team like you would to your family. Give them only what they need and let them figure out the rest.


    Filed under: Agile, Coaching, Teams Tagged: Agile, family, practices, Scrum
    Categories: Blogs

    Knowledge Sharing


    SpiraTeam is a agile application lifecycle management (ALM) system designed specifically for methodologies such as scrum, XP and Kanban.