Tunesat Is Hiring its IT Operations Manager
A thriving startup founded by passionate musicians, Tunesat uses its proprietary fingerprinting technology to track the use of millions of songs on over 250 major TV stations in the US and Europe, and on the Web.
Today, Tunesat is hiring its IT Operations Manager: could it be you?
What the job is about
Your primary responsibility will be to ensure continuity of operations of our platform (2 datacenters: New York and Paris), including audio fingerprinting, TV feed capture, audio processing and storage, databases and front-end (Web). As practical constrains evolve, you'll improve and adapt our internal processes and suggest necessary improvements and evolutions to our proprietary technologies.
Important: the job is to be performed in New York or Paris preferably, but if you don't live in one of those cities and don't intend to relocate there, it is possible to telecommute from anywhere in North America and Europe.
Do you fit this picture?
- You are a problem solver.
- You have a strong autonomy and sense of responsibility.
- You are obsessed with details and yet you keep the big picture in mind.
- You are flexible and able to react quickly.
- You want to own our platform as we want to own the space.
Technical requirements
- You are fluent in Linux (Ubuntu) commands and all things shell and ssh.
- You have a thorough SQL server experience, preferably PostgreSQL.
- You are experienced in Perl and shell scripting, regular expressions and data massaging.
- You have a working knowledge of common network protocols (application layer).
How do you apply?
If you're interested in joining us, please follow steps 1-3 below. These steps are designed to optimize the use of your time and ours.
Step 1: a quick compatibility evaluation
Please check all boxes that apply. This should only take a few minutes.
Have you ever:
- modified the configuration of an Apache server?
- used a key pair for SSH access?
- optimized access to an SQL database, e.g. by creating an index?
- manually executed an SQL query on a PostgreSQL server?
- used scp, rsync or ssh to copy files across the Internet?
- hard-reset a machine remotely?
- used "screen" or an equivalent program?
- written an HTML page "by hand"?
- run a shell command line containing at least one "ssh" command and one pipe ("|")?
- run a shell command line containing at least one "tar" command and one pipe ("|")?
- created a shell script containing one or several "apt-get" command(s)?
- looked at "/var/log/apache2/error.log" or equivalent?
- used "cron" or equivalent?
- written a program that sends email alerts?
- used "pssh", "parallel-ssh" or equivalent?
- used the "ftp" command in interactive mode?
- used "wget", "curl" or equivalent?
- installed a perl module on a machine?
- installed an SSD in a machine (or recommended such installation) to remove an I/O bottleneck?
- used SSH port forwarding (ssh -L or ssh -R)?
- [bonus] used an SSH client on a mobile device?
- [bonus] used "ffmpeg" or equivalent?
Step 2: can you fix my Perl?
Each of theses three Perl programs has one bug that prevents it from working as advertised. Can you find all 3 bugs (and their fixes) in less than 10 minutes? If so, move to step 3.
buggy1.pl
#!/usr/bin/perl -w
# buggy1.pl -- prints tab-delimited columns in reverse order
while(defined($_=<>)){
@cols=split /\t/;
print join("\t", reverse @cols), "\n";
}
Check solution
buggy2.pl
#!/usr/bin/perl -w
# buggy2.pl -- prints all visible TXT files in the specified directory, with a header
$dir=shift or die "usage: buggy2.pl [dir]";
opendir DIR, $dir or die;
while(defined($_=readdir DIR)){
next if /^\./;
next unless /\.txt$/i;
print "\n==== $_ ====\n\n";
open FILE, '<', $_ or die;
print $buf while read FILE, $buf, 4096;
close FILE;
}
closedir DIR;
Check solution
buggy3.pl
#!/usr/bin/perl -w
# buggy3.pl -- convert tab-delimited file to CSV
# Fields containing commas must be quoted.
# Fields containing double-quotes must be quoted,
# and double-quotes escaped as double-quote pairs.
while(defined($_=<>)){
chomp;
@cols=split /\t/;
foreach(@cols){
next unless /"|,/;
s/"/""/;
$_=qq["$_"];
}
print join(',', @cols), "\n";
}
Check solution
Step 3: a more serious test
Step 3 is a 120-minute programming test.
Please send an email to the address at the bottom of this page. Please include your resume, your public key and the exact date/time (and time-zone) when you want to start the test (please allow at least 1-2 business day(s) for your message to be received and processed). Reception of your data will be acknowledged by e-mail. At the chosen day/time, an automated process will send you the IP of the machine to connect to (by SSH and SFTP, using your key) along with detailed instructions for the test.
You will be asked to write 3 small programs in the language of your choice (preferably Perl, but you may also use Python, Ruby, Bash, C++, whatever else is installed, or any combination thereof). The expected outputs of those programs will be provided, allowing you to check your work.
120 minutes after the chosen day/time, access to the machine will be closed. Please make sure you have left your finished programs (including sources) on the machine by that time, as they will be the basis for your evaluation.
This is a speed test. Ideally, you should complete all 3 problems in the given time, but if it's not possible, complete as many problems as you can (that is, 1 working program is better than 2 unfinished programs). Style of working programs (including robustness, simplicity and readability) will also be considered.
You will not have root access on the test machine, so you won't be able to install additional software such as languages or modules. You'll be allowed to use any documentation (books, Web, etc.) at hand, however you can't get help from an actual person during the test.
After you have performed the test, please allow a few days for your work to be processed, then we'll contact you by e-mail.
Thank you for your interest and participation!
Sylvain Demongeot
CTO, Tunesat
![]()