Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
malcomio committed May 19, 2024
1 parent 76ab4c1 commit 15e94f4
Show file tree
Hide file tree
Showing 22 changed files with 27 additions and 26 deletions.
6 changes: 3 additions & 3 deletions _data/authors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ gayathri_thiyagarajan:
linkedin: https://uk.linkedin.com/in/gayathri-rajan-92194330
twitter: gaythu_rajan
github: gaythu-rajan
description: "Gayathri is a Lead Software Engineeer at Capgemini"
description: "Gayathri is a Lead Software Engineer at Capgemini"
team: java
avatar: https://avatars1.githubusercontent.com/u/5452702?v=3&s=200
ex: true
Expand Down Expand Up @@ -415,7 +415,7 @@ jatwal:
simon_conway:
name: Simon Conway
github: simonconway1979
description: "Simon is a React and Javascript Developer at Capgemini. His focus is creating engaging, useful and beautiful web apps and rapid prototyping."
description: "Simon is a React and JavaScript Developer at Capgemini. His focus is creating engaging, useful and beautiful web apps and rapid prototyping."
team: Front End and Mobile
linkedin: https://www.linkedin.com/in/simonconway/
avatar: https://avatars3.githubusercontent.com/u/20774841?v=3&s=460
Expand Down Expand Up @@ -590,7 +590,7 @@ lewis_vince:
team: java
shemsedin_callaki:
name: Shemsedin Callaki
gitgub: Shemsedin
github: Shemsedin
linkedin: https://www.linkedin.com/in/shemsedincallaki/
description: "Shemsedin is a senior JavaScript Engineer at Capgemini"
avatar: https://avatars.githubusercontent.com/u/4094373
Expand Down
2 changes: 1 addition & 1 deletion _posts/2014-10-21-component-based-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ The projects we work on are large and complex, with a long lifecycle, and as dev

The other interesting aspect was splitting up SASS files into components, and using [KSS](https://github.com/kss-node/kss-node/) to create the style guide - this is something I definitely intend to do on my next project.

Modularity makes sense - it's how the back-end is going, it's how Javascript is going, so why shouldn't design and CSS go the same way?
Modularity makes sense - it's how the back-end is going, it's how JavaScript is going, so why shouldn't design and CSS go the same way?


*UPDATED 3rd December 2014: Unfortunately we got Chris Ruppel's name wrong in the original version of this post, calling him "Dave Rupl". Sorry Chris.*
2 changes: 1 addition & 1 deletion _posts/2014-10-22-agile-v-lean.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Lean can also help by bringing a meeting structure to all levels and promote the

A conflict, or perhaps even a paradox, is that the customer is often the supplier too! Maybe we need to redefine this: the customer must set clear parameters for performance (the goal), then the project need to convert these into requirements themselves by consulting the stakeholders on the changes that will bring about positive impacts.

For example, an analysis I performed a while ago on a series of project releases is shown in the the charts in the image.
For example, an analysis I performed a while ago on a series of project releases is shown in the charts in the image.

![Example of a Cumulative Flow Diagram](/images/2014-10-22-agile-v-lean/CFD.png)

Expand Down
2 changes: 1 addition & 1 deletion _posts/2014-12-12-Littles-Law-and-KanBan.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ Since L is proportional to W, increasing the number in the system is a trade-off

Given that the demand is fluctuating, estimates are inaccurate at best and problems can occur any time, it is difficult to maintain a steady state. There are two ways to achieve this:
- Reduce the demand to a throughput level that will never breach _any_ step in the process.
- Increase the throughput level of _every_ step in the the system to match the maximum demand.
- Increase the throughput level of _every_ step in the system to match the maximum demand.

The first option gives the ultimate control. The process is streamlined, there is little waste in the system. The cost is that throughput is decreased.

Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-02-27-drupal-composer-symfony.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Let’s say for example, that you have a url that you want to convert from relat
What's more, if you **reuse libraries and open source** code, you'll probably find yourself in the situation in which you could need an small improvement in that nice library you are using. **Contributing your changes
back** you are closing the circle of the **open source**, the reason why the open source is here to stay and conquer the world (diabolical laugh here).

That's another one of the main reasons why lot's of projects are moving to the Composer/Symfony binomium, stop working as isolated projects and start working as global projects that can share code and knowledge between many other projects. It's a pattern followed by Drupal, to name but one, and also by projects like like [phpBB](https://www.phpbb.com/), [ezPublish](http://ez.no/), [Laravel](http://symfony.com/projects/laravel), [Magento](http://magento.com/),[Piwik](http://piwik.org/), ...
That's another one of the main reasons why lot's of projects are moving to the Composer/Symfony binomium, stop working as isolated projects and start working as global projects that can share code and knowledge between many other projects. It's a pattern followed by Drupal, to name but one, and also by projects like [phpBB](https://www.phpbb.com/), [ezPublish](http://ez.no/), [Laravel](http://symfony.com/projects/laravel), [Magento](http://magento.com/),[Piwik](http://piwik.org/), ...

## Composer and friends

Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-05-15-drupal-integration-patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ request, then you can pretty much find a way to do it in Drupal.

> "Just because you can, doesn't mean you should."
However, the old adage is true. Just because you can use use a sledgehammer to
However, the old adage is true. Just because you can use a sledgehammer to
crack a nut, that doesn't mean you're going to get the optimal nut-consumption-experience
at the end of it.

Expand Down
2 changes: 1 addition & 1 deletion _posts/2016-02-05-women-in-tech-conf.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Lan O’Conner, Corporate Vice President here at Capgemini, delivered one of the
![Lan O’Conner]({{site.baseurl}}/images/2016-02-05-women-in-tech-conf/wintech_lan_oconner.png){: .centered }

### There is no better time to be a woman in tech
Being a woman working in or interested in technology is a great place to be – you are in demand. Or as Lan O’Conner puts it ‘You are hot! You’re in a great position, with great choices that are yours.’ We heard how females have a significantly higher chance of being being interviewed and hired than men as companies are desperate to hire women. As Charlotte Briscall, head of digital experience at Sainsbury’s, explained ‘hiring more women in senior roles makes companies better as a whole, as women bring a different prospective’.
Being a woman working in or interested in technology is a great place to be – you are in demand. Or as Lan O’Conner puts it ‘You are hot! You’re in a great position, with great choices that are yours.’ We heard how females have a significantly higher chance of being interviewed and hired than men as companies are desperate to hire women. As Charlotte Briscall, head of digital experience at Sainsbury’s, explained ‘hiring more women in senior roles makes companies better as a whole, as women bring a different prospective’.
The challenge for tech companies today is how best to support and encourage women entering or already in the field into senior leadership positions. During the all women panel discussion ‘Women in technology leadership’ where we heard from a Thoughtworks Lead consultant, a Goldman Sachs VP, a findmypast.com CEO, a Barclays Director and a BSC Fellow they gave a few words of advice:

1. Consciously think about your transferable and technical skills – they can open doors. It is what can evaluate you quickly.
Expand Down
2 changes: 1 addition & 1 deletion _posts/2016-07-22-unit-tests-as-documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ However, I promptly realised this was deprecated because of IntelliJ's strikethr

MultipartEntityBuilder multipartEntityBuilder = new MultipartEntityBuilder();

A compile error and a check of the source for `MultipartEntityBuilder` informs me that that constructor is private, however, I can also see a static create method. So I use that and everything compiles nicely. Then I wonder if I need to add the Content-Type header and how can I get a hold of the boundary it generates randomly? Again, I go to the source of `MultipartEntityBuilder` and see that it builds the entity with a boundary and the correct Content-Type as part of the object so I can assume Camel uses that and sure enough it all works fine.
A compile error and a check of the source for `MultipartEntityBuilder` informs me that the constructor is private, however, I can also see a static create method. So I use that and everything compiles nicely. Then I wonder if I need to add the Content-Type header and how can I get a hold of the boundary it generates randomly? Again, I go to the source of `MultipartEntityBuilder` and see that it builds the entity with a boundary and the correct Content-Type as part of the object so I can assume Camel uses that and sure enough it all works fine.

Looking at the source saved me looking for the documentation and how to use it. It also prevented me from writing unnecessary code like adding the Content-Type with my own hand-generated boundary and setting that on both the MultipartEntityBuilder and the Camel exchange.

Expand Down
2 changes: 1 addition & 1 deletion _posts/2016-09-30-aws-elastic-beanstalk.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ When I first looked at using AWS I did so because I wanted to see what their eco

Initially I was worried: I read blog posts about setting up EC2 containers, provisioning it to run Docker, creating security groups and other very low level stuff I didn't want to stray into. I wanted to keep away from the infrastructure and stick to the abstractions of using a PaaS, after all, it was only a short project - I didn't want to spend my time setting up security groups. I wondered whether AWS was only "Infrastructure as a Service" but then I found [Elastic Beanstalk (EB)](https://aws.amazon.com/elasticbeanstalk/) and the infrastructure abstractions I had been hoping for.

EB gives you a choice of applications to run: Docker (single or multi-container), PHP, Python, Node.js, Ruby, Tomcat and others. It only takes 2/3 pages of options and configuration to have a whole environment set up and ready to be deployed to. As part of the set up Elastic Beanstalk creates an AWS virtual machine, called an EC2 node, for your docker or other type of application to run on. Then, it provides a URL to access your application and creates an S3 bucket where your code is uploaded. It also has has an excellent [command line client](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html) which was not too hard to set up with a secret key. To start using my newly provisioned multi-container Docker environment I had to transform my `docker-compose.yaml` into a `Dockerrun.aws.json` file. This wasn't hard either but the inevitable debugging that came after took a long time.
EB gives you a choice of applications to run: Docker (single or multi-container), PHP, Python, Node.js, Ruby, Tomcat and others. It only takes 2/3 pages of options and configuration to have a whole environment set up and ready to be deployed to. As part of the set up Elastic Beanstalk creates an AWS virtual machine, called an EC2 node, for your docker or other type of application to run on. Then, it provides a URL to access your application and creates an S3 bucket where your code is uploaded. It also has an excellent [command line client](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html) which was not too hard to set up with a secret key. To start using my newly provisioned multi-container Docker environment I had to transform my `docker-compose.yaml` into a `Dockerrun.aws.json` file. This wasn't hard either but the inevitable debugging that came after took a long time.

Understanding what went wrong in a deployment was probably the hardest and most time consuming aspect of getting set up. There are a lot of logs and a lot of log files and so the first problem is finding what logs are relevant. I mostly spent my time logged into my EC2 instance via SSH and in the container logs `/var/log/docker` where each container logs out to a file based on its container ID.

Expand Down
2 changes: 1 addition & 1 deletion _posts/2016-10-21-d8config-fun.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ ansible provisioner: * The following settings shouldn't exist: galaxy_role_file

In this section of the tutorial we're going to start building our prototype. The brief is:

> The site is a portfolio site for for a large multinational corporation's internal use. But hopefully the content architecture is simple enough to keep in your head. The following node types need to be set up: _Case study_, _Client_, _Team member_ (the subject matter expert), and _Technologies_ used. Set up a vocabulary called _Country_ for countries served and a second to called _Sector_ classify the information which will contain tags such as _Government_, _Music industry_, _Manufacturing_, _Professional services_, etc. Delete the existing default content types. You can then delete fields you know you won't need to avoid confusion - _Comments_ for example - which will then allow you to uninstall the comment module. And, as you might deduce by the modules I've selected, it's to be a multilingual site.
> The site is a portfolio site for a large multinational corporation's internal use. But hopefully the content architecture is simple enough to keep in your head. The following node types need to be set up: _Case study_, _Client_, _Team member_ (the subject matter expert), and _Technologies_ used. Set up a vocabulary called _Country_ for countries served and a second to called _Sector_ classify the information which will contain tags such as _Government_, _Music industry_, _Manufacturing_, _Professional services_, etc. Delete the existing default content types. You can then delete fields you know you won't need to avoid confusion - _Comments_ for example - which will then allow you to uninstall the comment module. And, as you might deduce by the modules I've selected, it's to be a multilingual site.
Hopefully this should feel comfortable enough for you, if you are familiar with Drupal site building. There are enough specifics for clarity, yet it's not too prescriptive that you feel someone is telling you how to do your job. Whereas in one context, you may hear a manager say _"don't bring me problems, bring me solutions"_, most engineers would rather say for themselves _"don't bring me solutions, bring me problems"_. I hope this brief does the latter.

Expand Down
2 changes: 1 addition & 1 deletion _posts/2017-01-31-I-Test-Robot.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Using TDD should lead to a well developed system with unit tests which are very
Often, developers jump right in and start writing code first leaving any unit tests till the end, but this can be counterproductive and could waste more time than is often thought is being saved by not following a test first approach, or any approach at all for that matter.

Some experienced developers choose not to use TDD and instead and prefer to approach the design of the system using [Domain Driven Design](http://ryantablada.com/post/we-are-complicating-things-a-bit-too-much-(tdd-and-ddd)). DDD is the process of being informed about the Domain before each cycle of writing any code! Behaviour Driven Development [(BDD)](https://www.agilealliance.org/glossary/bdd/) is an implementation of TDD and uses aspects of DDD. It also lends itself to testing certain conditions for a user story or feature.
In either case, using any approach, whether structured like TDD, or nothing at all is fine and having the flexibility to choose is a good thing, so long as the reason for for doing so is clear and the objective is kept foremost in one's mind.
In either case, using any approach, whether structured like TDD, or nothing at all is fine and having the flexibility to choose is a good thing, so long as the reason for doing so is clear and the objective is kept foremost in one's mind.

## Take small steps
Knowing when to use TDD and doing it well can be a stumbling block to those not acquainted with the process initially as it takes some getting used to following the 'red, green, refactor' steps that protagonists of TDD espouse. However, after the initial hurdle and some time following these small steps, because that is the only way to approach this, the benefits are apparent to anyone that does it for the first time.
Expand Down
2 changes: 1 addition & 1 deletion _posts/2017-06-30-hacking-blockchain.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,4 @@ The Hyperledger member service was used to define users; the Node JS application

## Outcomes, Lessons Learned

We've all learned a lot on this project, and we have created some valuable reusable components. The Hyperledger / Bluemix platform is impressive, as is the ability to reproduce the environment with Vagrant and Docker for local development anywhere. We've found some (more) cool Javascript stacks and frameworks, and perfected our remote team working skills. So how did we do? The judges are apparently impressed with our entry, with the team being advised to apply for visas ready for the trip to the finals in India. Good luck everyone!
We've all learned a lot on this project, and we have created some valuable reusable components. The Hyperledger / Bluemix platform is impressive, as is the ability to reproduce the environment with Vagrant and Docker for local development anywhere. We've found some (more) cool JavaScript stacks and frameworks, and perfected our remote team working skills. So how did we do? The judges are apparently impressed with our entry, with the team being advised to apply for visas ready for the trip to the finals in India. Good luck everyone!
Loading

0 comments on commit 15e94f4

Please sign in to comment.