What does Agile mean after all?

As you might already know, I work for JustEat, we are a start-up, a very big one, but still a start-up, I work on the Technology Department, I’m a team leader (I try to do my best at being one) and we have many many open positions.

Recently we had a few good developers coming in for an interview, and they all seem quite surprised that we do not adhere to any specific agile methodology.

We do not do SCRUM, we do not do KANBAN, we do not do regular stand-up.
We believe we are better than that. We are Agile to the extreme.

We use a mix of those methodologies, we use HipChat  and public rooms for all our conversations so that everyone can just jump into another team room, ask question or just keep an eye on what people are doing, we use JIRA to keep our workflow public within our company, everyone can go and have a look at each team board, and see what they are working on and what it’s coming up next in their list. imageimage

We also have a weekly report  that goes out every week to everyone and explain what the Tech department has been working on.

We love technology, we live with technology and use a lot of different technologies, we use a Microsoft stack (MVC/.NET/C#/SQL Server) on Amazon AWS, we use Java and DynamoDB for our Search Engine and Hadoop processing, we use Ruby for test and automation, we use Powershell for some throw away scripting, we use Coffeescript/CouchDB for our EPOS system, we use a ton of open source frameworks.

But, (there is always a but) we are also very business oriented, we do not use all those different technologies just because we like them, we do so because we believe that it’s always better to use the right tool for the job.

If you want to know more about our iper agile way of working, do not hesitate to reply to this post.



How to convert all your podcast for your ipod in a single click #2

Here I have an improved version of the previous script.

This version does not create a bat file but run the encoding directly, verify if the file has already been encoded, and if the file was processed completely ($inmedia.Properties.Duration.Minutes -ne $outmedia.Properties.Duration.Minutes)

What do you need:

This script should also set the metatag for the mp4 files but it does not work, I need to spend some time and investigate this problem

begin convert.ps1


[Reflection.Assembly]::LoadFrom( (Resolve-Path “.taglib-sharp.dll”) )
$folders = get-childitem
Get-ChildItem $folders | Foreach {
if($_.Extension -eq ‘.mp4’ -or $_.Extension -eq ‘.wmv’ )
$in     = New-Object system.IO.FileInfo $_.fullname.ToString()
$indir  =  $in.Directory
$out    = New-Object system.IO.FileInfo $_.fullname.Replace(‘Podcasts’, ‘PodcastsEncoded’).Replace(‘.wmv’, ‘.mp4’)
$outdir = $out.Directory
$in        = New-Object system.IO.FileInfo $_.fullname.ToString()

.HandBrakeCLI.exe –input $in.fullname –output $out.fullname –preset=”iPod”
} else {
trap [Exception] {
.HandBrakeCLI.exe –input $in.fullname –output $out.fullname –preset=”iPod”
$inmedia = [TagLib.File]::Create($in.fullname)
$outmedia = [TagLib.File]::Create($out.fullname)
if($inmedia.Properties.Duration.Minutes -ne $outmedia.Properties.Duration.Minutes)
.HandBrakeCLI.exe –input $in.fullname –output $out.fullname –preset=”iPod”
$media = [TagLib.File]::Create($out.fullname)
$media.Tag.Title = $in.fullname.Replace($indir.fullname+””, “”);
$media.Tag.Album = $outdir.Name;


How to convert all your podcast for your ipod in a single click

I was looking at DropFolders (http://inflagrantedelicto.memoryspiral.com/2010/06/now-available-air-2-0-handbrake-preset-manager-dropfolders/) to convert all my podcasts. The software is cool but does not work with subfolders, so I came up the the simplest alternative possible. a powershell script.

Given the folder with your podcasts are in is c:users{username}podcasts, copy the file HandBrakeCLI.exe and libgcc_s_sjlj-1.dll in that folder (download the files from http://handbrake.fr/downloads2.php).

Then create a new powershell script as follow

$folders = get-childitem
#%{“from folder $folders”}
Get-ChildItem $folders  | Foreach {

if($_.Extension -eq ‘.mp4’ -or $_.Extension -eq ‘.wmv’ )
$input = New-Object system.IO.FileInfo $_.fullname
$inputdir =  $input.Directory
$output = New-Object system.IO.FileInfo $_.fullname.Replace(‘Podcasts’, ‘PodcastsEncoded’).Replace(‘.wmv’, ‘.mp4’)
$outputdir = $output.Directory
$root = $inputdir.Parent
%{“cd “”{0}””” -f $root.fullname}
%{“HandBrakeCLI.exe –input “”{0}”” –output “”{1}”” –preset=””iPod””” -f $_.fullname, $output.fullname}
} | out-File -filePath “convert.bat” -encoding “UTF8”


and save it as convert.ps1

once you run the powershell script, it will create all the folders in c:users{username}PodcastsEncoded and a new convert.bat in the podcast folder. This is a necessary step to make handbrake work. it will crash if the destination folder does not exist and I want to preserve the folder structure.

You can the then run that bat file, and all your files will be automatically converted to a version that works on your ipod.
The important bits of the script are in bold; the first one(PodcastsEncoded ) is the folder where your files will be created, the second one (preset) is the type of conversion handbrake will use to convert your files. There are many others you can use, see https://trac.handbrake.fr/wiki/BuiltInPresets

The powershell script check if the file has already been converted (if it exist on the destination folder) and will skip it if it has already been.

This does not work if the file has been partially converted, but there’s not much I can do to avoid this or to verify if the file has totally been converted.




at the bottom of the powershell script. it will run automatically the bat file.