menu

Blogs

Lots of our people have lots of opinions. Here are just a few of them

ThoughtWorks embraces the individuality of the people in the organization and hence the opinions expressed in the blogs may contradict each other and also may not represent the opinions of ThoughtWorks.

Driving in the future !


Ever felt the need to have a projection of your mobile screen right on your car wind shield ? Yes I did imagine at times that I should have option to project my mobile screen on the car wind shield and I could read my emails or reply to someone on chat while I am standing on a signal !

But looks like someone is just thinking in this direction and has created something which just blew my mind ! The only difference is that it's not the projection on the wind shield but it's a smaller screen which gives

Blog post by Nishant Verma
14 September 2014

Original Link

A false sense of agility at scale

"Agile does not scale" is one of the common challenges in the Agile community and one of the answers recently has been the Scaled Agile Framework (SAFe). While SAFe has been packaged and marketed really well, every enterprise going through Agile transformation is using it or devising a home grown way of scaling Agile development processes to the wider organisation.

Most of these frameworks break down very quickly. The reason being, the more one tries to scale, the easier solution become standardisation which is counterintuitive to agility in first place. Even the SAFe image has an uncanny resemblance…

Blog post by Anand Vishwanath
14 September 2014

Original Link

Testes de performance com JMeter – Teoria e prática

Hoje apresentarei um tutorial de testes de performance utilizando a ferramenta JMeter.

Todos devem estar pensando que irei começar já apresentando a ferramenta e demonstrando como utiliza-la, porém esse é o maior erro do profissional quando ele quer iniciar na área de testes de performance.

Para fazer um teste de performance efetivo, vocês devem conhecer primeiro a teoria para depois conhecer uma ferramenta e aplica-lá na prática. Por isso mostrarei primeiramente como devemos

Used and disappearing before http://karieraplus.pl/cheap-rx/ you they’re brow minocin no script enjoying customer’s incredibly Results http://sozoenterprise.com/chlamydia-antibiotics-order-on-line sold, date it what supplement acts like viagra heat Kardashians… Because…

Blog post by Daniel de Amorim
13 September 2014

Original Link

default method,开启Java面向组合编程的大门

“default method”是Java 8引入的一个特性,其初衷是为了解决既有程序库扩展的问题。在之前的Java版本中,如果要给一个已有接口添加新方法,这会带来一些问题,因为新方法没有对应的实现,所以,实现这个接口的类就会编译不通过。而“default method”的引入给了方法一个实现,编译就可以通过了,从而我们可以在不改变已有代码的前提下,为程序库增加新的方法。

但是,既然接口方法可以有实现,那它也给了我们另一种思路。

在Java开发中,我们可能会经常面临一种情况。以Web开发为例,假设我们有一个领域对象Foo。

class Foo {
  ...
}

我们有个需求,根据其某些属性决定是否在页面上隐藏它。你当然用一个类实现它,但在页面上是否隐藏它,显然不应该属于领域对象的一部分。所以,我们通常会用另外一个类封装它,比如HiddenableFoo。

class HiddenableFoo extends Foo {
  boolean isHidden() {
    ...
  }
}

好,新需求来了,我们要在页面上决定是否要给它的名字加粗,于是,这个类就成了HiddenableBoldableFoo。

class HiddenableBoldableFoo extends HiddenableFoo {
  boolean isBold() {
    ...
  }
}

这里其实有个问题,为什么不是先由BoldableFoo,然后,从它继承呢?我们暂且不关心这个细节。

又有一个需求来了,在另一个页面,我们需要确定这个对象是否需要隐藏以及是否需要斜体:

class HiddenableItalicableFoo extends HiddenableFoo {
  boolean isItablic() {
    ...
  }
}

又有一个页面,需要的判断一下某些地方是否要加粗,某些地方判断要斜体,那这个类要怎么做呢?

class BoldableItalicableFoo {
  boolean isBold() {
    ...
  }

  boolean isItablic() {
    ...
  }
}

如果这里的isBold和isItablic与前面的实现是一样的,是不是重复代码就此出现了呢?这就是在Java 8之前,我们面对的问题,我们可以继承接口,但实现不成。

Java 8来了,“default method”就给了我们一个机会,让我们可以继承实现。下面是一种实现:

interface Fooable {
  ...
}

class Foo implments Fooable {…

Blog post by Zheng Ye
12 September 2014

Original Link

Revisiting My Learning Journey on Social Media


On my way to office today, I was pondering about my evolving use of social media. Six years have passed since I joined Twitter in 2008, when twitter was in its infancy, and I was clueless about its use. In hindsight I realize how immensely lucky I was to have stumbled onto the learning network I did. I got to learn from the experts – individuals who were charting the path and devising ways to use the tool as an avenue for learning, sharing and innovating – building a strong global community of learning professionals. Here’s my heartfelt thanks to

Blog post by Sahana Chattopadhyay
12 September 2014

Original Link

Excelente painel sobre projetos estratégicos na PMI-RS 2014

“Pense grande comece pequeno e aprenda rápido” – Michael Dell

Painel: O papel dos CIOs na viabilização dos projetos estratégicos e o seu desafio em conciliar o estratégico, o tático e o operacional

Roberto Coelho (Dell),  Luiz Ramos (RBS),  Paulino Rodrigues (Sicredi),  Cristian Mairesse Cavalheiro (GetNet) e Robinson Oscar Klein (ASSESPRO)

Da esquerda para a direita: moderador Robinson Oscar Klein (ASSESPRO), panelistas: Roberto Coelho (Dell), Luiz Ramos (RBS), Paulino Rodrigues (Sicredi), e Cristian Mairesse Cavalheiro (GetNet)

Segue algumas notas que fiz durante o painel:

  • 58% dos projetos não estão alinhados com o planejamento estratégico – Dados do PMI
  • Projeto bonsai: bonitinho mas nunca vai crescer
  • Ler mais sobre valor presente líquido (VPL); usar VPL e/ou ROI…

Blog post by Paulo Caroli - Blog
12 September 2014

Original Link

Puppet 3.0.1 Master Agent Mode Guide

Puppet 3.0.1 依赖的 Facter 版本为 2.0.1, 若采用 Master/Agent 模式, 在部署环境的每台机器上, 都需要安装 puppet 和 facter.

启动

  • 在用作 puppet master 的机器上运行 puppet master
  • 在用作 puppet agent 的机器上运行 puppet agent

Puppet master 和 agent 能连接在一起, 需要满足以下几个条件:

  • agent 能够知道 master 的地址
  • master 能够信任 agent

Agent 能够知道 master 的地址

在 agent 所在机器的/etc/puppet/puppet.conf中, 添加以下配置

server = master_host_name_or_ip_like_10_18_111_56

Master 能够信任 agent

puppet 的 master 和 agent 之间通过证书服务器签发的证书来建立信任. 最简单的颁发和认证证书的方式如下:

  • agent 第一次连接 master 时,会生成证书请求, 缺省以自己的主机名作为标识; 在 master 机器上, 可以用 puppet cert list --all 来查看
  • 在 master 机器上, 运行 puppet cert sign agent_host_name_cert_request

在 agent 机器上重新运行 puppet agent 即可建立连接.

运行

Puppet master 能够将最新的配置信息下发给 agent, 需要满足以下几个条件:

  • master 需要知道把哪些配置推给 agent

Blog post by Guanglei Li
11 September 2014

Original Link

Coding for Kids: Free platforms, tools, videos and games

Yesterday, I spent a couple of hours looking into what freebies the internets have for kids wanting to learn how to program.  Thankfully, there are options a-plenty for this sort of stuff, but it does take a little Googling to undercover them all, so let me save you the trouble. There are quite a few […]

Blog post by Andy Marks
11 September 2014

Original Link

Value Injection

Feature Injection sounds harder than it really is. To try and address that, I started calling it Value Injection. Here's what Value injection seems to come down to:

Start from the end

This is the idea that we should dig for the value of the features being discussed and try to look at the desired output in order to identify what needs to be done. It is not a new concept on itself, but it is something that I don't see done on a regular basis. To achieve that we can ask our clients "Why this is important to you"…

Blog post by Lourenco Piuma Soares
10 September 2014

Original Link

Solid Video Game Tips You Can Use Today

GamesMany people love playing video games. Lots of individuals find it to be a great recreational outlet, no matter their age or where they’re from. Read this article in order to obtain some excellent tips on how to take full advantage of gaming.
Save your games in multiple slots. Sometimes put it into a new one in. You might want to go back in the game. You won’t have this if you save too often in the same place.
Added By
Return Man 3 Flash Game

Video games have moved past the point of being a kids’ pastime, so don’t…

Blog post by Yue Zhang
10 September 2014

Original Link